<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=2191750074375425&amp;ev=PageView&amp;noscript=1">
Skip to content
  • There are no suggestions because the search field is empty.

Dynamics 365 Integration Documentation

Overview

The Dynamics integration (accessed via Settings → Dynamics Integration)  allows organizations to connect their BetterUnite account to a Microsoft Dynamics 365 environment and synchronize contacts, donors, and donations using the Microsoft Nonprofit Accelerator (MSNFP) entities.

 

Integration Setup Steps

1. Prerequisites

(Optional) The Microsoft Nonprofit Accelerator installed for donation/transaction sync (if not installed, only contact sync is available)

Integration Options (Connected State)

Option A: Sync Contacts

  • Triggered from the Contacts pageActionsExport Results
  • Matching logic: searches Dynamics by primary email address to find existing records
    • 0 matches → creates new contact/account
    • 1 match → updates the existing record (only populates blank fields)
    • Multiple matches → returns an error for that record

Option B: Sync Donations & Donors

Available only when MSNFP is detected

The UI shows all BetterUnite campaigns with a dropdown to map each to a Dynamics Campaign

Sync flow:
    1. Map campaign – user selects a Dynamics Campaign from the dropdown for each BetterUnite fundraiser to map campaigns between platforms
    1. Sync Donations processes donations in batches (paginated), for each:
    • Resolves/creates the donor contact in Dynamics
    • Creates an msnfp_transaction record
    1. Single donation sync – for individual retry with optional manual contact selection
    2. Validate Contact checks if a donor can be matched before syncing
Progress & Error Handling:

Progress bar updates per batch (totalProcessed / totalCount)

Errors displayed inline with option to select from multiple matching contacts

Donations can be marked with a sync status

 

Option C: Remove Connection

Removes the stored credentials and unlinks the organization

 

Attribute Mappings

Contact → Dynamics contact

BetterUnite Field

Dynamics Attribute

Notes

FirstName

firstname

Only set if target is blank

LastName

lastname

Only set if target is blank

EmailAddress

emailaddress1

Only set if target is blank; also used as match key

CellPhone

mobilephone

Only set if target is blank

BusinessPhone

telephone1

Only set if target is blank

HomePhone

telephone2

Only set if target is blank

AddressLine1

address1_line1

Only set if target is blank

AddressLine2

address1_line2

Only set if target is blank

City

address1_city

Only set if target is blank

StateOrProvince

address1_stateorprovince

Only set if target is blank

PostalCode

address1_postalcode

Only set if target is blank

Account (Contact:DonorType=Company) → Dynamics account

BetterUnite Field

Dynamics Attribute

Notes

Account.Name

name

Always set

EmailAddress

emailaddress1

Only set if target is blank

CellPhone

mobilephone

Only set if target is blank

BusinessPhone

telephone1

Only set if target is blank

AddressLine1

address1_line1

Only set if target is blank

AddressLine2

address1_line2

Only set if target is blank

City

address1_city

Only set if target is blank

StateOrProvince

address1_stateorprovince

Only set if target is blank

PostalCode

address1_postalcode

Only set if target is blank

Transaction → Dynamics msnfp_transaction (Nonprofit Accelerator)

BetterUnite Field

Dynamics Attribute

Type

Amount

msnfp_amount

Money

ReceivedDate

msnfp_receiveddate

DateTime

BookDate

msnfp_bookdate

DateTime

DataEntrySource

msnfp_dataentrysource

OptionSetValue

CalculatedName

msnfp_name

string

ReceiptOnContactId

msnfp_receiptoncontactid

EntityReference → contact

CampaignId

msnfp_originatingcampaignid

EntityReference → campaign

CampaignId

msnfp_effectivecampaignid

EntityReference → campaign

Anonymity

msnfp_anonymity

bool/int

Contact ID Persistence & Reuse

When a BetterUnite contact is synced to Dynamics (either via contact export or as part of a donation sync), the resulting Dynamics GUID is stored on the BU CONTACT record.  

Note: Despite the column name, this field stores both Dynamics Contact and Account IDs. The DonorType on the CONTACT record determines which Dynamics entity type it references.

Donation-Level Tracking

Each DONATION record independently tracks its own Dynamics sync state:

Column

Type

Purpose

dynamics_id

Guid?

The msnfp_transaction GUID created in Dynamics

dynamics_syncstatus

SyncStatus?

Sync outcome (Success, Error, etc.)

dynamics_syncdetail

string

Error detail message if sync failed

 

Sync Lookup Sequence

On each donation sync, the following resolution order is used for the donor:

Step 1 — Check for existing link Does BetterUnite CONTACT have a Dynamics Id value?

Yes → Step 2

No → Step 4

Step 2 — Retrieve by stored ID using the stored GUID.

Found → Use existing Dynamics record. Proceed to transaction export.

Not found / error → Step 3

Step 3 — Stored ID is stale The previously linked record may have been deactivated or deleted in Dynamics. Fall back to → Step 4.

Step 4 — Search Dynamics by email Query Dynamics contact or account entities where emailaddress1 matches the donor's email.

0 matches → Step 5

1 match → Step 6

Multiple matches → Step 7

Step 5 — Create new record Create a new contact or account in Dynamics. Store the new GUID in the BetterUnite CONTACT. Proceed to transaction export.

Step 6 — Use matched record Use the single matching record. Store the GUID in BetterUnite CONTACT. Proceed to transaction export.

Step 7 — Ambiguous match (manual resolution required) Return an error to the UI with the list of matching records. The user sees a dropdown next to the donation row to select the correct Dynamics contact/account. Once selected, re-syncing sends the chosen GUID, which is stored in the BetterUnite CONTACT and used for the transaction export.