Skip to main content

Actions

The ballerinax/microsoft.dynamics365.finance.customer package exposes the following clients:

ClientPurpose
ClientProvides full CRUD access to Microsoft Dynamics 365 Finance customers, customer groups, customer parameters, and base customer records via the Dynamics 365 Finance and Operations OData API.

Client

Provides full CRUD access to Microsoft Dynamics 365 Finance customers, customer groups, customer parameters, and base customer records via the Dynamics 365 Finance and Operations OData API.

Configuration

FieldTypeDefaultDescription
authOAuth2ClientCredentialsGrantConfigRequiredOAuth2 client credentials grant configuration used to authenticate with Microsoft Entra ID (Azure AD): tokenUrl, clientId, clientSecret, and optional scopes.
httpVersionhttp:HttpVersion2.0HTTP protocol version to use for outbound requests.
http1Settingshttp:ClientHttp1Settings{}HTTP/1.x client settings including keep-alive, chunking, and proxy configuration.
secureSockethttp:ClientSecureSocket()SSL/TLS configuration for secure connections.
proxyhttp:ProxyConfig()Proxy server configuration.

Initializing the client

import ballerinax/microsoft.dynamics365.finance.customer;

configurable string tokenUrl = ?;
configurable string clientId = ?;
configurable string clientSecret = ?;
configurable string serviceUrl = ?;

customer:Client fo = check new (
{
auth: {
tokenUrl,
clientId,
clientSecret
}
},
serviceUrl
);

Operations

Customer groups

listCustomerGroups

Reads all customer groups.

Parameters:

NameTypeRequiredDescription
headersmap<string|string[]>NoHeaders to be sent with the request.
queriesListCustomerGroupsQueriesNoOData query parameters: $skip, $top, $filter, $orderby, $expand, cross-company, $count, $select.

Returns: customer:CustomerGroupsCollection|error

Sample code:

customer:CustomerGroupsCollection groups = check fo->listCustomerGroups(
queries = {
filter: "TaxGroupId eq 'VAT-STD'",
top: 20,
'select: "CustomerGroupId,Description,PaymentTermId,TaxGroupId"
}
);
createCustomerGroups

Creates a customer group.

Parameters:

NameTypeRequiredDescription
payloadCustomerGroupYesThe customer group to create.
headersmap<string|string[]>NoHeaders to be sent with the request.

Returns: customer:CustomerGroup|error

Sample code:

customer:CustomerGroup group = check fo->createCustomerGroups({
dataAreaId: "usmf",
customerGroupId: "DOM-RETAIL",
description: "Domestic retail customers",
paymentTermId: "Net30",
taxGroupId: "VAT-STD",
customerAccountNumberSequence: "Cust_DOM",
isPublicSectorIT: "No"
});
getCustomerGroups

Reads a specific customer group by key.

Parameters:

NameTypeRequiredDescription
dataAreaIdstringYesThe company data area identifier.
customerGroupIdstringYesThe customer group id key field.
headersmap<string|string[]>NoHeaders to be sent with the request.
queriesGetCustomerGroupsQueriesNoOData query parameters: $expand, $select.

Returns: customer:CustomerGroup|error

Sample code:

customer:CustomerGroup group = check fo->getCustomerGroups("usmf", "DOM-RETAIL");
deleteCustomerGroups

Deletes a specific customer group.

Parameters:

NameTypeRequiredDescription
dataAreaIdstringYesThe company data area identifier.
customerGroupIdstringYesThe customer group id key field.
headersDeleteCustomerGroupsHeadersNoOptional ifMatch ETag header for optimistic concurrency; mapped to If-Match.

Returns: error?

Sample code:

check fo->deleteCustomerGroups(
"usmf",
"DOM-RETAIL",
headers = {ifMatch: eTag}
);
updateCustomerGroups

Updates a specific customer group.

Parameters:

NameTypeRequiredDescription
dataAreaIdstringYesThe company data area identifier.
customerGroupIdstringYesThe customer group id key field.
payloadCustomerGroupYesThe fields to update.
headersUpdateCustomerGroupsHeadersNoOptional ifMatch ETag header for optimistic concurrency; mapped to If-Match.

Returns: customer:CustomerGroup|error

Sample code:

customer:CustomerGroup updated = check fo->updateCustomerGroups(
"usmf",
"DOM-RETAIL",
{paymentTermId: "Net45"},
headers = {ifMatch: eTag}
);

Customer parameters

listCustomerParameters

Reads customer parameters for all legal entities.

Parameters:

NameTypeRequiredDescription
headersmap<string|string[]>NoHeaders to be sent with the request.
queriesListCustomerParametersQueriesNoOData query parameters: $skip, $top, $filter, $orderby, $expand, cross-company, $count, $select.

Returns: customer:CustomerParametersCollection|error

Sample code:

customer:CustomerParametersCollection parameters = check fo->listCustomerParameters(
queries = {
'select: "dataAreaId,CreditCardAuthorization,SettlementWriteOffEnabled,DefaultLanguage"
}
);
createCustomerParameters

Creates the customer parameters record for a legal entity.

Parameters:

NameTypeRequiredDescription
payloadCustomerParametersYesThe customer parameters to create.
headersmap<string|string[]>NoHeaders to be sent with the request.

Returns: customer:CustomerParameters|error

Sample code:

customer:CustomerParameters parameters = check fo->createCustomerParameters({
dataAreaId: "usmf",
creditCardAuthorization: "Yes",
settlementWriteOffEnabled: "No",
defaultLanguage: "InvoiceAccount",
creditLimitCheckType: "Balance"
});
getCustomerParameters

Reads the customer parameters for a specific legal entity.

Parameters:

NameTypeRequiredDescription
dataAreaIdstringYesThe company data area identifier.
headersmap<string|string[]>NoHeaders to be sent with the request.
queriesGetCustomerParametersQueriesNoOData query parameters: $expand, $select.

Returns: customer:CustomerParameters|error

Sample code:

customer:CustomerParameters parameters = check fo->getCustomerParameters("usmf");
deleteCustomerParameters

Deletes the customer parameters record for a specific legal entity.

Parameters:

NameTypeRequiredDescription
dataAreaIdstringYesThe company data area identifier.
headersDeleteCustomerParametersHeadersNoOptional ifMatch ETag header for optimistic concurrency; mapped to If-Match.

Returns: error?

Sample code:

check fo->deleteCustomerParameters(
"usmf",
headers = {ifMatch: eTag}
);
updateCustomerParameters

Updates the customer parameters for a specific legal entity.

Parameters:

NameTypeRequiredDescription
dataAreaIdstringYesThe company data area identifier.
payloadCustomerParametersYesThe fields to update.
headersUpdateCustomerParametersHeadersNoOptional ifMatch ETag header for optimistic concurrency; mapped to If-Match.

Returns: customer:CustomerParameters|error

Sample code:

customer:CustomerParameters updated = check fo->updateCustomerParameters(
"usmf",
{settlementWriteOffEnabled: "Yes"},
headers = {ifMatch: eTag}
);

Customers

listCustomers

Reads all customers.

Parameters:

NameTypeRequiredDescription
headersmap<string|string[]>NoHeaders to be sent with the request.
queriesListCustomersQueriesNoOData query parameters: $skip, $top, $filter, $orderby, $expand, cross-company, $count, $select.

Returns: customer:CustomersCollection|error

Sample code:

customer:CustomersCollection customers = check fo->listCustomers(
queries = {
filter: "CustomerGroupId eq 'DOM-RETAIL' and OnHoldStatus eq 'No'",
top: 25,
'select: "CustomerAccount,Name,CustomerGroupId,CreditLimit,SalesCurrencyCode"
}
);
createCustomers

Creates a customer.

Parameters:

NameTypeRequiredDescription
payloadCustomerYesThe customer to create.
headersmap<string|string[]>NoHeaders to be sent with the request.

Returns: customer:Customer|error

Sample code:

customer:Customer newCustomer = check fo->createCustomers({
dataAreaId: "usmf",
customerAccount: "CUST-10045",
name: "Contoso Retail Ltd",
customerGroupId: "DOM-RETAIL",
paymentTerms: "Net30",
salesCurrencyCode: "USD",
creditLimit: 50000.0,
onHoldStatus: "No"
});
getCustomers

Reads a specific customer by key.

Parameters:

NameTypeRequiredDescription
dataAreaIdstringYesThe company data area identifier.
customerAccountstringYesThe customer account key field.
headersmap<string|string[]>NoHeaders to be sent with the request.
queriesGetCustomersQueriesNoOData query parameters: $expand, $select.

Returns: customer:Customer|error

Sample code:

customer:Customer existingCustomer = check fo->getCustomers(
"usmf",
"CUST-10045",
queries = {'select: "CustomerAccount,Name,CreditLimit,OnHoldStatus"}
);
deleteCustomers

Deletes a specific customer.

Parameters:

NameTypeRequiredDescription
dataAreaIdstringYesThe company data area identifier.
customerAccountstringYesThe customer account key field.
headersDeleteCustomersHeadersNoOptional ifMatch ETag header for optimistic concurrency; mapped to If-Match.

Returns: error?

Sample code:

check fo->deleteCustomers(
"usmf",
"CUST-10045",
headers = {ifMatch: eTag}
);
updateCustomers

Updates a specific customer.

Parameters:

NameTypeRequiredDescription
dataAreaIdstringYesThe company data area identifier.
customerAccountstringYesThe customer account key field.
payloadCustomerYesThe fields to update.
headersUpdateCustomersHeadersNoOptional ifMatch ETag header for optimistic concurrency; mapped to If-Match.

Returns: customer:Customer|error

Sample code:

customer:Customer updated = check fo->updateCustomers(
"usmf",
"CUST-10045",
{creditLimit: 75000.0, onHoldStatus: "Invoice"},
headers = {ifMatch: eTag}
);

Customers base

listCustomersBase

Reads all customer base records — a lightweight view of core customer identification fields.

Parameters:

NameTypeRequiredDescription
headersmap<string|string[]>NoHeaders to be sent with the request.
queriesListCustomersBaseQueriesNoOData query parameters: $skip, $top, $filter, $orderby, $expand, cross-company, $count, $select.

Returns: customer:CustomersBaseCollection|error

Sample code:

customer:CustomersBaseCollection customers = check fo->listCustomersBase(
queries = {
filter: "CustomerGroupId eq 'DOM-RETAIL'",
'select: "CustomerAccount,Name,PersonFirstName,PersonLastName,CustomerGroupId"
}
);
createCustomersBase

Creates a customer base record.

Parameters:

NameTypeRequiredDescription
payloadCustomerBaseYesThe customer base record to create.
headersmap<string|string[]>NoHeaders to be sent with the request.

Returns: customer:CustomerBase|error

Sample code:

customer:CustomerBase newCustomer = check fo->createCustomersBase({
dataAreaId: "usmf",
customerAccount: "CUST-10046",
name: "Fabrikam Distribution",
customerGroupId: "DOM-RETAIL",
languageId: "en-us",
salesCurrencyCode: "USD"
});
getCustomersBase

Reads a specific customer base record by key.

Parameters:

NameTypeRequiredDescription
dataAreaIdstringYesThe company data area identifier.
customerAccountstringYesThe customer account key field.
headersmap<string|string[]>NoHeaders to be sent with the request.
queriesGetCustomersBaseQueriesNoOData query parameters: $expand, $select.

Returns: customer:CustomerBase|error

Sample code:

customer:CustomerBase existingCustomer = check fo->getCustomersBase("usmf", "CUST-10046");
deleteCustomersBase

Deletes a specific customer base record.

Parameters:

NameTypeRequiredDescription
dataAreaIdstringYesThe company data area identifier.
customerAccountstringYesThe customer account key field.
headersDeleteCustomersBaseHeadersNoOptional ifMatch ETag header for optimistic concurrency; mapped to If-Match.

Returns: error?

Sample code:

check fo->deleteCustomersBase(
"usmf",
"CUST-10046",
headers = {ifMatch: eTag}
);
updateCustomersBase

Updates a specific customer base record.

Parameters:

NameTypeRequiredDescription
dataAreaIdstringYesThe company data area identifier.
customerAccountstringYesThe customer account key field.
payloadCustomerBaseYesThe fields to update.
headersUpdateCustomersBaseHeadersNoOptional ifMatch ETag header for optimistic concurrency; mapped to If-Match.

Returns: customer:CustomerBase|error

Sample code:

customer:CustomerBase updated = check fo->updateCustomersBase(
"usmf",
"CUST-10046",
{salesCurrencyCode: "CAD"},
headers = {ifMatch: eTag}
);