Hi, I’m new to n8n. I need to connect to an on-premise Dynamics 365 CRM instance. Any helps guys?
Welcome to n8n! Connecting to on-premise Dynamics 365 is definitely possible with self-hosted n8n.
Here’s what you need:
1. Network connectivity
Your self-hosted n8n server needs to reach your on-premise Dynamics 365 server. Make sure they’re on the same network or you have proper routing/VPN setup.
2. Use the Microsoft Dynamics CRM node
In n8n, search for “Microsoft Dynamics CRM” node. When setting up credentials:
- Base URL: Use your on-premise URL (e.g.,
http://yourserver/YourOrgName) - Authentication: Windows Authentication with your domain credentials
3. For on-premise Dynamics, authentication is different
Unlike Dynamics 365 Online (which uses OAuth), on-premise uses network credentials (username/password/domain).
Microsoft’s official docs on on-premise authentication: Authenticate to Dynamics 365 Customer Engagement with the Web API (Developer Guide for Dynamics 365 Customer Engagement) | Microsoft Learn
Alternatively, you can use the HTTP Request node with:
- Method: GET/POST (depending on operation)
- URL:
http://yourserver/YourOrgName/api/data/v9.0/... - Authentication: Basic Auth or NTLM
I’ve set up similar integrations for on-premise CRM systems. The key is making sure network connectivity is solid first.
What type of operations are you planning to automate?
Hi! Thanks for sharing that, it really helped.
I tried using the HTTP Request node with Basic Auth, but I’m getting an error. Does this mean I need to install NTLM? If so, is there any alternative solution that works without installing NTLM?
401 - “HTTP Error 401 - Unauthorized: Access is denied\r\n”
{ "headers": { "accept": "application/json,text/html,application/xhtml+xml,application/xml,text/*;q=0.9, image/*;q=0.8, */*;q=0.7" }, "method": "GET", "uri": "xx", "gzip": true, "rejectUnauthorized": true, "followRedirect": true, "resolveWithFullResponse": true, "followAllRedirects": true, "timeout": 300000, "encoding": null, "json": false, "useStream": true, "auth": { "user": "xx", "pass": "**hidden**" } }
I am planning to automate some data processing in dynamics for fine-tuning purposes. @hoiyothaheem