dynamics-onprem

n8n node for Microsoft Dynamics 365 / Dynamics CRM on-premises Web API with Windows (NTLM) authentication

Package Information

Released: this month
Downloads: 0 weekly / 0 monthly
Latest Version: 0.2.0
Author: Martin Grohmann

Documentation

n8n-nodes-dynamics-onprem

An n8n community node for Microsoft Dynamics 365 / Dynamics CRM on-premises (8.x and 9.x)
that talks to the Web API with Windows (NTLM) authentication. The built-in HTTP Request node cannot do NTLM, and
n8n's Dynamics nodes only support Dynamics 365 online.

Installation

In n8n: Settings → Community Nodes → Install, package name n8n-nodes-dynamics-onprem.
See the n8n documentation for details.

Credential: Dynamics On-Premises (NTLM) API

Field Example
Organization URL https://crm.example.com/OrgName
API Path /api/data/v8.2
Domain CONTOSO (or leave empty and enter the username as CONTOSO\user)
Username / Password a dedicated CRM user for n8n
Ignore SSL Issues only for test systems with self-signed certificates

The credential test calls WhoAmI().

Operations

Operation Web API call
Get GET <entityset>(<id>) with $select, $expand
Get Many GET <entityset> with $select, $filter, $orderby, $expand, follows @odata.nextLink
Run FetchXML GET <entityset>?fetchXml=…
Create POST <entityset>, returns the new ID (or the record with Return Record)
Update PATCH <entityset>(<id>), by default with If-Match: * so an update never creates a record
Call Function GET <function>, e.g. WhoAmI() or RetrieveVersion()
Execute Action POST <action>, e.g. lists(<id>)/Microsoft.Dynamics.CRM.AddMemberList with {"EntityId": …}
Associate POST <entityset>(<id>)/<relationship>/$ref

Optional: formatted values (option set labels, lookup names) and suppression of duplicate detection.
Delete and disassociate are intentionally not offered. Actions run with the rights of the CRM user, so keep its security role narrow. Lookups are set with "attribute@odata.bind": "/entityset(<id>)" using the
navigation property name of the lookup.

Notes

  • Each execution uses its own keep-alive connection, because the NTLM handshake is bound to a TCP connection.
  • Grant the CRM user only the privileges your workflows need.
  • NTLM is implemented with axios-ntlm (NTLMv2).

Development

npm install
npm run build
node test/logik.js          # node logic against a local mock of the Web API

test/verbindung.js checks a real connection with credentials taken from DYNAMICS_RESOURCE_URL,
DYNAMICS_API_PATH, DYNAMICS_USERNAME, DYNAMICS_PASSWORD (and optional DYNAMICS_DOMAIN).

License

MIT

Discussion