In this article, we are going to understand what Externally Maintained Fields Dynamics 365 for Finance and Operations are and what are its considerations. Lets get started!
External Maintained Fields in Dynamics 365 for Finance and Operations:
When an integration is triggered between Dynamics 365 for Sales (D365 Sales) or Customer Service(D365 CE) and Dynamics 365 for Finance and Operations(D365 FO) through the Common Data Service (CDS) or directly, there is an identification mechanism through which the implementation team can determine whether the record is created manually in D365 FO or through CDS. This concept is called externally maintained fields in Dynamics 365 FO.
Common Data Service (CDS) and PowerApps:
Common Data Service (CDS) and PowerApps are two cloud services available, as a part of the Dynamics 365 Suite of products and services.
Common Data Service (CDS):
Common Data Service (CDS) is a service through which data is securely stored and managed as entity stores. In addition to this, CDS serves as the backbone to unify data and enables flexibility of data.
PowerApps:
PowerApps is an integrated environment on the cloud, which enables businesses to build applications, connect data across multiple systems through those applications and automate data flow and business processes across those systems.
D365 Application Explorer Objects Used:
The following are the list of fields that are triggered in Dynamics 365 FO. The tables that are used here include the following:
- DirPartyTable
- DirOrganization
- LogisticsLocation
- LogisticsPostalAddress
- LogisticsElectronicAddress
The fields are classified as editable and non-editable after the customer details are created in D365 FO from D365 CE or D365 Sales.
Purpose | Table | Fields |
Customer Details(non-editable) | ||
Customer Name | DirPartyTable | Name |
If Primary Contact Point is set to Fax | DirPartyTable | PrimaryContactFax |
If Primary Contact Point is set to Email | DirPartyTable | PrimaryContactEmail |
If Primary Contact Point is set to Phone | DirPartyTable | PrimaryContactPhone |
If Primary Contact Point is set to URL | DirPartyTable | PrimaryContactURL |
Number of Employees (if the Type is set to Organization) | DirOrganization | NumberOfEmployees |
Customer Name (if the Type is set to Organization) | DirOrganization | Name |
First name (If the customer is a Person) | DirPerson | PhoneticFirstName |
Middle Name (if the customer is a Person) | DirPerson | PhoneticMiddleName |
Last Name (if the customer is a Person) | DirPerson | PhoneticLastName |
Name (If the customer is a Person. The name is set to non-editable at the DirPerson level itself) | DirPerson | Name |
First name (If the customer is a Person) | DirPersonName | FirstName |
Middle Name (if the customer is a Person) | DirPersonName | MiddleName |
Last Name (if the customer is a Person) | DirPersonName | LastName |
Last Name Prefix (if the customer is a Person) | DirPersonName | LastNamePrefix |
Customer Address Details (non-editable) |
||
Description | LogisticsLocation | Description |
County | LogisticsPostalAddress | County |
Latitude | LogisticsPostalAddress | Latitude |
Longitude | LogisticsPostalAddress | Longitude |
TimeZone | LogisticsPostalAddress | TimeZone |
City | LogisticsPostalAddress | City |
Country | LogisticsPostalAddress | CountryRegionId |
Street Name | LogisticsPostalAddress | Street |
Postal Code | LogisticsPostalAddress | ZipCode |
State | LogisticsPostalAddress | State |
Table 1 – Non-editable fields |
The contact information fields are also considered as externally maintained fields, but these fields are editable.
Purpose | Table | Field |
Customer Contact Information (editable fields) | ||
Type of Contact (Email,Phone number, Fax etc) | LogisticsElectronicAddress | Type |
Extension (if any in the Contact information section) | LogisticsElectronicAddress | LocatorExtension |
Description of the contact point | LogisticsElectronicAddress | Description |
If the contact type is the primary contact type | LogisticsElectronicAddress | IsPrimary |
Contact details of the person/organization | LogisticsElectronicAddress | Locator |
Country or region the contact belongs to | LogisticsElectronicAddress | CountryRegionCode |
Table 2 – Editable Fields |
X++ Classes Used:
The X++ classes that are triggered on overriding method called active() in the CustTable Form datasource. The class triggered is DirPartyRoleIsExternallyMaintained.
// Set field restrictions for the shared party fields and the additional customer specific fields registered through the shared call.
DirPartyRoleIsExternallyMaintained::setRestrictionForExternallyMaintainedFields(CustTable.Party,element);
Class | Methods Used |
DirPartyRoleIsExternallyMaintained | setRestrictionForExternallyMaintainedFields() |
DirPartyRoleIsExternallyMaintained |
getExternallyMaintainedFields() |
addDirPartyFields() | |
Table 3 – Methods and Classes Used |
Call Stack:
Fig 1 – Externally Maintained Fields
Abbreviations in Fig 1 – Externally Maintained Fields:
References:
- Development In Dynamics 365 For Finance And Operations:
https://docs.microsoft.com/en-us/dynamics365/unified-operations/dev-itpro/dev-tools/developer-home-page - Data Integration Through Common Data Service (CDS):
https://docs.microsoft.com/en-us/dynamics365/unified-operations/dev-itpro/data-entities/data-integration-cds