Exact Online Premium Connector - Customer Update
The Customer Update pipeline synchronizes customer data from Exact Online to App4Sales. This process involves retrieving customer records, their associated addresses, and contact persons. It also handles specific logic for VAT, price lists, and dynamic free fields. Customers that no longer meet the synchronization criteria are marked for deletion in App4Sales.
Data Source Configuration
Customer data is retrieved from Exact Online via REST API calls. The connector uses the following endpoints and mechanisms:
Customers: Fetched using
ExactOnlineCustomer.GetRoute(Settings.CurrentDivision, customerFields.Select(e => e.PropertyName).ToArray(), Settings.CustomerTimestamp). This retrieves customer records, optionally filtered by timestamp and specific custom fields.Contact Persons: Fetched using
ExactOnlineContactPerson.GetRoute(Settings.CurrentDivision, contactFields.Select(e => e.PropertyName).ToArray(), Settings.ContactTimestamp). This retrieves contact person records, optionally filtered by timestamp and specific custom fields. Active contacts are filtered byStartDateandEndDate.Addresses: Fetched using
ExactOnlineAddress.GetRoute(Settings.CurrentDivision, addressFields.Select(e => e.PropertyName).ToArray(), Settings.AddressTimestamp). This retrieves address records, optionally filtered by timestamp and specific custom fields.Account Managers: Fetched using
ExactOnlineAccountManager.GetRoute(Settings.CurrentDivision). These are used to map sales representatives.Payment Conditions: Fetched using
ExactOnlinePaymentCondition.GetRoute(Settings.CurrentDivision).VAT Codes: Fetched using
VatCode.GetRoute(Settings.CurrentDivision).Price Lists: Fetched using
ExactOnlinePriceList.GetRoute(Settings.CurrentDivision).Account Classifications: Fetched using
ExactOnlineAccountClassification.GetRoute(Settings.CurrentDivision).Customer Notes: Fetched using
CommunicationNoteUpdate.GetRoute(Settings.CurrentDivision, Settings.LastNoteSync)ifSyncCustomerNotessetting is enabled.
Data is pulled from Exact Online using these API routes. Timestamps (e.g., Settings.CustomerTimestamp) are used to retrieve only modified or new records since the last synchronization, optimizing performance.
Data Mapping Table (Customers)
App4Sales Field | Source Field (API/Excel/DB) | Logic/Notes |
|
| Unique identifier for the customer. |
|
| Customer's unique code. A prefix |
|
| Customer's name. Can be prefixed with account classification description if |
|
| Maps to an internal price list ID in App4Sales. The Exact Online |
|
| Determined by |
|
| Maps the Exact Online account classification to the App4Sales customer classification. |
|
| Maps either the customer's |
| Custom fields defined in | Custom fields configured in the connector settings are serialized into an XML string. Includes custom fields from customer and main invoice address. |
|
| The sales discount percentage from Exact Online. Default to 0.0M if not available. |
|
| Customer's phone number and email address. These can also be set on associated addresses and contact persons. |
|
| The ID of the main contact person for the customer. |
Hardcoded: | N/A | Set to |
Data Mapping Table (Addresses)
App4Sales Field | Source Field (API/Excel/DB) | Logic/Notes |
|
| Unique identifier for the address. |
|
| Mapped from Exact Online Address Type (1: Visit, 2: Postal, 3: Invoice, 4: Delivery, 5: Other). Only Visit (1), Invoice (3) and Delivery (4) addresses are processed. |
|
| First line of the street address. |
|
| Second line of the street address. |
|
| Third line of the street address. |
|
| City of the address. |
|
| Postal code of the address. |
|
| Country of the address. |
|
| ISO 2-letter country code, derived from the |
| Customer's Phone | Inherited from the customer object. |
| Customer's Email | Inherited from the customer object. |
|
| Indicates if this is the main address of its type for the customer. |
Data Mapping Table (Contact Persons)
App4Sales Field | Source Field (API/Excel/DB) | Logic/Notes |
|
| Unique identifier for the contact person. |
|
| Links the contact person to the customer. |
|
| First name of the contact. |
|
| Last name of the contact. |
|
| Full name of the contact. |
|
| Email address of the contact person. If the contact has no email, it inherits from the customer. |
|
| Phone number of the contact person. If the contact has no phone, it inherits from the customer. |
|
| Indicates if this is the main contact person for the customer. |
Data Mapping Table (Extra Data & Free Fields)
App4Sales Field | Source Field (API/Excel/DB) | Logic/Notes |
| Custom properties from Exact Online Customer, Address, and ContactPerson entities | The connector maps custom fields defined in |
Data Mapping Table (Discounts & Dashboards)
App4Sales Field | Source Field (API/Excel/DB) | Logic/Notes |
Customer specific Item Class Discounts | N/A | Currently, no direct mapping from Exact Online for customer-specific item class discounts was found in the analyzed code. This implies that such discounts might be managed within App4Sales or via a different integration point not covered by the Customer Update pipeline. |
Customer Dashboard / Notes |
| Customer notes are synchronized from Exact Online's |