Here are my instructions for using Alteryx to query Active Directory. We use Alteryx 2019.1 and this workflow was run against a Windows Server 2008 R2 AD instance. Your mileage may vary if your configuration is different.
Note: This is my first new thread post on the community, so please let me know if I missed something or need to make changes.
I am also working on a "group membership" workflow/macro. I hope to post those instructions in the near future.
Feel free to provide feedback (even grammar!).
Thank you.
How to add an Active Directory lookup to your Alteryx workflow
Note: Please use a local domain control for best performance. To see the local Windows PC’s currently connected domain controller, open Command Prompt (CMD.exe) and type SET. The information will be under the LOGONSERVER value. Be sure to add your domain name to the end if SET is used to find the domain controller.
Note: If you close this window, you will have to restart from step 3.
For more attributes, check with your Active Directory Administrator or the Internet.
SELECT (add desired attributes separated by a comma here)
from 'LDAP://(Active Directory Server)’
where (desired attribute search) = ‘test’
Note: The search criteria is ‘test’ because the Dynamic Input tool will replace ‘test’ with the actual results from a preceding tool in the workflow.
Here is an example where name, userid, and email would be returned from a local Active Directory Server with a search based on userid:
SELECT cn, samaccountname, mail from 'LDAP://ADServer.domain.com’
WHERE samaccountname = 'test'
Here is a second example where name, title, supervisor name, supervisor userID, job hierarchy info, employee type, and office city would be returned from a local Active Directory Server with a search based on email address:
SELECT cn, title, ReportsToName, SupvID, division, employeeType, location from 'LDAP://ADServer.domain.com’ WHERE mail = 'test'
Note: In this example, the mail attribute is being used for the search and so the email_address field from a previous tool in the workflow will be used to populate the search.
Additional information:
To modify your SQL query after completing step 19, follow the steps below:
I. Select the Dynamic Input tool then click Edit in the Input Data Source Template section
II. Click the … under option 4 in the Alteryx Designer x64
III. An error message like the one below will appear. Do not worry as this is normal and due to the way that Alteryx works. Click OK to close the Parsing Error
IV. Follow steps 10 through 16 above to enter and test the updated SQL query.
V. Continue through steps 17 through 19 if the attribute used in the WHERE clause was changed.
Are you only getting yourself back? Maybe your connection is limited by who (you) makes the query request.
@ChrisTX, I had some issues when I tried to using that query as well:
I tried both DN ('LDAP://DC=domain, DC=com') and URL ('LDAP://domain.com') with the Input Data tool.
Only one record was returned and I received this error message:
Error: Input Data (2): Error ReadRecord: Interface ISupportErrorInfo not available
Based on my experience (when creating these instructions and since then), this error message was essentially a AD server timeout. I tried adjusting the timeout information in Alteryx but I would still get this message. I am not an AD admin, so I do not know if there is a process around this "timeout".
@Data_is_mymiddlename I'll look forward to your post on the Active Directory REST API.
Recently I found this AD functionality in Excel:
https://support.office.com/en-us/article/get-transform-in-excel-881c63c6-37c5-4ca2-b616-59e18d75b4de
Get & Transform in Excel
Excel for Office 365 Excel 2019 Excel 2016
To create a query in Excel, use the Data tab in the ribbon, then in the Get & Transform section, choose the drop-down for New Query, then From Other Sources > From Active Directory.
Enter your Domain name. In the Navigator window, expand the tree and use the object for "user". Then click the Load button at the bottom right.
I got back over 10,000 records in less than 5 seconds.
Wish I could figure out how to expose this same data to Alteryx.
I haven't tested this (we are on Office 2013 32-bit arghh).
But if Excel can connect, so should Access. If Access can connect, it can act like a live connection intermediary between Alteryx and AD. We use this approach with Tableau-to-Access-to-X to bypass connectivity issues.
Thanks for sharing !!
It is very useful.
Is it possible to use wildcard in the where cause of the query ?
What is the syntax ?
Best Regards,
Samuel
@Samuel_To , I was never able to successfully use wildcards as they typically brought back too much information and my connection would fail in what seemed like a timeout.
About a month after my post last year, I started to really test out using the AD Web Services (https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/dd...) instead. This method was much more robust and had no issues with wildcards (one of the primary issues I experienced). As a result, I stopped working on the method in this post and worked on the ADWS version instead. It took a while but I was finally able to make it work by leveraging the download tool and some macro nesting to hide a batch macro so that the end user only had a single input. There was also lots of trial and error with Postman. 🙂
I hope to some day create a post for that version... maybe I'll find some time in Q4 of 2020.
Thank you.
Thanks for replying me.
For my case, i got no records when I try to use wildcard to search the AD groups. (Run completely with no Error)
memberof = 'CN=*Admin'
Not sure the syntax is correct or not.
Best Regards,
Samuel
It gives me error when i try to get "memberOf". Any help is appreciated.
SELECT memberOf From 'LDAP://OU=,DC=' WHERE cn='Person'
Thank you so much for your post. I was wondering if you could help me understand one of the steps, #18.
I have managed to finally get the correct syntax and valid attributes into the SQL Query to test successfully. However, I do not get a field listed in the replacement field for the updating of the WHERE clause.
What does the latter portion of your post for #18 mean, "confirm that the Dynamic Input tool is connected to the appropriate previous tool which has the desired replacement field". I don't have another previous tool on the workflow yet. I am attempting to pull Active Directory data down with this tool and others connecting to other domains, then do analysis on that data.
Do I have to have a previous tool/dataset available to update from in order to use the Dynamic Input Tool?
The "Error: Interface ISupportErrorInfo not available in query" error that I kept getting was driving me mad. I thought maybe it was an incompatibility of our AD environment. However, I eventually worked around it, by first connecting with a freeware tool called Softerra, and dumping a list of all of my attributes. Then going through the list and removing any attributes I was trying to pull (via lists found across the webz on available AD attributes). Eventually, after the arduous task of splicing out half of my query - and adding a few new fields, I finally stopped getting the error messages.
The TLDR here is that maybe the expected AD attributes don't actually exist in your company's environment, and it helps to have a list of what does when writing the query, else the OLE component just gives back otherwise erroneous messages that are of little help.
Now, to just figure out how to close the deal and get the updated where clause piece figured out...