For the complete documentation index, see llms.txt. This page is also available as Markdown.

Dynamics 365 Finance & Operations

Discover more about the Dynamics 365 Finance & Operations connector and how to use it on the Digibee Integration Platform.

The Dynamics 365 Finance & Operations connector enables integrations with Microsoft Dynamics 365 Finance & Operations (F&O), also known as Finance and Supply Chain Management.

It reads and writes the app's public OData data entities, such as CustomersV3, VendorsV2, SalesOrderHeadersV2, and ReleasedProductsV2. Supported operations include CRUD, query options, bound and unbound actions and functions, cross-company access, and $batch.

It's a specialization of the generic OData integration, using the /data service root, composite dataAreaId keys, and Azure AD (Azure Key) authentication. Entities are discovered automatically from the environment's $metadata, and cross-company access is supported.

Which Dynamics connector should I use?

Use Dynamics 365 Finance & Operations for Finance and Supply Chain (*.operations.dynamics.com, /data entities). Use Dynamics 365 for Customer Engagement, Dataverse, and CRM (*.crm.dynamics.com, /api/data/v9.x). Use the generic OData connector for any other OData service.

Set up authentication (Azure AD)

The connector authenticates as an Azure AD service principal (OAuth 2.0 client credentials). You set this up once. Below are the steps relevant to Digibee. For the exact portal clicks, follow the linked Microsoft docs, since their UI changes over time.

  1. Register an app in Microsoft Entra ID. In the Entra admin center, go to App registrations, then New registration. Copy the Application (client) ID and the Directory (tenant) ID. See Register an application for the full procedure.

  2. Create a client secret. Go to Certificates & secrets, then Client secrets, then New client secret. Copy the secret value right away, it's shown only once. See Add and manage app credentials for the full procedure.

  3. Grant the app access inside Finance & Operations. In the F&O app, go to System administration, then Setup, then Microsoft Entra ID applications. Add a row with the app's Client ID, a name, and a User ID mapped to a user whose security role grants access to the entities you'll use.

  1. Create the Digibee Azure Key account using the values from steps 1 and 2:

Azure Key account field
Value

Client ID

Application (client) ID (step 1)

Client Secret

The secret value (step 2)

Tenant ID

Directory (tenant) ID (step 1)

The connector requests the token for scope https://{your-env}.operations.dynamics.com/.default. Only override it with OAuth Scope if your resource differs. See Accounts.

Client secrets expire. Microsoft caps them at 24 months and recommends less. Rotate the secret and update the Azure Key account before it expires, or discovery and requests will start failing with auth errors.

You'll also need the environment URL, for example https://myenv.operations.dynamics.com.

Concepts

The terms below appear throughout the connector's parameters, so it helps to understand them before configuring a request. Each concept maps to a specific field you'll fill in later.

Term
Meaning

Data entity

The OData collection you're working with, for example CustomersV3. Path: /data/CustomersV3.

Composite key

F&O keys are usually composite and include dataAreaId (the legal entity, or company), for example dataAreaId='usmf',CustomerAccount='US-001'.

Cross-company

By default, a query returns only the user's default company. Enable Cross-company to span all legal entities (cross-company=true).

$metadata

F&O exposes entity and field metadata at /data/$metadata. The connector uses it to power the guided Entity Set picker and field editor.

Parameters

The table below lists all configuration parameters for the connector. Parameters that support Double Braces expressions are marked with ✅ in the Supports DB column.

Parameter
Description
Type
Supports DB
Default

Alias

A name for this connector's output, so you can reference it later in the flow with Double Braces.

String

dynamics-finops-01

Fail On Client Error (4xx)

Interrupt the pipeline on a 4xx response.

Boolean

false

Fail On Server Error (5xx)

Interrupt the pipeline on a 5xx response.

Boolean

false

Parameter
Description
Type
Supports DB
Default
Visible when

Environment URL

Finance & Operations environment root URL.

String

https://myenv.operations.dynamics.com

Use Dynamic Account

If enabled, the connector resolves the account at runtime. If disabled, it uses the account configured statically below.

Boolean

false

Use Dynamic Account is enabled

Scoped

If enabled, isolates the stored account from other sub-processes. Not available for accounts referenced in headers or in the request body. To learn more, read the Dynamic Accounts documentation.

Boolean

false

Use Dynamic Account is enabled

Account Name

Name of the account defined in the Store Account connector.

String

N/A

Use Dynamic Account is disabled

Account

Account containing the Azure AD credentials (client ID, secret, and tenant). Supported type: Azure Key. Learn more about Accounts.

Account

N/A

Authentication uses the OAuth 2.0 client-credentials flow with Azure AD (Microsoft Entra ID) and injects the resulting token as a Bearer header. The token is cached per combination of client, tenant, and scope.

OData v4 is used and fixed for Finance & Operations.

Operation parameter

Parameter
Description
Type
Supports DB
Default

Operation

The action to perform. It shapes the request. See the supported operations below.

Select

Query

Supported operations

The Operation parameter maps to an OData request under the /data service root:

Operation
HTTP
Path
Body
Notes

Batch

POST

/data/$batch

multipart/JSON

Batches multiple operations in one request.

Create

POST

/data/{EntitySet}

JSON

Creates a record.

Custom Query

GET

/data/{EntitySet}?{$query}

Same as Query. Use it when combining raw and structured query parameters.

Delete

DELETE

/data/{EntitySet}({key})

Deletes a record.

Get by ID

GET

/data/{EntitySet}({key})

Reads a single record by key.

Invoke Action

POST

/data/{EntitySet}({key})/{Action} or /data/{Action}

JSON

Invokes a bound action (with key and entity set) or an unbound action.

Invoke Function

GET

/data/{EntitySet}({key})/{Function} or /data/{Function}

Invokes a bound or unbound function.

Query

GET

/data/{EntitySet}?{$query}

Reads the collection with query options.

Update

PATCH/PUT

/data/{EntitySet}({key})

JSON

Updates a record, partially (PATCH) or fully (PUT).

Common parameters

These parameters appear regardless of the operation selected.

Parameter
Description
Type
Supports DB
Default

Cross-company

Returns rows across all legal entities, instead of only the default company (cross-company=true).

Boolean

false

Output Format

Controls the shape of the response returned to the pipeline. Values Only unwraps and returns only the value array. Full Response returns the entire response, including @odata.* fields. Single Entity returns the first or only entity.

Select

Values Only

Headers

Additional request headers, as key/value pairs.

Key/Value

N/A

Operation-specific parameters

The remaining parameters only appear for certain operations, grouped below by purpose.

Entity Key — used by Delete, Get by ID, Invoke Action, Invoke Function, and Update.

Parameter
Description
Type
Supports DB
Default

Entity Key

Single or composite key. F&O keys are usually composite, for example dataAreaId='usmf',CustomerAccount='US-001'.

String

N/A

Action / Function Name — used by Invoke Action and Invoke Function.

Parameter
Description
Type
Supports DB
Default

Action / Function Name

OData action or function name. Bound when an Entity Set is set, unbound otherwise.

String

N/A

Body — used by Batch, Create, Invoke Action, and Update.

Parameter
Description
Type
Supports DB
Default

Body

JSON payload for Create and Update, action parameters for Invoke Action, or the $batch payload.

JSON

{}

Interactive Mode — used by Create and Update.

Parameter
Description
Type
Supports DB
Default

Interactive Mode

If enabled, the connector displays the payload fields for you to edit. Otherwise, provide a raw JSON body.

Boolean

false

Query parameters — used by Custom Query and Query.

Parameter
Description
Type
Supports DB
Default

Filter ($filter)

OData filter expression, for example CustomerGroupId eq '10'.

String

N/A

Select ($select)

Comma-separated list of fields to include in the response.

String

N/A

Order By ($orderby)

Sorts the results by one or more properties, in ascending or descending order, for example CustomerAccount asc.

String

N/A

Expand ($expand)

Related entities to include inline.

String

N/A

Top ($top)

Maximum number of records to return.

Number

N/A

Skip ($skip)

Records to skip, for pagination.

Number

N/A

Include Count ($count)

Include the total count in the response.

Boolean

false

Parameter
Description
Type
Supports DB
Default
Visible when

Request Timeout (seconds)

Maximum time for the HTTP request.

Integer

30

Custom Query String

Raw extra query parameters appended verbatim.

String

N/A

Update Method

PATCH for a partial update, or PUT for a full replacement.

Select

PATCH

Operation is Update

Parameter
Description
Data type
Supports DB
Default value

Documentation

Optional field to describe the connector configuration and any relevant business rules.

String

N/A

Examples

Query customers in one company

Resulting request:

Output (when the Output Format is set to Values Only) :

Get one record by composite key

Resulting request:

Query across all companies

Resulting request:

Known limitations

  • OData v4 only. Finance & Operations doesn't expose v2.

  • No FetchXML. That's Dataverse and CRM-only. Use the Dynamics 365 connector for that.

  • No automatic pagination. Follow @odata.nextLink yourself, or control paging manually with $top and $skip.

  • Guided entity and field discovery requires a reachable environment and a valid Azure Key account. If discovery can't reach the environment, you can still provide the Entity Set through a Double Braces expression.

  • Composite keys, @odata.bind lookups for navigation properties, and enum and option values are the most error-prone areas. Validate against the entity's $metadata.

Common errors

Status
Cause

400

Malformed composite key syntax or $filter expression.

401 / 403

The app isn't registered as an F&O Application User, is missing the required security role, or the token scope is wrong.

404

Wrong entity set name.

Enable Fail On Client Error (4xx) or Fail On Server Error (5xx) to have the connector stop the pipeline when these errors occur.

Last updated

Was this helpful?