ECI DDMS ERP Integration

DDMS Sync App enables DDMSPLUS ERP integration with EvolutionX. We cover setup, use cases, customer sync and more.

Séamus Diamond avatar
Written by Séamus Diamond
Updated over a week ago

What is DDMS?

DDMSPLUS® ERP software by ECI Software Solutions which enables dealers worldwide to access information, analyze operations from multiple locations, improve efficiencies, and grow their businesses through additional business lines and vertical markets, in brick-and-mortar locations, and via ecommerce.

Modules Integrated with EvolutionX

Here is a summary of the DDMS areas integrated with EvolutionX from the perspective of DDMSPLUS. The remainder of the article goes into more details about these.

Parent and Child Customers Sync

  • Daily and on-demand sync reads the Accounts and Departments and updates EvolutionX Customers with their name as Parent and Child Customers.

  • Filter the sync for only some Accounts by setting one or more prefix values in the Account Code.

  • Account & department sync is also performed when an account is added or saved in the EvolutionX Admin (targeting the saved customer account only).

Pricing and Contracts

  • Live price lookup for all items appearing on screen.

  • Staff can create a DDMS contract as an EvolutionX price rule, assign to customers or users, and read the items daily from DDMSPLUS. Note, laundry lists are not yet supported, but quicklists can be created by users.

Inventory

  • Live inventory lookup to DDMS for all items appearing on screen.

Checkout Live Integration to DDMSPLUS

  • Read Address fields on the Department to display as billing and shipping options.

  • Read Ship to records on the Department which can be filtered by an Attention ID if saved to the user seller reference field in Admin.

  • Check Prepay and Status OE values to determine on-account payment option.

  • OE Exempt check to prevent orders.

  • Optionally read taxes from DDMSPLUS

  • Optionally check for account credit limit, account budget, account past due status of this order and the account. Doesn't include integration with DDMS for user or cost centre budgets.

  • Set DDMSPLUS "blanket PO" value as the default PO value on the order in checkout.

  • Optionally allow users to specify a preferred delivery date for their order.

Storefront My Account Live Integration to DDMSPLUS

  • Live Order History

  • Live Invoice History

  • Live Account Balances

  • Optional Invoice Payments with email alert to staff to apply

Web Order processing

  • Optionally integrated Paya Connect payment processing for distributors inside the USA (use Net1 gateway).

    • Optional control the charging of a card once, or as items ship.

  • Optionally Send third-party payment details where distributors are outside the USA.

  • Optionally send Printer ID to control printer for web orders.

  • Optionally add or suppress shipping rule selected by the customer.

  • Off Catalog items support for items not found in DDMSPLUS.

  • Field mapping options for orders.

  • Guest orders (regardless of country) are sent to departments using the Province/State code for routing.

Install from the App Store

Enable the ECI DDMS PLUS App from the App Store under the Erp category. Go to the EvolutionX Admin and click App Store → ECI DDMS PLUS Integration.

App Store Fields

All Implementations:

  • DDMS Guest Customer Account: Sets the Account number that is going to be used for guests users

  • Shipping Country Code: Sets the country code for all shipping user addresses when synchronizing DDMS customers with EvolutionX. ISO Alpha-2 code must be used

  • SKU prefix: Sets the SKU prefix that will be added to off catalogues products

    • This will be used if the item is not found in DDMSPLUS (Alternate Type has an X)

  • DDMS prepaid status: Set a value if you wish to consider as "pre-paid" one of the codes between G and Z in the DDMSPLUS Status O/E customer field. DDMSPLUS "Status O/E" value and the PrePay value are considered to determine if the customer must pre-pay for the order using a credit card (CC). Read More Here.

  • DDMS GL Location: Sets the GL location to be used when sending orders to DDMS. If left blank, DDMS will set the GL location as 1 for the order.

  • DDMS Inventory Location: Sets the inventory location to be used when sending orders to DDMS. If left blank, DDMS will set the location as 1 for the order.

  • ECI API ID: Sets the API ID provided by ECI

  • ECI Consumer ID: Sets the Consumer ID provided by ECI

  • ECI SITE ID: Sets the Site ID provided by ECI

  • ECI API Endpoint URL: Sets the API endpoint provided by ECI

Legacy Order Processing using E-Procurement CXML files

Leave these three fields bank if using the API to process orders. This E-Procurement method is only used for legacy distributors who have not yet moved to the API method of order processing.

  • ECI E-Procurement endpoint URL: Sets the E-Procurement endpoint provided by ECI. Leave blank to use the new ECI API for order submission. N.B The new ECI API Order submission requires DDMSPLUS release 3.48 and above.

  • ECI E-Procurement Identity: Sets the E-Procurement Identity provided by ECI. Leave blank to use the new ECI API for order submission. N.B The new ECI API Order submission requires DDMSPLUS release 3.48 and above.

  • ECI E-Procurement Secret: Sets the E-Procurement Secret provided by ECI. Leave blank to use the new ECI API for order submission. N.B The new ECI API Order submission requires DDMSPLUS release 3.48 and above.

All Implementations:

  • Evolution API key: Evolution API key to be used from the App, can be set in Create EvolutionX API key

  • Order Taker ID: The 4-character code for the dealer’s employee who entered the order. Leave blank and "EVOX" will be used as order taker ID.

  • Order Include Credit Card Payment Field: Turn on this toggle to add credit card information of orders with the XML tags sent to DDMS. The credit card information will be saved in the VaultInformation tag to DDMS. When placing an order, we capture the card details we pass the token ID with the order so that DDMSPLUS can charge the card as it processes the order. DDMSPLUS does not required the card number which protects you and the systems so they remain PCI compliant. The last four digits of the card are provided as a note for your reference.

    • Apply Order Credit Card Payments In DDMS: When the "Order Include Credit card Payment Field" toggle is turned on, you get this option to set how the order credit card payment will be applied in DDMS. Below are the options available

      • Use DDMS settings to apply credit card payment: with this option, the default dealer settings in DDMS will be applied. This is the default option selected.

      • Apply 100% of the credit card amount on submit: with this option, 100% of the order amount will be charged to the credit card when the order is received by DDMSPLUS. This is one single charge per order.

      • Apply credit card amounts only as items ship: with this option, the card payment will be charged as the order is shipped. This may cause multiple charges to be taken for a single order, which totals to the amount of the order.

  • Use Customer PO as Short PO and Long PO (false only uses Long PO): By default (false) the Checkout PO field is only sent as the Long PO in DDMSPLUS. When processing a new web order into DDMSPLUS, if this toggle is set a on (true) it sends the Checkout PO field value to both the DDMSPLUS order Short PO and Long PO.

    When on (true) the Customer can see, on the storefront, the column Short PO on the Order list and Invoice list.

  • Order Printer ID: Sends the two character code with the order submit to indicate which printer should be used for the order. If left empty, the value is not sent and ECPLUS settings or DDMS settings will control this behavior.

  • Suppress Free Shipping Rule Line: Default is off and results in the shipping rule for the order being added as a line item on the order to indicate the choice seen and selected by the customer in checkout. If enabled, and if the shipping rule has no charge, this line will not be added to the order. Enable this in cases where you don't charge shipping and don't have two or more options for customers and this will save a line on the orders.

  • Error notification e-mail Sender: SES E-mail address to be used as sender (FROM) for emails sent when an integration error occurs.

  • Error notification e-mail Receiver: E-mail address to receive (TO) information when an integration error occurs.

Order Tax, Budget, Credit, and Past Due Checks

  • Enable Checkout Integration For DDMS Taxes: Turn on this toggle to enable live item tax lookup from DDMS during the checkout (After the Shipping Option Step).

    When this toggle is turned on, it shows the follow configuration options:

    • DDMS Account Budget Limit — there are two points where an order can be checked for exceeding a Budget Limit, in the checkout and on submit of the order to DDMS. The default value is the "DDMS Check after Ordering". Here are how the options work:

      • Skip Check in DDMS — This will not check the order against the budget limit in DDMS in checkout or when submitting the order. No orders are prevented or put on hold for this reason.

      • Checkout Prevents Ordering — In checkout an order that fails this check will be prevented from continuing and the order cannot be placed.

      • DDMS Check After Ordering (default) — In checkout this check is skipped and order is allowed to be placed but the order submit to DDMS will put the order in DDMS is put on hold (DDMS Order Status 0) for staff review. This must be manually reviewed by staff in DDMS. Note that this will not effect the EvolutionX Order status in Admin.

    • DDMS Account Credit Limit: there are two points where an order can be checked for exceeding a Account Credit Limit, in the checkout and on submit of the order to DDMS. The default value is the "DDMS Check after Ordering". Here are how the options work:

      • Skip Check in DDMS — This will not check the order against the budget limit in DDMS in checkout or when submitting the order. No orders are prevented or put on hold for this reason.

      • Checkout Prevents Ordering — In checkout an order that fails this check will be prevented from continuing and the order cannot be placed.

      • DDMS Check After Ordering (default) — In checkout this check is skipped and order is allowed to be placed but the order submit to DDMS will put the order in DDMS is put on hold (DDMS Order Status 0) for staff review. This must be manually reviewed by staff in DDMS. Note that this will not effect the EvolutionX Order status in Admin.

    • DDMS Account Past Due Check: there are two points where an order can be checked for exceeding a Account Past Due, in the checkout and on submit of the order to DDMS. The default value is the "DDMS Check after Ordering". Here are how the options work:

      • Skip Check in DDMS — This will not check the order against the budget limit in DDMS in checkout or when submitting the order. No orders are prevented or put on hold for this reason.

      • Checkout Prevents Ordering — In checkout an order that fails this check will be prevented from continuing and the order cannot be placed.

      • DDMS Check After Ordering (default) — In checkout this check is skipped and order is allowed to be placed but the order submit to DDMS will put the order in DDMS is put on hold (DDMS Order Status 0) for staff review. This must be manually reviewed by staff in DDMS. Note that this will not effect the EvolutionX Order status in Admin.

Customer Account Sync Filter

  • Customer Number Prefix For Sync: Specify Customer Number prefixes and during the sync process, we will only sync customer records when their account number starts with the specified prefix. You can specify as many prefix you want and separate each with a comma or leave blank to sync all customer accounts. Each customer prefix can be any character length. An example, if a dealer wants to only sync accounts starting with B,R or T, then the customer number prefix should be B,R,T

Setting Field Limits

DDMSPLUS ERP has some character limits that should be enforced in the Checkout of EvolutionX to ensure that customers stay within those limits as they enter values. Ask Our Customer Success Team to set these limits following this article and setting field limits as follows:

// Account options
var user_name = 30;
var user_phone = 25;

// Delivery Details
var address_name = 30;
var address_line_one = 25;
var address_line_two = 25;
var address_line_three = 25;
var address_county = 2;
var address_city = 20;
var address_postcode = 9;
var address_delivery_note = 150;

// Review and pay
var order_note = 150;
var po_number = 30;
var alternative_po_number = 10;

Set your Cart Limit

DDMS has a limit for how many lines can be added to the cart. So be sure to set your limit to 100 or less.

Customer Account and Department Sync

Each night a one-way sync of all accounts and departments reads data from ECI Interactive customer tables and will create or update customers on EvolutionX.

You can also trigger a one-way sync of all accounts and departments from the DDMS App Store in EvolutionX.

Customer Lookup

Before querying the customer, a request is made to ECPLUS to get the gl (general ledger) and inv (inventory location) values that will be used in the customer lookup.

If these fields are not returned or are empty, the DDMS GL Location and DDMS Inventory Location fields present in the ECI DDMSPLUS App configuration will be used if they have a value, otherwise, no gl and inv values will be sent.

Customer Addresses

Addresses are looked up in real time during the checkout process using the addresses obtained through customer lookup. Addresses are not synced and stored within the EvolutionX system.

Making Changes to Account and Department Names

Account and Department names are mastered in the DDMS ERP. Changes flow through the integration up to EvolutionX. The Account and Department names a synced from the DDMS Customer Screen "Dept Name" field.

Once the account has been updated inside DDMS the dealer can either manually run a customer sync within their EBS console or wait for the next scheduled run to complete typically within 24 hours. Then it would need to be synced with the dealer's Ecinteractive account management. (see below) once this is done then the changes should be reflected within EvolutionX.

⚠️Note: The same steps are taken when adding new accounts to EvoX.

Customer Field Mapping

Here are some important EvolutionX fields and how they are mapped with data from DDMS.

  • Customer Account Code — EvolutionX sets this value as the DDMS Customer Account Code.

  • Customer Seller Reference — EvolutionX sets this value as the DDMS Customer Department Code

  • Customer Address Title — EvolutionX sets this value as the DDMS Customer Department Name.

Customer Address Mapping (read more about addresses)

  • Address Line 1 — DDMS Address field Suite

  • Address Line 2 — DDMS Address Field Address

  • Address Line 3 — DDMS doesn't support this field. Mapping to the order is found below.

N.B - Accounts disabled through the sync process can only be enabled from the admin

Customer Credit Enabled Status Live Lookup Integration

The credit enabled status in the EvolutionX customer record can be ignored because EvolutionX does a live lookup on storefront in step one of the checkout. This check reads the DDMS Account & Department record's Prepay flag (If available) and the Status O/E.

Where either the Prepay or Status O/E indicate that the customer must prepay then they will not be offered the on-account payment method. If neither does then the the on-account payment method is offered if set up.

Prepay Value (requires DDMSPLUS release 3.49 and above)

Live lookup of Customer PrePay value to determine if the customer can order "on account" or "Credit card only". A value of TRUE means customer can only order with credit card while FALSE means customer can order "on account".

N.B: The Prepay Value check will only be available with DDMSPLUS release 3.49 and above

Status O/E in Checkout

Live lookup of Customer O/E Status to determine if the customer can order "on account" will allow values of "G" through "Z" as valid for ordering "on account" except for any value set as the "Prepaid Status" in the app store (as described above).

  • Customer Status O/E in DDMS

    • 1-9 or A-F — Credit Card only

    • G-Z — on account

    • The EvolutionX App Store value set as the DDMS Prepaid Status will also be Credit Card Only. For example: Set "P" value in the App Store will mean that G-Z except P is on account and other values, including P are Credit Card Only.

DDMS Customer O/E Status field:

OE Exempt in Checkout (requires DDMSPLUS release 3.49 and above)

DDMSPLUS Customer Department records include the OE Exempt (Order Entry Exempt) to prevent customers from placing orders. This is used when chasing payment from an account to prevent the customer placing new orders.

Note that in DDMSPLUS the OE Exempt status can have any letter in it but always results as OE Exempt set as True. If empty then OE Exempt is set as False.

How the OE Exempt check works in the checkout:

  • A storefront user clicks "checkout"

  • OE Exempt flag is checked on DDMSPLUS on the current department record and account master record.

  • If either record results in OE Exempt set as True, then EvolutionX will redirect them to their shopping cart with an error message:
    "Your account is on hold. Please contact our staff for assistance"

Customise O/E Exempt Error Message

Dealers are able to customise the OE Exempt message for their store. The default error message is "Your account is on hold. Please contact our staff for assistance".

To change the error message, make use of the Translation module provided in the EvolutionX Admin Portal.

On the translation module, search the "Key" field with the text "customer_on_hold" and press Enter. This provides you with a filtered list showing the default message set for the error message.

Provide your custom message in the Custom Translation box provided and click "Save Changes". With this, your custom message will be shown to the customer instead of the default message.

Default PO in Checkout

During the checkout process, EvolutionX reads the storefront user's PO value (longPoNumber) from DDMSPLUS and applies that as the default PO for the order (can be seen on the payment step in checkout).

N.B: Users can update the default PO to their own values for the order.

Order Processing to DDMS

EvolutionX will send orders to DDMSPLUS using the API Order submission (N.B The ECI API Order submission requires DDMSPLUS release 3.48 and above). Dealers can also configure on the appstore for order submission to use file in cXML format to ECI procurement for processing into DDMS.

⚠️ Note: Only orders processed through the EvolutionX checkout process or Punchout orders are supported with the DDMS integration. Orders Processed through the admin are not supported.

Here are some notes about order fields.

  • Order ID — EvolutionX sets this as the thirdPartyOrderNumber and aaaaSpecialText1.

  • Phone — EvolutionX sets this as the zzzzSpecialText1.

  • Email — EvolutionX sets this as the zzzzSpecialText2.

  • Shipping Note — EvolutionX sets this on three lines:

    • Line 1 to 50 is set on the aaaaSpecialText3 field.

    • Line 51 to 100 is set on the aaaaSpecialText4 field

    • Line 101 to 150 is set on the aaaaSpecialText4 field

  • Order Note — EvolutionX sets this on three lines:

    • Line 1 to 50 is set on the zzzzSpecialText3 field.

    • Line 51 to 100 is set on the zzzzSpecialText4 field

    • Line 101 to 150 is set on the zzzzSpecialText5 field

  • Customer Name — EvolutionX sets this as the whoCalled.

  • glLocation and inventoryLocation - EvolutionX uses the generalLedgerLocation and inventoryLocation fields returned from customer lookup (read more about customer lookup).

  • creditCardType - EvolutionX maps the field based on the name of the credit card brand following the list below (If no value is found, '6' will be used):

    • '0' = Master Card§

    • '1' = Visa

    • '2' = American Express

    • '3' = Diners Club

    • '4' = Carte Blanc

    • '5' = Discover

    • '6' = Private Label

  • isDropShip - EvolutionX uses the isDropShip value returned from customer lookup.

  • ShiptoName — EvolutionX maps the customer company name on this field. If the current customer is a child account, then the parent's customer company name is used.

  • shiptoRoute - EvolutionX uses the shiptoRoute value returned from customer lookup.

  • datedOrderDate - EvolutionX uses the Requested Delivery Date selected by the user during checkout (in case dealer has enabled the Requested Delivery Date setting).

  • AttentionName EvolutionX maps the shipping address name on this field.

  • Billing and Shipping Address (read more about addresses)

    • EvolutionX supports three address lines but DDMS supports two. EvolutionX will use the mapping:

      • Billing / Shipping Address Line 1 — DDMS Address field Suite

      • Billing / Shipping Address Line 2 — DDMS Shipping/Billing Address Field Address

      • Shipping Address Line 3 — DDMS Order Field aaaaSpecialText2

      • Billing Address Line 3 is not supported.

    • The DDMS Ship To Address Name for a Guest Order is set as the Shipping Address Name on the EvolutionX Order. Account Orders will set the DDMS Ship To Address Name as the EvolutionX Shipping Address Title.

  • Shipping Fees

    • EvolutionX shipping charges will be added as a line item when sending the order to DDMS. When configuring your EvolutionX Shipping rules add the item code with prefix (EX: OFCDELIVERY) to the Shipping rule name field. This item should exist in DDMS for use.

  • Product SKU

    • EvolutionX SKU is a string which consists of two parts from DDMS. The first three characters are used as the DDMS Item "Company" value. The remaining characters are used as the DDMS Item "Number" value.

      • Example: An EvolutionX Item with SKU "ABC10000" will be sent to DDMS on an order as a line item with Company = "ABC" and Number="10000".

    • Off Catalog Items

      • Items not found in DDMSPLUS will return Alternate Type value of X. EvolutionX will then prepend the SKU on the order line item with the Off Catalog prefix from the DDMS App Store settings.

  • Guest Orders

    • A guest order will go to the DDMS guest customer account as configured in the App Store Settings but the Department will be set dynamically as the State/Province code on the Shipping Address of the EvolutionX Order. This is because each state or province may have different tax treatment or routes in DDMS and this allows each to be configured in DDMS and then applied to the guest order correctly.

      • Example: Order from a guest customer shipping to Alberta, Canada will go to the Guest Account Code as defined in the App Store Settings and the Department "AB" (the Province code of Alberta).

      • Example: Order from a guest customer shipping to California, USA, will go to the Guest Account Code as defined in the App Store Settings and the Department "CA" (the State code of California).

      • Example: Order from a DDMS account customer shipping to a once-off address in the checkout will use the same Account and Department as the customer is registered to (it does not change based on the ship-to address).

    • If there is no account number assigned to an account (the account number field being blank), orders made by that account will be assigned to the guest account by default. Reason: a DDMS account number is required to sync order info to DDMS, so if this is missing, it reverts to the assigned guest account number.

  • Customer PO

    • Long PO — Used By default

    • Short PO — Used along with Long PO if enabled in the App Store Settings. Limit is 10 characters.

Order Subtotal Discount

EvolutionX order subtotal discounts will be added as a line item when sending the order to DDMS. This discount item should exist in DDMS for use.

When creating your discount item in DDMS, follow the follow rules:

  • Item Company: Item company should be the same as what is configured in the appstore for SKU prefix (see here). For example "OCU"

  • Item Number: The item number should be "DISCOUNT"

Contract Pricing From DDMS

With the DDMSPLUS app installed, dealers can create a DDMS contract in EvolutionX, which would import the items and pricing of that contract from DDMSPLUS to be used on their EvolutionX storefront.

N.B: Contract pricing import requires DDMSPLUS release 3.48 and above. Also, contracts to be synced must exist in DDMSPLUS and have items in it.

Creating New DDMS Contract Pricing

On EvolutionX Admin, click PricingNew Pricing. For dealers with the DDMSPLUS app installed, clicking the "New Pricing" button brings two options, New EvolutionX Pricing & New DDMS Contract Pricing. Select the New DDMS Contract Pricing option

On the New DDMS Contract Pricing page, you will see the following fields:

⚠️Note: The fields set in EvolutionX contract pricing page much match exactly to those set in DDMS. For example - if you have an account number associated with the price plan in DDMS, you must also enter this into the setup in EvolutionX or a match will not be found.

  • Price Plan: The price plan number of the DDMS contract you are importing.

  • Account #: The customer account of the DDMS contract you are importing. This field can be left blank if not applicable.

  • Dept: The department of the DDMS contract you are importing. This field can be left blank if not applicable.

  • Group: The group code of the DDMS contract you are importing. This field can be left blank if not applicable.

  • Start: The start date for when the imported contract should be made available.

  • End: The end date for when the imported contract should be discontinued.

  • Priority: Sets the priority for the imported contract in relations to other pricing rules.

  • Auto Deletion: Sets this toggle to auto delete the contract pricing rule when the end date has elapsed

  • Status: Sets this toggle to enable/disable the contract pricing rule

  • Who Is This For: Use this option to set who the contract pricing rule should be applied for. The options available are:

    • Global: Applies the rule for all accounts and users

    • All Non Account Users: Applies the rule for all users not associated to an account

    • Users: Applies the rule to selected users. can apply to multiple users

    • All Accounts: Applies the rule to all accounts

    • Accounts: Applies the rule to selected accounts. can apply to multiple accounts

    • Guests/Surfers: Applies the rules to guests users

  • Name: The name for the contract pricing rule. This field is auto populated by values provided in the DDMS key fields.

When the fields are filled and the Save button clicked, we first verify if the DDMS configuration fields provided for making the request to DDMSPLUS are correct, and if they are, we create the contract pricing rule then make a live request to DDMSPLUS to get the items in the contract pricing rule and automatically apply the DDMSPLUS items to the contract pricing rule created on EvolutionX

Contract Items Sync Schedule

For DDMS contract pricing rules created, we run a nightly background sync of the contract items to ensure the items in the contract pricing rules are always kept up to date with the items in DDMSPLUS. The nightly sync runs every night at 01:00 UTC.

N.B: For dealers who have updated items on a contract pricing in DDMS and would like to immediately see the changes in their EvolutionX pricing, they can run an on-demand sync by clicking into the pricing rule from their list of pricing rules and click the "Save" button in the pricing rule

Custom Order Field Mapping

With the ECI DDMS App installed, EvolutionX allow dealers set custom field mappings for orders sent to ECI using the API Order submission. To enable the API order submission, read more here

To use the custom order field mapping, click the "Setup Order Mapping" button on the ECI DDMS App

The custom order mapping page shows three rows, Order Header Field, Default and Custom Value.

  • Order Header Field: This row shows the ECI order fields

  • Default: This row shows the default mapping EvolutionX sends to ECI for the corresponding ECI order fields.

  • Custom Value: This row shows the dealer defined custom mapping to be sent to ECI, which will override the default EvolutionX mapping

N.B: Some Custom Value columns are Read Only, which means EvolutionX do no allow setting custom values for such fields

Setup Order Mapping

For ECI order fields that EvolutionX allow custom field mappings on, you will see a "Select Attribute" dropdown on the Custom Value column

The dropdown shows all available EvolutionX order data and dealers can select the order data attribute they want as the custom value to be mapped on the ECI order field

After selecting all the desired custom values, click the "Save Changes" button. Orders sent to ECI after the configuration will map values to the ECI order field using the custom value attribute instead of the EvolutionX default value. For the example, in the image provided above, EvolutionX will map the value of the Alternative PO to the ECI longPONumber instead of using the PO Reference value

Updating/ Removing Custom Order Mapping

Dealers can change their previously configured custom mapping by selecting a new attribute they want as their custom value and click the "Save Changes" button after making updates. Orders sent after the update will use the new custom value.

To remove a previously configured custom mapping, click on the "X" icon on the custom value and click "Save Changes". Orders sent after the configuration will default back to using EvolutionX default mapping for the order mapping to ECI

Order Status Sync

With the ECI DDMS App installed, EvolutionX makes scheduled requests to ECI and automates the update of EvolutionX order status in line with the order's status from ECI. This process is done so EvolutionX can correctly allocate reward points (Reward points are allocated when an order is marked as completed).

N.B: Order status sync is only available for orders processed using the API Order submission. To enable the API order submission, read more here. Using this process automatically issues rewards points or discards them based the DDMS Order status.

Order Status Look Up From ECI

When orders are processed using the API order submission, ECI sends back the order reference number which is then stored as the seller reference of the order.

During the order status lookup process, EvolutionX gets all orders that have seller reference (ECI Order Reference Number) set and order status of "In Progress". It then makes a request to ECI to lookup the order status using the reference number. It maps the retrieved ECI status to the appropriate EvolutionX order status and updates the order status and order timeline accordingly.

Below is a table showing the ECI Order Status - EvolutionX Order Status Mapping

ECI Order Status

EvolutionX Order Status

EvolutionX Status ID

H (Hold)

In Progress

2

O (Open)

In Progress

2

I (Invoiced)

Completed

7

** Not Found

Cancelled

6

** Not Found - Status for EvolutionX order not found on ECI, order cancelled.

Order Status Sync Schedule

The order status sync process runs three times daily:

  • 12:00 UTC

  • 17:00 UTC

  • 23:00 UTC

Requested Delivery Date in EvolutionX Checkout

Dealer can allow users to specify a preferred delivery date for their order by enabling the Requested Delivery Date functionality. When an order is placed with a requested delivery date, EvolutionX will send this date to DDMS.

Users have the freedom to select any date as their requested delivery date, provided it is not a date in the past. To ensure clear communication and manage user expectations effectively, we strongly suggest using trust blocks to highlight any restrictions or limitations on the selectable dates.

This feature is only available for dealers using API Order submission (N.B The ECI API Order submission requires DDMSPLUS release 3.48 and above).

Ship To Addresses in EvolutionX Checkout

Dealer can enable this functionality to pull ship-to addresses for an account and allow the customer choose between the Account Shipping Address and the ship-to addresses for an order's shipping address.

Enable Ship-To Addresses In Checkout

To enable the Ship-To addresses in checkout, go to the DDMS API app on the EvolutionX appstore and enable the toggle "Enable DDMS Ship-To Addresses In Checkout"

When a customer is in checkout, EvolutionX makes a request to DDMS to get the customer addresses to use for checkout (Shipping & Billing Address), and if the ship-to addresses toggle is enabled, EvolutionX will also make an additional request to get the customer ship-to addresses and add to the list of shipping addresses which the customer can select from in checkout

Order Processing To DDMS With Ship-To Address

When an order is placed with the ship-to address selected as the shipping address, EvolutionX only sends the ShipToId attribute to DDMS with the address_id of the selected ship-To address and removes other shipping information attribute when sending the order processing data to DDMS.

Ship-To Address Attentions

Dealers can filter the ship-To Addresses a checkout user can see by using attentions. When an attentionId is assigned to a user, we make the ShipTo request to DDMS filtering it by the attentionId, and DDMS will respond back with only the shipTo address associated with the attentionId.

To set attentions on a user, set the attentionId on the user's seller reference field using the Admin screen or API.

DDMS Cost Center Sync

The DDMS Cost Center Sync allows a 2 way syncing cost center information between EvolutionX and DDMSPLUS. The EvolutionX store will be the owner of the cost centre record but bi-directional sync functionality is included as follows:

  • Cost Centers in DDMSPLUS and changes to these records are pulled only on staff request using EvolutionX. This pull sync is triggered by staff using:

    • App Store Sync

    • EvolutionX Account Save and Sync in EvolutionX Admin

  • EvolutionX Pushing of Cost Center Information to DDMSPLUS is automatic on create, update, and delete of cost centers in EvolutionX.

EvolutionX Pulling of Cost Center Information from DDMSPLUS

This sync process involves EvolutionX making requests to DDMSPLUS to get cost center information for all accounts in EvolutionX(Parent Accounts only).

To trigger this sync process, go to App StoreECI DDMS PLUS APP and click on "Sync Accounts"

The sync account modal has two sync options: Account Only Sync, Account & Cost Center Sync. Select the Account & Cost Center Sync option

This process fires off a background process that pulls the cost center information from DDMS and writes those records to EvolutionX. The sync process cab be monitored using the event logs. You can access the event logs by clicking on the "View Sync Logs" link under the "Sync Accounts" button

N.B: This sync process takes over two hours to be completed and can be more depending on the number of parent accounts available for the dealer. We recommend that this sync process is used as a first time sync of cost center data from DDMSPLUS to EvolutionX and allow EvolutionX be the data source to drive New record creation / update of existing records between EvolutionX and DDMSPLUS (explained in the second sync process below)

EvolutionX Pushing of Cost Center Information to DDMSPLUS

This sync process involves EvolutionX sending cost center information to DDMSPLUS. The process works by listening to cost center events (new cost center creation, cost center update, cost center deletion) in EvolutionX and make the corresponding changes in DDMSPLUS.

The process listens to cost center events across three EvolutionX services:

  • All Cost Center Changes Made From The Dealer's Admin

  • All Cost Center Changes Made From The Dealer's Storefront

  • All Cost Center Changes Made From The API

This process is an automated process and is turned on by default for all dealers.

N.B: We recommend having EvolutionX as the primary data source. After the initial puling of cost center information from DDMSPLUS into evolutionX, all subsequent cost center changes should be done from EvolutionX and this process will ensure data reconciliation with DDMSPLUS.

DDMS Order Mapping For Items Cost Center

During checkout, users can now select cost centers for each item on the order and EvolutionX will send the item cost center information to DDMS during submission of order into DDMSPLUS

Live Invoice view

EvoX pulls invoices from ECI and makes it available on the storefront.

The visibility of the invoice screen is controlled by roles.

Live invoice records gotten from ECI is filtered only by the account number. If active on a Users Role, they will see all Invoices for all accounts and its departments.

Live Invoice Payment

Live invoices can be paid by the users using the EvolutionX invoice checkout. A payment method that supports invoice Payments should be used to activate this feature. The payment status of the invoices will be sent to DDMS so their status can be set as paid.

Live Order view

EvoX also pulls order history from ECI. The visibility of the orders is also controlled by roles.

"View" allows a user to see orders for the account or department they are currently logged into.

"View All" will allow them to see (If they are a user of a parent account) the filter dropdown that enables viewing of all orders from all departments.

All users in the parent accounts can see orders for the parent account and if selected, can also see orders from the child accounts. Users in the child account however, can only see orders for the child account

Live Inventory and Live Pricing Setup

Steps required on Admin to enable live inventory lookup for your store:

  1. Enable Inventory in Admin → Products → Inventory → Settings

    1. Only global settings are required.

  2. Edit your supplier in Suppliers and add a default location, seller reference in the location must be set for 'default'

Store Settings

  1. In Admin → Store Settings → General → Store Preferences, in section Live Pricing

    1. Select the Provider DDMS

    2. Enable toggle Live Pricing

    3. Set the default GL Ledger (99 will be used if empty)

    4. Enable toggle Live Inventory

    5. In Inventory Endpoint URL add your url:

      https://api.ecinteractiveplus.com/products/

      or

      https://api.ecinteractiveplus.com/products/itemStockList
    6. In Global Account add the account number for guest users.

    7. The Token is the same for Live pricing and Live Inventory. It is a string combinging your credentials with periods between each, like this: [ECI API ID].[ECI CONSUMER ID].[ECI SITE ID]

      1. An example for

        ECI API ID = 00000000-1111-AAAA-BBBB-CCCC22223333DDDD

        ECI CONSUMER ID = 444444-5555-EEEE-FFFF-6666GGGGHHHH

        ECI SITE ID = 99999999-ZZZZ-YYYY-8888-A1B1C1D1E1F1


        Your token would be:
        00000000-1111-AAAA-BBBB-CCCC22223333DDDD.444444-5555-EEEE-FFFF-6666GGGGHHHH.99999999-ZZZZ-YYYY-8888-A1B1C1D1E1F1

    8. Save

Live inventory endpoint options:

You can set your live inventory endpoint in two ways:

  1. Get products/ endpoint: This setting will retrieve your own inventory count from DDMS without reading inventory counts from other suppliers.

    https://api.ecinteractiveplus.com/products/

  2. Get products/itemStockList endpoint:

    Use this setting if you want to include a combined quantity from DDMSPLUS which incudes Own and Supplier counts. The quantities returned are dependent on the dealer’s DDMSPLUS settings and will be combined into one total for each item.

    There are DDMS settings for the following that a dealer can enable:

    • Dealer’s on hand quantity for the location requested.

    • Dealer’s on hand quantity combined for all locations.

    • Wholesalers’ quantity (can be multiple wholesalers each having multiple facilities). Note: These are live calls to the wholesaler through PSN.

    https://api.ecinteractiveplus.com/products/itemStockList

The endpoint uses the following fields as filters:

  1. gl_location: This filter represents the general ledger location. The current default value for this field is '99'.

  2. inventory_location: This filter is used to specify the location of the inventory. The current default value for this field is '1'.

  3. is_drop_ship: This filter indicates whether the item is a drop-ship item or not. The current default value for this field is 'False'.

  4. ship_to_zip_code: This filter represents the zip code of the customer's branch.

Live Search for product aliases

Searching for a product on an EvoX store with DDMS installed will automatically look for aliases.

Example: A product with the SKU TEST123 that has the alias ABC123 associated to an account will be found when a customer from that account searches for ABC123.

An alias created at the vendor level can also be found.

A search for a word, if found as an alias from DDMS will be replaced for the equivalent SKU and then found in the catalog.

👉 Please note:

  • The searched word must be an exact match to the alias.

  • By default, search for aliases for guest users is disabled. To perform searches for vendor aliases for guest users, enable the toggle Enable Vendor Alias Search for Guest Users in the Admin App Store

  • Product aliases are not displayed in the storefront, if a customer wishes to display product aliases, they must be loaded in the EvoX module Customer Product Codes (Alias).

Search for aliases will not run under the following scenarios:

  • The search term has more than 15 characters.

  • A user is not signed in and toggle Enable Vendor Alias Search for Guest Users in the Admin App Store is disabled.

  • A user is signed in but the account number is missing from the account associated to the user logged in (and the toggle above is disabled).

  • A crawler is performing the search.

Adding off catalog items to the cart from Quick Order

When live pricing is set up, the quick order module for DDMS will allow the adding off catalog items to the cart. If a SKU is entered and found in the live pricing response, it will be added to the quick order list, regardless of whether it exists in the catalog.

These items will be added to the list using the SKU as the name. Pack and price will be provided by the live pricing response.

Frequently Asked Questions (FAQ)

Why is my Customer Account or Department isn't updating when I save it and sync in EvolutionX?

DDMS stores customer account and department data in two places and when new records are added or updated it is important to run a Sync of data from Insight DB to MySql. When you save or run a sync of customers and department in EvolutionX, we read that data from the MySql database. If the MySQL is not up-to-date with the data from InSight DB then it causes this issue. You can also schedule this to happen on a schedule. Contact DDMSPLUS support for help with this.

Does DDMS integration have live inventory?

Yes, Live Inventory can be configured using the instructions above. Note that live inventory will only use the inventory quantity delivered by DDMSPLUS. DDMS can be configured to return a value which is combined from multiple sources, contact DDMS support for assistance.

Are automated item swaps/subs supported?

Yes, there is limited support for item swaps and subs. Currently, during the Live Price check on product list pages, DDMS swaps are checked and will change the "add to cart" behaviour and quick order in EvolutionX (quick order will replace forced swaps automatically for when adding products either manually or via csv import).

Live swaps are not checked and not supported in:

  • restore saved cart (an item in a saved cart had no swap, meanwhile the item became a forced swap, restoring the cart will not swap this item)

  • quote 2.0 - add to cart from quote - live swap check isn't being validated

Note that there are other subs features in DDMS and ECPLUS that are not yet supported directly but have support in the EvolutionX admin.

How does a DDMS Force Swaps work in EvolutionX?

EvolutionX loads the original product on the screen and does a live price lookup. If the product is a hard swap then we set the price of the original item based on the alternative product. The hard swap product is only seen when the user clicks add-to-cart.

Hard Swap is based on the following DDMS response swap types:

  • DDMS swap type 2 — Forced by reference

  • DDMS swap type 3 — Forced due to discontinued product

  • DDMS swap type 4 — Forced while out of stock

    • Note that EvolutionX does not determine if the item is out of stock for this forced swap, this is done by DDMS.

What happens with order over credit limits in DDMS?

EvolutionX will only use the credit enabled status to determine if an order can be taken on account. This is controlled by the DDMS field Status O/E as described above. If an order is over the credit limit it will be sent to DDMSPLUS and then it is handled under existing features of the ERP.

Is the Credit Account toggle controlled via the integration and what logic in DDMS controls the field?

The EvolutionX credit enabled status is controlled by the DDMS field Status O/E as described above. If an order is over the credit limit it will be sent to DDMSPLUS and then it is handled under existing features of the ERP.

Is a self registered user or a self registered business account supported with the integration to DDMSPLUS?

No, self registration is not supported. This would require a new feature which supports a customer account or user on the website which has no matching account in the ERP. A DDMSPLUS customer account must exist, then a web user can be created and invited. Until then they can only shop as a guest. Registration is only supported as an email form request to staff.

How does the rewards program work when using DDMSPLUS integration?

Reward points (loyalty points) are pending until the EvolutionX order is updated to a status of "Completed" or "Cancelled" which causes the point to be added to the customer balance or discarded.

If you are processing orders using the API order process, then EvolutionX automatically checks DDMS nightly and updates the order status. Note that this is only done for orders that have an EvolutionX order status of "In Progress". Points are there for only added or discarded once per order.

If you are using the eprocurement setup for order processing (check your app store settings), and you implement a rewards program, you will need to update order status either daily or weekly to apply the points. You will need to use the Admin order list page to select all orders placed and change their status to "Completed". Here is the procedure:

  1. Update any web orders which were cancelled so they are "cancelled" status on EvolutionX. This will discard their points.

  2. Filter all remaining orders that have an "In Progress" status and then select all and update them to "Completed". This will allocate their points.

  3. Make manual adjustments to any customers who had partial returns or order edits if you want them to receive more or less points than on the original order.

Live Price Doesn't Provide a Price Even When It Should

Check if you have a hard sub configured for the item. In the live price call if a hard sub is configured the sub'd item number is returned in the live price request and doesn't match the item in the request. Due to this un-matching, the live price will not be displayed. You can use the Live Price lookup tool to identify this by requesting the logs and viewing the response logs such as the example below.

I've Added Pricing to a New Product and the Price is Failing to Show on the Website

Usually it is immediate, but the dealer may need to run what we call an EBS import to update the SQL tables, but they should have an automated schedule for that approx. every 5 minutes. DDMS support can validate the timing of the schedule and update if needed, to a more frequent schedule.

My discounts aren't working?

First, read this part of the article. If you have put through a test order you can look to see if you have "Invalid item #", this means you didn't setup the discount code correctly in DDMS.

Check the order event:

Step 1

Step 2

Step 3

Step 4

If you see Invalid item # then you need to setup the item code properly in DDMS. Discount Setup

How does Customer Sync update the customer credit enabled and override add to cart values?

When the customer sync runs and creates an account it sets both credit enabled and override add to cart based on defaults. The credit enabled flag is later checked as a live lookup in checkout but in Admin it would always appear off.

The override add to cart setting of a customer record can be set to on if you want to prevent ordering on the parent account. This setting is not adjusted during the customer update sync, only on creation of the customer record. You can safely enable this and the add to cart button will not appear when a user is in the parent account. Note that the DDMS field PO Required, with a value of "D", would normally be expected to have this result but it is not yet supported in the DDMS API.

How do I authorize payment on the web but capture the payments in DDMS? (DDMS Integrated Payments)

This can be done through the Net1 Payment integration. Contact our support team to get more on details on the Net1 Payment Integration setup.

How it works

Net1 (Paya Connect integrated with DDMS). When an order is placed it will tokenise the card and send it with the order but DDMS will do the pre-auth and charge. This change switches you from a "third-party" setup to the DDMS integrated setup.

Install the App

Then enable the Payment and Set to Preauth and Capture later

Now orders will show Preauth status when they arrive but will be captured inside DDMS

How can I hide the Terms from Orders PDF?

To hide the "Terms" from Contact Details section in Orders PDF, follow these steps:

  1. Go to EvolutionX Admin → Store Settings → Checkout

  2. In the Print Order - Footer section, click on Tools → Source code

  3. Paste the following code there

<style>
.pdf-header-terms {
display: none;
}
</style>

Is it possible to make Requested Delivery Date a required field on Checkout?

No. This feature is not supported by DDMS. The Requested Delivery Date feature, when enabled, introduces a 'Requested Delivery Date' field in the 'Review & Pay' section of the checkout process, but users have the option to leave this field blank.

Did this answer your question?