Search code examples
active-directoryaxaptadynamics-ax-2009x++

Is it possible to read AD users from AX 2009?


How can i read AD users from AX 2009? Also what are the security issues for this?


Solution

  • I just posted an old Job on my blog to access AD users from X++, here is the code:

    static void JAEE_IterateActiveDirectoryUsers(Args _args)
    {
        str                 computer = new xSession().clientComputerName();
        xAxaptaUserManager  mgr = new xAxaptaUserManager();
        xAxaptaUserDetails  usr;
        container           doms;
        int                 d, u;
        str                 dom, login, name, sid, email;
        ;
    
        // iterate AD domains
        doms = mgr.enumerateDomains(computer);
        for (d = 1; d <= conlen(doms); d++) 
        {
            dom = conpeek(doms, d);
            setprefix(dom);
    
            // iterate AD domain users
            usr = mgr.enumerateDomainUsers(dom);
            for (u = 0; u < usr.getUserCount(); u++) 
            {
                if (usr.isUserEnabled(u) && !usr.isUserExternal(u))
                {
                    // get information from AD
                    login = usr.getUserLogin(u);
                    name = usr.getUserName(u);
                    sid = usr.getUserSid(u);
                    email = usr.getUserMail(u);
    
                    // stuff happens here, you can compare AD data with AX User info
    
                    info(strfmt("%1 - %2 - %3 - %4 - %5", dom, login, name, email, sid));
                }
            }
        }
    }