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}
);