A comprehensive, practical guide to plan, implement, customize, monitor, and troubleshoot Dual-write (Dataverse <> Finance and Operations apps) for real-time business data.
Contents
- What is Dual-write?
- Architecture at a Glance
- Prerequisites & Readiness Checklist
- Core Concepts You’ll Use Every Day
- Step-by-Step Setup
- Data Design & Mapping Guidance
- Customizations & Extensions
- Operations: Monitoring, Errors, Performance
- Security & Compliance
- Cutover & Migration Playbook
- ALM: Dev/Test/Prod Strategy
- FAQ
- A–Z Glossary
- Sample Runbook Snippets
- Governance & Best Practices
- Conclusion & Meta
What is Dual-write?
Dual-write provides near real-time, bidirectional data sync between Dynamics 365 Customer Engagement (CE) apps (Sales, Customer Service, Field Service, etc., built on Microsoft Dataverse) and Finance & Operations (F&O) apps (Finance, Supply Chain Management, Project Operations for resource/non-stock scenarios). It ships with vetted templates (“maps”) that align common business entities—accounts, contacts, products, customers, vendors, orders—so front-office and back-office stay in lockstep.
Who should use it?
- Organizations running both CE and F&O that want a single source of truth without custom integrations.
- Businesses migrating in phases (e.g., CE first, F&O later) needing continuous data consistency during the transition.
Architecture at a Glance
Dual-write runs as a platform capability:
- Dataverse holds CE tables; F&O holds enterprise data (e.g., CustTable, VendTable, EcoResProduct).
- Templates (maps) define table pairings, field mappings, transforms, and filters.
- Company context (
msdyn_companyin Dataverse) aligns with F&O legal entities. - Initial sync loads historical data; live sync streams ongoing changes.
- Health, error, and pause controls are available in both environments.
Keep Data Integrator separate in your mind—it’s for batch integration. Dual-write is for near real-time operational sync.
Prerequisites & Readiness Checklist
- Licensing: Valid licenses for the CE app(s) and F&O app(s) you’ll integrate.
- Environments: Linked CE & F&O (Dev, Test, Prod). Use LCS to associate F&O with your tenant and link to Dataverse.
- Access: Global admin or equivalent to set up links; appropriate roles in Power Platform and F&O.
- Solutions: Ensure required Dual-write solutions in Dataverse (installed during linking). Party/Global Address Book solutions are recommended when syncing addresses across systems.
- Networking: Traffic allowed to Microsoft endpoints (no custom firewalls blocking platform traffic).
- Data quality: Clean duplicates, standardize addresses, phone formats, and country/region codes before initial sync.
Core Concepts You’ll Use Every Day
Templates (Maps)
Prebuilt pairings for tables like Account ↔ Customers, Contact ↔ ContactPerson, Product ↔ Released Product, Sales order ↔ Sales order, Company ↔ Legal entity, Currency, UoM, Payment terms, etc.
Company Context
The msdyn_company lookup on Dataverse rows controls which F&O legal entity the record syncs with. Always set it for company-scoped data.
Initial vs Live Sync
Initial sync loads historical data in bulk; live sync sends changes in seconds. Handle duplicates and keys before you go live.
Transforms & Value Maps
Use template transforms for simple lookups and enumerations. For complex logic, prefer F&O business logic or Power Platform plugins.
Step-by-Step Setup (Dev → Test → Prod)
- Link environments: In F&O (System administration > Setup > Microsoft Power Platform integration), link to your Dataverse environment. This installs Dual-write solutions in Dataverse if missing.
- Enable legal entities: Select which F&O companies will sync. Ensure each has matching company records in Dataverse.
- Review templates: Start with foundation maps—Company, Currency, Unit, Country/Region, Payment terms, Customer group/vendor group, Address roles.
- Run initial sync for foundation maps: Validate data volumes and errors. Fix duplicates and missing references, then rerun.
- Activate business maps: Account/Contact ↔ Customer/ContactPerson, Product ↔ Released Product, Vendors, Price lists/UoM conversions, Quotes/Orders.
- Pilot live sync: Turn on live sync for a subset (one legal entity, one BU) and validate end-to-end (create in CE, post in F&O, round-trip updates).
- Harden & extend: Add custom columns, value maps, and plugins where necessary. Keep transforms minimal inside templates.
- Promote via ALM: Move the configuration and solutions through Dev → Test → Prod with proper change control and freeze windows for cutover.
Company → Currency → Country/Region → Units & Conversions → Payment Terms → Customer/Vendor groups → Party/Address → Customers/Vendors → Products → Price/Discount structures → Quotes/Orders.
Data Design & Mapping Guidance
- Party & Address model: If using synchronized addresses, adopt the party/global address book solutions so CE Accounts/Contacts align to F&O Party/Postal addresses cleanly.
- Keys & Numbers: Decide source of truth for customer and vendor numbers (F&O number sequences versus CE auto-numbers). Avoid generating competing numbers on both sides.
- Option sets & enums: Ensure CE option sets map to F&O enums (add value maps). Keep a shared reference table when necessary.
- Company scope: For company-specific data (products, prices, customers), always set
msdyn_companyin CE and the legal entity in F&O. - Products: Align released product variants/attributes with CE product family/variants. If CE catalogs differ, add a cross-reference table.
- Orders: Capture sales intent in CE; financial posting remains in F&O. Use order status transitions that both systems understand.
Customizations & Extensions
You can safely extend Dual-write without breaking the core:
- Custom columns: Add to both sides, then extend the template mapping.
- Value conversions: Use value maps for simple translations (e.g., Prospect ↔ CustGroup).
- Business logic: Prefer F&O extensions for finance logic; use Dataverse plugins/Power Automate for CE workflow logic. Keep template transforms lightweight.
- Conditional sync: Template filters can limit which records/companies sync.
Operations: Monitoring, Error Handling, Performance
Where to monitor
- F&O Dual-write workspace: Health, errors, pause/resume, replays.
- Dataverse Dual-write app: Template state, map details, initial sync progress.
Common errors & quick fixes
- Duplicate key / already exists: Align keys before initial sync; use merge or remap.
- Missing reference (e.g., currency/UoM): Run foundation maps first; re-order initial sync.
- Auth/permission failures: Revalidate connections; ensure app users/roles in both environments.
- Throttling: Stagger maps, run outside business peaks, and batch initial sync in segments.
Performance tips
- Initial sync in waves (by legal entity or BU). Archive logs frequently.
- Trim columns to only what’s needed. Disable unused maps.
- Avoid heavy synchronous plugins on synced tables; switch to async where possible.
Security & Compliance
- Least privilege: Assign only required roles to service principals/app users.
- PII/GDPR: Minimize synced fields; use field-level security and attribute masking as needed.
- Audit: Turn on auditing for critical tables. Monitor failures and replay logs.
- Change control: Promote template changes via managed solutions and documented runbooks.
Cutover & Migration Playbook
- Freeze window: Announce a read-only window in CE and/or F&O.
- Foundation sync: Ensure currencies, units, payment terms, groups exist on both sides.
- Historical load: Migrate customers/vendors/products first, then balances (if required).
- Initial sync: Run for all business maps; reconcile counts and spot-check samples.
- Turn on live sync: Start with a pilot legal entity; monitor; then roll out globally.
- Fallback plan: Document how to pause maps, revert data changes, and replay after fixes.
ALM: Dev/Test/Prod Strategy
- Branching: Keep Dual-write solution changes in version control alongside CE/F&O extensions.
- Config as code: Document template settings, value maps, filters, and keep a change log.
- Automated checks: Pre-flight tests to validate required reference data before enabling maps.
- Smoke tests: Create Account in CE → becomes Customer in F&O; update Address in F&O → reflects in CE.
FAQ
Does Dual-write replace middleware?
For core CE↔F&O synchronization, yes. You may still use Azure Integration Services for non-Dynamics, B2B EDI, and analytics pipelines.
How “real-time” is it?
Typically seconds. It’s event-driven, not batch. Throughput depends on load, plugins, and map volume.
Can I sync custom tables?
Yes—create a custom map. Keep schemas symmetrical and plan keys and company scope.
What about multi-company?
Use msdyn_company to route records per legal entity. Create data policies to avoid cross-company contamination.
How do I handle deletes?
Decide per table. Many customers use “soft delete” or business deactivation to preserve financial audit requirements.
A–Z Glossary (Quick Reference)
- A – Account/Customer: CE Account ↔ F&O CustTable pairing.
- B – Business unit: Use for scoping pilots and security.
- C – Company context:
msdyn_companylinks to legal entities. - D – Dual-write workspace: Monitor, pause, replay.
- E – Enums: Map to CE option sets via value maps.
- F – Foundation maps: Company, Currency, UoM, Country/Region.
- G – Global Address Book: Party model parity with CE.
- H – Health: Template status and error trends.
- I – Initial sync: One-time historical data load.
- J – Journeys: End-to-end tests CE→F&O→CE.
- K – Keys: Choose master for numbers, avoid collisions.
- L – Live sync: Near real-time event processing.
- M – Maps: Prebuilt templates you can extend.
- N – Number sequences: Typically mastered in F&O.
- O – Orders: CE intent, F&O financials/posting.
- P – Party: Person/Organization with addresses.
- Q – Quality gates: Pre-flight checks before go-live.
- R – Replay: Fix, then replay failed records.
- S – Security: Roles, least privilege, audit.
- T – Transforms: Keep simple; push complex logic to apps.
- U – UoM: Sync units and conversions early.
- V – Vendors: CE Supplier ↔ F&O VendTable.
- W – Wave approach: Rollout per entity/company.
- X – X-functional team: CE, F&O, infra, security.
- Y – “Y” not syncing? Check references & throttling.
- Z – Zero surprises: Runbook, rollback, comms plan.
Sample Runbook Snippets
- Pre-flight: Confirm solutions, connections, security roles, service principals, reference data counts.
- Enable order: Foundation maps → Party/Address → Customers/Vendors → Products → Orders.
- Smoke test: Create Account in CE with company; verify in F&O as customer. Update address in F&O; verify in CE.
- Monitoring: Watch error rates < 0.5% and replay queue empties within SLA.
- Fallback: Pause affected maps, fix root cause, replay, reconcile counts, resume.
Governance & Best Practices
- Start small (one legal entity, one region), then scale.
- Keep customizations minimal inside templates—move complexity to app layers.
- Use managed solutions and document every mapping change.
- Train support on error categories and replay procedures.
- Align CE & F&O release calendars; avoid conflicting changes on mapped tables.
Conclusion
Dual-write can unify your customer and financial worlds in days—not months—when you follow a disciplined rollout: prepare foundation data, pick the right master for keys, pilot with a narrow scope, then expand with strong monitoring and ALM. With the A–Z reference above, you have a ready-to-run playbook for a safe, scalable implementation.


Leave a comment