top of page

Dynamics 365 F&SCM: Limiting the use of de-normalised data entities.

Writer: Konexxia SolutionsKonexxia Solutions

Updated: Mar 13

De-normalised Entities in the Data Management Framework


The Data Management Framework (DMF) in Dynamics 365 Finance & Supply Chain Management incorporates de-normalised entity structures, particularly prevalent in master data domains such as Customer and Vendor management. These de-normalised entities provide a logical abstraction layer that consolidates the underlying normalised physical schema into a unified view. This architecture facilitates simplified data operations by encapsulating the complexity of the relational model that underpins the application.

In the physical data model, a standard customer record is distributed across multiple normalised tables in accordance with standard database normalisation principles:


  • DirParty (Party information)

  • CustTable (Customer-specific attributes)

  • LogisticPostalAddress (Physical address data)

  • LogisticElectronicAddress (Communication endpoints)


The de-normalised entities effectively create a presentation layer that assembles these distributed attributes into a coherent, business-oriented data structure, abstracting the underlying table relationships and join operations.


Performance Implications and Limitations


While de-normalised entities offer significant advantages for data visualisation and management in low-volume scenarios, they introduce notable performance constraints in enterprise-scale implementations:

  1. Complex Data Scenarios: When entities contain one-to-many relationships (e.g., multiple addresses or communication endpoints per customer), the de-normalised structure necessitates:

    • Redundant data representation

    • Primary key duplication across multiple rows

    • Complex data transformation logic during import

  2. Volume-Based Performance Degradation: For large-scale data migrations (exceeding 1,000 records), these entities exhibit exponential performance deterioration due to:

    • Increased computational overhead during normalisation processing

    • Complex transaction management across multiple physical tables

    • Synchronous constraint validation during data decomposition

  3. Technical Overhead: The entity framework must dynamically reconstruct normalised data structures during the import process, executing complex transformation logic that becomes increasingly resource-intensive at scale.


Performance Optimisation Strategy


At Konexxia, empirical performance analysis has demonstrated significant efficiency gains—exceeding 50% reduction in processing time—by circumventing the de-normalised entities in favour of direct interaction with the normalised data model. This approach aligns with Microsoft's technical guidance, which explicitly recommends avoiding de-normalised entities for high-volume data operations.

The performance differential is attributed to the elimination of the transformation layer that decomposes the de-normalised structure into its constituent normalised components, thereby reducing computational overhead and I/O operations during the import process.


Entity Loading Architecture


The implementation follows a hierarchical entity loading pattern to establish proper relational integrity within the D365 framework. The sequence establishes global directory entries before creating transactional entity relationships.


1. Core Party Entity Loading (DirPartyV2Entity)


Purpose: Establish base organisational identity in the Global Address Book

Required Fields:

  • PartyNumber (Primary Key)

  • PartyType - Set to "Organization" for Customer/Vendor entities

  • OrganizationName - Legal entity name

  • NameAlias - Alternative identification

  • LanguageId - Communication preference identifier


2. Postal Address Entity Loading (DirPartyLocationPostalAddressEntity)


Purpose: Define physical location associations for the established party

Required Fields:

  • PartyNumber (Foreign Key → DirPartyV2Entity.PartyNumber)

  • LocationId - Unique location identifier

  • Description - Location reference designation

  • IsPrimary - Boolean flag for default address designation

  • IsRoleBusiness - Boolean flag for business purpose designation

  • IsRoleDelivery - Boolean flag for shipping purpose designation

  • IsRoleInvoice - Boolean flag for billing purpose designation

  • Roles - Composite role designation

  • Street - Physical address line

  • City - Municipal designation

  • CountryRegionId - ISO country identifier

  • State - Regional subdivision

  • ZipCode - Postal routing code


Composite Primary Key: (PartyNumber, LocationId, ValidFrom)

Implementation Note: Ensure proper foreign key relationship with the Party entity established in Step 1 to maintain referential integrity.


3. Contact Information Loading (DirPartyContactV3Entity)


Purpose: Associate electronic communication endpoints with the established party

Required Fields:

  • PartyNumber (Foreign Key → DirPartyV2Entity.PartyNumber)

  • ElectronicAddressId - Unique contact identifier

  • LocationId - Associated physical location reference

  • Locator - Communication endpoint value (email address, phone number)

  • Description - Contact reference designation

  • CountryRegionCode - ISO country identifier for localisation

  • Purpose - Contact usage classification

  • Type - Communication channel designation

  • IsPrimary - Boolean flag for default contact designation


Composite Primary Key: (PartyNumber, ElectronicAddressId)

Implementation Note: Maintain referential integrity with the Party entity established in Step 1.



Integration with Master & Transactional Records


1. Customer Entity Integration (CustCustomerV3Entity)


Purpose: Establish customer financial relationship linked to Global Address Book identity

Required Fields:

  • CustomerAccount (Primary Key)

  • PartyNumber (Foreign Key → DirPartyV2Entity.PartyNumber)

  • CustomerGroupId - Customer classification identifier

  • PaymentMethod - Default settlement mechanism

  • PaymentTerms - Default credit parameters

  • Additional financial parameters as required


Implementation Requirements:

  1. Ensure the PartyNumber references the previously established entity from Step 1

  2. Explicitly null or omit all address fields during import configuration

  3. Implement data mapping that excludes address attributes to leverage existing directory structures


Performance Optimisation: This approach bypasses redundant internal address processing, resulting in significant performance improvements during data migration execution.

© 2025 Konexxia Solutions.

bottom of page