I created a class that brings users by AD GROUP.
I made it using standard class and source.
This class works well in a cloud environment. (Azure Active Directory & Group)
But, not work in the on-premise environment. (Active Directory & Group)
In an on-premise environment, please let me know how to find AD Group by user email. (x++ code)
my class
// get user list
var directoryClient = SysUserMSODSImportHelper::getActiveDirectoryClientWithDomain(TrustedDomainsControl.text());
try
{
if (!displayNameText && !aliasNameText && !firstNameText && !lastNameText && !titleText && !companyText && !departmentText)
{
directoryUsersEnumerator = directoryClient.ListUsers().GetEnumerator();
}
else
{
directoryUsersEnumerator = directoryClient.ListUsersWithFilter(displayNameText, aliasNameText, firstNameText, lastNameText, titleText, companyText, departmentText).GetEnumerator();
}
}
.
.
while(directoryUsersEnumerator.MoveNext())
{
user = directoryUsersEnumerator.Current;
existsSecurityGr = false;
SysUserMSODSUserTmp tmp;
if (!isGraphAPI)
{
// skip importing the user does not have UserPrincipalName.
if (strLen(user.UserPrincipalName) == 0)
{
continue;
}
}
if (strScan(user.UserPrincipalName, '#EXT#', 1, strLen(user.UserPrincipalName)) == 0)
{
tmp.NetworkAlias = user.UserPrincipalName;
tmp.NetworkDomain = Microsoft.Dynamics.ApplicationPlatform.Environment.EnvironmentFactory::GetApplicationEnvironment().get_Provisioning().get_AdminIdentityProvider();
}
----------------------------------------------------------------------
// get Group
SysActiveDirectoryGroupTmp _groupTmp;
Microsoft.Dynamics.AX.Security.DirectoryHelper.Group adgroup;
System.Collections.IEnumerator ListSecurityGroup;
ListSecurityGroup = directoryClient_SecurityGr.ListSecurityGroups().GetEnumerator();
Info("s39");
while ( ListSecurityGroup.MoveNext() )
{
adgroup = ListSecurityGroup.Current;
Info("s40");
_groupTmp.Name = adgroup.DisplayName; // Users
_groupTmp.ObjectId = adgroup.ObjectID.ToString(); // 23b77b7d-f25c-4ccb-88c5-a30a1ad393a5
warning(strFmt("adgroup : %1, %2, %3, %4", tmp.NetworkAlias, _groupTmp.AxUserID, _groupTmp.Name, _groupTmp.ObjectId));
_groupTmp.insert();
}