El Hajj Consulting Book a call →
07 · Extending the platform

Customizations, integrations & interfaces

When standard configuration is not enough: extensions, ISVs, integration patterns, and the framework for deciding when to build vs configure.

Configure vs customize: the decision framework

When to use it: During the Fit/Gap analysis phase of the project, before a single line of code is written.

The Cost of Customization

Consultants must act as gatekeepers. Every customization introduces technical debt. Custom code requires ongoing maintenance, increases the risk of regression bugs during Microsoft's continuous One Version updates, and mandates the creation of automated RSAT test scripts. Customizations must be justified by a clear, measurable Return on Investment (ROI) or a strict legal requirement.

Guiding the Client

Clients often request customizations simply because they want the new ERP to work exactly like their legacy system. The consultant's job is to challenge this mindset. Always demonstrate the standard D365 process first. If the standard process achieves the business goal, even if it requires a few extra clicks, advocate for configuration over customization.

Extensions & the X++ extension model

When to use it: When standard configuration cannot meet a critical business requirement, and custom X++ code is necessary.

The End of Overlayering

In older versions of Dynamics AX, developers used "overlayering" to directly modify standard Microsoft source code. This is now completely blocked. Dynamics 365 Finance and Operations strictly enforces an Extensibility model. Standard code is locked, and developers must build extensions that hook into the standard processes without altering the base objects.

Chain of Command (CoC) and Event Handlers

To augment standard functionality, developers use the Chain of Command (CoC). This allows them to wrap standard methods, executing custom logic either before or after the standard code runs. Alternatively, they can subscribe to standard Events (like an "OnValidatingWrite" event on a table). Consultants must work closely with developers to ensure that the requested custom logic can actually be achieved using these supported extensibility points.

ISV solutions

When to use it: When the client requires deep, specialized industry functionality that is commoditized in the market (such as EDI, Advanced Tax Calculation, or AP OCR Automation) and building it from scratch would be prohibitively expensive.

Evaluating ISVs

Independent Software Vendors (ISVs) provide pre-packaged solutions that bolt onto D365. Consultants must rigorously evaluate them.

  • AppSource Certification: Ensure the solution is certified on Microsoft AppSource.
  • Technical Footprint: Request the ISV's technical documentation. Avoid ISVs that require highly intrusive core modifications, as they can cause severe performance issues and block future Microsoft updates.
  • Licensing: Clarify the licensing model early. Is it a flat fee, or based on transaction volume? Does it require additional Azure consumption?

Integration patterns

When to use it: When connecting D365 F&O to external systems like a third-party Warehouse Management System (WMS), a CRM, or a Manufacturing Execution System (MES).

Choosing the Right Pattern

The biggest integration mistake is using a synchronous pattern for an asynchronous problem.

  • OData and Custom Services: Use for low-volume, synchronous integrations where the external system needs a real-time response (like querying an inventory balance). Do not use OData for importing thousands of orders, as it will crush system performance.
  • Recurring Integrations and Data Management: Use for high-volume, asynchronous file-based integrations (like a nightly import of hundreds of journal entries).
  • Business Events: Use when D365 needs to push a lightweight notification to an external system (like triggering a Logic App the moment a Purchase Order is approved).

Dual-write & Dataverse

When to use it: When integrating F&O with Dynamics 365 Customer Engagement (Sales, Field Service) or building Power Platform apps.

Dual-write

Dual-write provides near real-time, bidirectional synchronization. When a customer is created in F&O, it is instantly written into the Dataverse database. Use this for core Master Data (Customers, Vendors, Products) where both systems require offline access to the physical data. Note that Dual-write duplicates data storage.

Virtual Entities (Virtual Tables)

Virtual Entities allow Dataverse to read and write directly to F&O without copying the data. The data remains in the F&O database, and Dataverse just acts as a real-time window into it. Use this for transactional data (like Sales Orders or Invoices) to prevent massive data duplication while still allowing Power Apps to interact with the records.

Data Management Framework (DMF / DIXF)

When to use it: For massive data migration during the go-live phase, and for ongoing high-volume asynchronous integrations.

Data Entities

The Data Management Framework (DMF) relies on Data Entities, which are denormalized views of complex F&O table structures. Instead of importing into 5 separate customer tables, you import into one "Customers V3" entity, and the system handles the distribution.

Import and Export Projects

Consultants will spend significant time in the Data management workspace configuring Import and Export projects. You must map source files (like CSV or Excel) to the staging tables, define the execution sequence, and manage error handling. For integrations, these projects can be configured to run automatically as Recurring Data Jobs.

Power Platform integration

When to use it: To build rapid automations, custom approvals, or lightweight mobile apps without deploying custom X++ code.

Power Automate

Leverage the D365 F&O connector in Power Automate. Consultants can build flows that listen for F&O Business Events (like an invoice being posted) and automatically route notifications through Microsoft Teams or Outlook. This is much faster and cheaper than writing custom X++ workflow alerts.

Power Apps

If warehouse workers need a simple mobile app to scan barcodes, do not build a custom F&O form. Build a Canvas Power App that connects to F&O via Virtual Entities, providing a tailored, low-code user interface that communicates with the ERP in real time.

Electronic reporting (ER) & e-invoicing

When to use it: To modify outbound documents (like Customer Invoices or checks) or generate statutory tax files without requiring a developer.

The ER Framework

Electronic Reporting (ER) separates the Data Model (what data is available) from the Format (how it looks). Consultants can use the ER designer to map fields to XML, CSV, or Excel formats. This is heavily utilized for government-mandated electronic invoicing (such as PEPPOL formats in Europe). You can derive standard Microsoft formats and extend them to include custom fields without touching code.

Change governance

When to use it: Continuously throughout the build, test, and deploy phases of an implementation.

Application Lifecycle Management (ALM)

Customizations must be strictly managed using Azure DevOps. Developers check their X++ code into version control. Automated build pipelines compile the code and generate a Deployable Package. This package is then uploaded to Lifecycle Services (LCS) and pushed to the UAT Sandbox for testing.

Strict Governance

Never bypass the process. Ensure that every customization is linked to an approved Azure DevOps work item. Enforce mandatory code reviews. If governance slips, technical debt accumulates rapidly, and the client will face severe instability during the next mandatory Microsoft service update.