Requests & Responses

Out of the box, Integration Framework v.2 has the following features:

Batch Integration:

  • Import Currencies
  • Import Languages
  • Import Units
  • Import Manufacturers
  • Import Customers
  • Import Product Groups
  • Import Products
  • Import Related Products
  • Import Prices
  • Import Product Stock
  • Import Orders
  • Export Orders

Live Integration:

  • Live prices stock
  • Live calculation of orders

In terms of the data flow, both batch and live integrations features work in the same general manner:

  • Dynamicweb sends a request for data 
  • The request is relayed to the remote system by the Dynamicweb Connector service
  • Data is returned as a response

While the request XML can vary slightly depending on the remote system, the response XML always follows the same general structure:

XML
<?xml version="1.0" encoding="utf-8"?> <tables> <table tableName="Table1"> <item table="Table1"> <column columnName="Column1"><![CDATA[5]]></column> <column columnName="Column2" isNull="true"/> <column columnName="Column3"><![CDATA[James]]></column> </item> </table> <table tableName="Table2"> <item table="Table2"> <column columnName="Column1"><![CDATA[7913]]></column> <column columnName="Column2"><![CDATA[VIP]]></column> </item> </table> </tables>

See below for examples of standard requests and standard replies for the Integration Framework v.2 features.

With the Import Currencies Job and Task you can bring over the system currency from your remote system to Dynamicweb. Please note that no other currencies but the system currency are currently transferred.

Standard request:

XML
<GetEcomData> <tables> <Currencies type="all"/> </tables> </GetEcomData>

Standard response: 

XML
<?xml version="1.0" encoding="utf-8"?> <tables> <table tableName="EcomCurrencies"> <item table="EcomCurrencies"> <column columnName="CurrencyCode"><![CDATA[USD]]></column> <column columnName="CurrencyName"><![CDATA[US Dollar]]></column> <column columnName="CurrencyLanguageId"><![CDATA[en-us]]></column> <column columnName="CurrencySymbol"><![CDATA[$]]></column> <column columnName="CurrencyRate"><![CDATA[100]]></column> </item> </table> </tables>

The only mandatory column is CurrencyCode (EUR, DKK, etc.).

With the Import Languages Job and Task you can bring over a language from your remote system to Dynamicweb. The language transferred is the default language selected when installing the code unit in your ERP system.

Standard request:

XML
<GetEcomData> <tables> <Languages type="all"/> </tables> </GetEcomData>

Standard response:

XML
<?xml version="1.0" encoding="utf-8"?> <tables> <table tableName="EcomLanguages"> <item table="EcomLanguages"> <column columnName="LanguageId"><![CDATA[en-us]]></column> <column columnName="LanguageCode2"><![CDATA[US]]></column> <column columnName="LanguageNativeName"><![CDATA[English]]></column> <column columnName="LanguageName"><![CDATA[English]]></column> </item> </table> </tables>

Product units – e.g. pieces, boxes or boatloads – can also be imported and synchronized between the ERP and the Dynamicweb solution.

Standard request:

XML
<GetEcomData> <tables> <Units type="all"/> </tables> </GetEcomData>

Standard response:

XML
<?xml version="1.0" encoding="utf-8"?> <tables batchId="{9620FFC9-F952-41AB-8A51-FBFB63861101}"> <table tableName="EcomVariantsGroups"> <item table="EcomVariantGroups"> <column columnName="VariantGroupId"><![CDATA[AxUnits]]></column> <column columnName="VariantGroupLanguageId"><![CDATA[en-us]]></column> <column columnName="VariantGroupName"><![CDATA[AX Units]]></column> <column columnName="VariantGroupLabel"><![CDATA[]]></column> <column columnName="VariantGroupUnit"><![CDATA[True]]></column> </item> </table> <table tableName="EcomVariantsOptions"> <item table="EcomVariantsOptions"> <column columnName="VariantOptionId"><![CDATA[22565422198]]></column> <column columnName="VariantOptionLanguageId"><![CDATA[en-us]]></column> <column columnName="VariantOptionGroupId"><![CDATA[AxUnits]]></column> <column columnName="VariantOptionName"><![CDATA[Option]]></column> </item> <item table="EcomVariantsOptions"> <column columnName="VariantOptionId"><![CDATA[22565423700]]></column> <column columnName="VariantOptionLanguageId"><![CDATA[en-us]]></column> <column columnName="VariantOptionGroupId"><![CDATA[AxUnits]]></column> <column columnName="VariantOptionName"><![CDATA[Ph]]></column> </item> </table> </tables>

With the Import Manufacturers feature you can bring over manufacturers from your remote system to Dynamicweb. Products can then be associated with these manufacturers, which enables you to show manufacturer data (such as a name, web site and phone number) along with the product.

Standard request:

XML
<GetEcomData> <tables> <Manufacturers type="all"/> </tables> </GetEcomData>

Standard response:

XML
<?xml version="1.0" encoding="utf-8"?> <tables batchId="{F5ECCC2B-C09A-43A3-BD79-CBF017F01842}"> <table tableName="EcomManufacturers"> <item table="EcomManufacturers"> <column columnName="ManufacturerId"><![CDATA[US-102]]></column> <column columnName="ManufacturerName"><![CDATA[Tailspin Parts]]></column> <column columnName="ManufacturerAddress"><![CDATA[234 Eleventh Street Marietta, GA 30008 USA]]></column> <column columnName="ManufacturerZipCode"><![CDATA[30008]]></column> <column columnName="ManufacturerCity"><![CDATA[Marietta]]></column> <column columnName="ManufacturerCountry"><![CDATA[USA]]></column> <column columnName="ManufacturerPhone"><![CDATA[341-555-0124]]></column> <column columnName="ManufacturerFax"><![CDATA[]]></column> <column columnName="ManufacturerEmail"><![CDATA[]]></column> <column columnName="ManufacturerWeb"><![CDATA[]]></column> </item> </table> </tables>

With the Import Customers feature you can bring over customers from your remote system to Dynamicweb. Imported customers can then place orders. Impersonation is currently not implemented which means that a Customer / Company is the same as a User / Login.

Standard request:

XML
<GetEcomData> <tables> <Customers type="all"/> </tables> </GetEcomData>

Standard response:

XML
<?xml version="1.0" encoding="utf-8"?> <tables batchId="{1B532C48-0DB5-4F6E-B67F-4F346AB73087}"> <table tableName="AccessUser"> <item table="AccessUser"> <column columnName="AccessUserExternalId"><![CDATA[US-011]]></column> <column columnName="AccessUserCustomerNumber"><![CDATA[US-011]]></column> <column columnName="AccessUserUserName"><![CDATA[US-011]]></column> <column columnName="AccessUserType"><![CDATA[5]]></column> <column columnName="AccessUserName"><![CDATA[Contoso Retail Dallas]]></column> <column columnName="AccessUserCompany"><![CDATA[Contoso Retail Dallas]]></column> <column columnName="AccessUserFirstName"><![CDATA[]]></column> <column columnName="AccessUserMiddleName"><![CDATA[]]></column> <column columnName="AccessUserLastName"><![CDATA[]]></column> <column columnName="AccessUserAddress"><![CDATA[789 Orange Street Irving]]></column> <column columnName="AccessUserAddress2"><![CDATA[]]></column> <column columnName="AccessUserHouseNumber"><![CDATA[]]></column> <column columnName="AccessUserCity"><![CDATA[Irving]]></column> <column columnName="AccessUserState"><![CDATA[TX]]></column> <column columnName="AccessUserCountryCode"><![CDATA[US]]></column> <column columnName="AccessUserCountry"><![CDATA[United States]]></column> <column columnName="AccessUserZip"><![CDATA[75063]]></column> <column columnName="AccessUserEmail"><![CDATA[]]></column> <column columnName="AccessUserPhone"><![CDATA[123-555-0117]]></column> <column columnName="AccessUserFax"><![CDATA[]]></column> <column columnName="AccessUserVatRegNumber"><![CDATA[]]></column> <column columnName="AccessUserActive"><![CDATA[true]]></column> </item> </table> <table tableName="AccessUserAddress"> <item table="AccessUserAddress"> <column columnName="AccessUserAddressCallName"><![CDATA[Contoso Retail Dallas - Delivery]]></column> <column columnName="AccessUserAddressCompany"><![CDATA[Contoso Entertainment System USA]]></column> <column columnName="AccessUserAddressName"><![CDATA[Contoso Retail Dallas - Delivery]]></column> <column columnName="AccessUserAddressAddress"><![CDATA[1234 Street name]]></column> <column columnName="AccessUserAddressAddress2"><![CDATA[]]></column> <column columnName="AccessUserAddressZip"><![CDATA[99999]]></column> <column columnName="AccessUserAddressCity"><![CDATA[Irving]]></column> <column columnName="AccessUserAddressCountry"><![CDATA[United States]]></column> <column columnName="AccessUserAddressPhone"><![CDATA[]]></column> <column columnName="AccessUserAddressFax"><![CDATA[]]></column> <column columnName="AccessUserAddressEmail"><![CDATA[]]></column> <column columnName="AccessUserAddressCustomerNumber"><![CDATA[US-011]]></column> <column columnName="AccessUserAddressUId"><![CDATA[68719499596]]></column> <column columnName="AccessUserAddressState"><![CDATA[TX]]></column> <column columnName="AccessUserAddressCountryCode"><![CDATA[US]]></column> <column columnName="AccessUserAddressUserId"><![CDATA[US-011]]></column> </item> </table> </tables>

With the Import Product Groups feature you can bring over product groups from your remote system to Dynamicweb. Imported groups are used to categorize your products in the backend and frontend (although the two don’t need to match).

Standard request:

XML
<GetEcomData> <tables> <ProductGroups type="all"/> </tables> </GetEcomData>

Standard response:

XML
<?xml version="1.0" encoding="utf-8"?> <tables batchId="{42B57240-4F38-4BE7-A0CE-6E9A19880F3E}"> <table tableName="EcomGroups"> <item table="EcomGroups"> <column columnName="GroupId"><![CDATA[22565420921]]></column> <column columnName="GroupLanguageId"><![CDATA[en-us]]></column> <column columnName="GroupName"><![CDATA[Home audio]]></column> <column columnName="ParentGroups"><![CDATA[]]></column> </item> </table> </tables>

With the Import Products feature you can bring over ecommerce products from your remote system to Dynamicweb. These products can then be assigned to the product groups as imported using the Import Product Groups job and task, as well as to other groups that have not been imported (to create a marketing focused product hierarchy for example).

This endpoint also returns Product Category Field values.

Standard request:

XML
<GetEcomData> <tables> <Products type="all"/> </tables> </GetEcomData>

Standard response:

XML
<?xml version="1.0" encoding="utf-8"?> <tables batchId="{730F14F3-FC64-4721-9871-9447E3E911C5}"> <table tableName="EcomProducts"> <item table="EcomProducts"> <column columnName="ProductId"><![CDATA[D0005]]></column> <column columnName="ProductVariantId"><![CDATA[]]></column> <column columnName="ProductLanguageId"><![CDATA[en-us]]></column> <column columnName="ProductNumber"><![CDATA[D0005]]></column> <column columnName="ProductName"><![CDATA[Car Audio System]]></column> <column columnName="ProductLongDescription"><![CDATA[]]></column> <column columnName="ProductWeight"><![CDATA[0.00]]></column> <column columnName="ProductVolume"><![CDATA[0.00]]></column> <column columnName="ProductDefaultUnitId"><![CDATA[22565421199]]></column> <column columnName="Discontinued"><![CDATA[FALSE]]></column> <column columnName="ProductActive"><![CDATA[TRUE]]></column> <column columnName="ReplacementProductNumber"><![CDATA[]]></column> <column columnName="PrimaryGroup"><![CDATA[]]></column> <column columnName="Groups"><![CDATA[22565420925]]></column> <column columnName="ProductPrice"><![CDATA[0.00]]></column> <column columnName="ProductCost"><![CDATA[198.33]]></column> <column columnName="ProductManufacturerId"><![CDATA[US-104]]></column> <column columnName="ProductStock"><![CDATA[0.00]]></column> </item> <item table="EcomProducts"> <column columnName="ProductId"><![CDATA[T0001]]></column> <column columnName="ProductVariantId"><![CDATA[]]></column> <column columnName="ProductLanguageId"><![CDATA[en-us]]></column> <column columnName="ProductNumber"><![CDATA[T0001]]></column> <column columnName="ProductName"><![CDATA[SpeakerCable]]></column> <column columnName="ProductLongDescription"><![CDATA[]]></column> <column columnName="ProductWeight"><![CDATA[0.00]]></column> <column columnName="ProductVolume"><![CDATA[0.00]]></column> <column columnName="ProductDefaultUnitId"><![CDATA[22565421199]]></column> <column columnName="Discontinued"><![CDATA[FALSE]]></column> <column columnName="ProductActive"><![CDATA[TRUE]]></column> <column columnName="ReplacementProductNumber"><![CDATA[]]></column> <column columnName="PrimaryGroup"><![CDATA[]]></column> <column columnName="Groups"><![CDATA[22565420923]]></column> <column columnName="ProductPrice"><![CDATA[0.00]]></column> <column columnName="ProductCost"><![CDATA[300.00]]></column> <column columnName="ProductManufacturerId"><![CDATA[US-103]]></column> <column columnName="ProductStock"><![CDATA[240.00]]></column> </item> </table> <table tableName="EcomProductCategoryFieldValue"> <item table="EcomProductCategoryFieldValue"> <column columnName="FieldValueFieldId"><![CDATA[Weight]]></column> <column columnName="FieldValueFieldCategoryId"><![CDATA[Tractors]]></column> <column columnName="FieldValueProductId"><![CDATA[D0005]]></column> <column columnName="FieldValueProductVariantId"><![CDATA[]]></column> <column columnName="FieldValueProductLanguageId"><![CDATA[en-us]]></column> <column columnName="FieldValueValue"><![CDATA[123.45]]></column> </item> </table> </tables>

With the Import Related Products Job and Task you can bring over related products from your remote system to Dynamicweb.

Standard request:

XML
<GetEcomData> <tables> <RelatedProducts type="all"/> </tables> </GetEcomData>

Standard response:

XML
<?xml version="1.0" encoding="utf-8"?> <tables batchId="{F2670AB1-FF90-4FA6-A911-7275E4977DCE}"> <table tableName="EcomProductsRelated"> <item table="EcomProductsRelated"> <column columnName="ProductRelatedProductId"><![CDATA[D0001]]></column> <column columnName="ProductRelatedProductRelId"><![CDATA[D0003]]></column> <column columnName="ProductRelatedGroupId"><![CDATA[FBT1]]></column> <column columnName="ProductRelatedSortOrder"><![CDATA[0]]></column> </item> <item table="EcomProductsRelated"> <column columnName="ProductRelatedProductId"><![CDATA[D0001]]></column> <column columnName="ProductRelatedProductRelId"><![CDATA[D0005]]></column> <column columnName="ProductRelatedGroupId"><![CDATA[FBT1]]></column> <column columnName="ProductRelatedSortOrder"><![CDATA[0]]></column> </item> </table> </tables>

With the Import Prices feature you can bring over the current prices for your ecommerce products from your remote system to Dynamicweb. The setup of the endpoint, data integration job and scheduled task is very similar to those for products. The big difference is that the prices endpoint has been optimized for speed, so you can run it more frequently. It’s optimized by only returning the data needed to update a price and doesn’t bring back other data such as the product name, description, custom fields etc.

Prices are returned in a single currency - the System Currency of your ERP system. If you need prices in the currency specified by a customer’s trade agreement in the ERP system, then you must use price requests in the Live Integration.

Standard request:

XML
<GetEcomData> <tables> <ProductPrices type="all" /> </tables> </GetEcomData>

Standard response:

XML
<?xml version="1.0" encoding="utf-8"?> <tables batchId="{1AE6FEA5-DEF9-432B-BE8B-A9807DF5BFAB}"> <table tableName="EcomProducts"> <item table="EcomProducts"> <column columnName="ProductId"><![CDATA[T0004]]></column> <column columnName="ProductVariantId"><![CDATA[]]></column> <column columnName="ProductLanguageId"><![CDATA[en-us]]></column> <column columnName="ProductNumber"><![CDATA[T0004]]></column> <column columnName="ProductPrice"><![CDATA[350.00]]></column> <column columnName="ProductCost"><![CDATA[160.00]]></column> </item> </table> </tables>

With the Import Product Stock feature you can bring over the current stock levels for your ecommerce products from your remote system to Dynamicweb. The setup of the endpoint, data integration job and scheduled task is very similar to those for products. The big difference is that the stock endpoint - just like the Product Prices endpoint - has been optimized for speed so you can run it more frequently.

Standard request:

XML
<GetEcomData> <tables> <ProductStock type="all" /> </tables> </GetEcomData>

Standard response:

XML
<?xml version="1.0" encoding="utf-8"?> <tables batchId="{CED00060-BC6F-4564-9C8B-5F064E816AAD}"> <table tableName="EcomProducts"> <item table="EcomProducts"> <column columnName="ProductId"><![CDATA[L0001]]></column> <column columnName="ProductVariantId"><![CDATA[]]></column> <column columnName="ProductLanguageId"><![CDATA[en-us]]></column> <column columnName="ProductNumber"><![CDATA[L0001]]></column> <column columnName="ProductStock"><![CDATA[0.00]]></column> </item> </table> </tables>

With the Import Orders feature you can bring over up-to-date information about your orders from your remote system to Dynamicweb. This is often used to bring over information such as the track and trace code from the shipping provider. Another common scenario is to import orders that were never placed through Dynamicweb, so the customer can see a full order history of web orders and other orders in the customer center.

Standard request:

XML
<GetEcomData> <tables> <SalesHeaders type="all"/> </tables> </GetEcomData>

Standard response:

XML
<?xml version="1.0" encoding="utf-8"?> <tables batchId="{53237F99-27A9-42A2-90AF-330F142B0B1E}"> <table tableName="EcomOrders"> <item table="EcomOrders"> <column columnName="OrderCreated"><![CDATA[TRUE]]></column> <column columnName="OrderComplete"><![CDATA[TRUE]]></column> <column columnName="OrderIntegrationOrderId"><![CDATA[000773]]></column> <column columnName="OrderId"><![CDATA[000773]]></column> <column columnName="OrderShopId"><![CDATA[]]></column> <column columnName="OrderCurrencyCode"><![CDATA[EUR]]></column> <column columnName="OrderDate"><![CDATA[2017-01-23T14:02:35]]></column> <column columnName="OrderIsLedgerEntry"><![CDATA[False]]></column> <column columnName="OrderPaymentMethod"><![CDATA[]]></column> <column columnName="OrderShippingMethodId"><![CDATA[Ocean]]></column> <column columnName="OrderShippingMethodName"><![CDATA[]]></column> <column columnName="OrderCustomerNumber"><![CDATA[DE-001]]></column> <column columnName="OrderCustomerEmail"><![CDATA[contoso.europe@vendor8.consolidatedmessenger.com]]></column> <column columnName="OrderCustomerFax"><![CDATA[]]></column> <column columnName="OrderCustomerPhone"><![CDATA[01234 56789]]></column> <column columnName="OrderDeliveryEmail"><![CDATA[]]></column> <column columnName="OrderDeliveryPhone"><![CDATA[]]></column> <column columnName="OrderDeliveryFax"><![CDATA[]]></column> <column columnName="OrderCustomerName"><![CDATA[Contoso Europe]]></column> <column columnName="OrderDeliveryAddress"><![CDATA[Bahnhofstrasse 5]]></column> <column columnName="OrderDeliveryAddress2"><![CDATA[]]></column> <column columnName="OrderDeliveryHouseNumber"><![CDATA[]]></column> <column columnName="OrderDeliveryCity"><![CDATA[Berlin]]></column> <column columnName="OrderDeliveryState"><![CDATA[]]></column> <column columnName="OrderDeliveryCountryCode"><![CDATA[DE]]></column> <column columnName="OrderDeliveryCountry"><![CDATA[Germany]]></column> <column columnName="OrderDeliveryZip"><![CDATA[79539]]></column> <column columnName="OrderDeliveryName"><![CDATA[Contoso Europe]]></column> <column columnName="OrderShippingFee"><![CDATA[0.00]]></column> <column columnName="OrderShippingFeeWithVat"><![CDATA[0.00]]></column> <column columnName="OrderShippingFeeWithoutVat"><![CDATA[0.00]]></column> <column columnName="OrderPriceWithVat"><![CDATA[0.00]]></column> <column columnName="OrderPriceWithoutVat"><![CDATA[0.00]]></column> <column columnName="OrderPriceBeforeFeesWithVat"><![CDATA[0.00]]></column> <column columnName="OrderPriceBeforeFeesWithoutVat"><![CDATA[0.00]]></column> </item> </table> <table tableName="EcomOrderLines"> <item table="EcomOrderLines"> <column columnName="OrderLineOrderId"><![CDATA[000773]]></column> <column columnName="OrderLineId"><![CDATA[5637146549]]></column> <column columnName="OrderLineParentLineId"><![CDATA[]]></column> <column columnName="OrderLineProductId"><![CDATA[L0001]]></column> <column columnName="OrderLineProductNumber"><![CDATA[L0001]]></column> <column columnName="OrderLineProductName"><![CDATA[Mid-Range Speaker 2]]></column> <column columnName="OrderLineProductVariantId"><![CDATA[]]></column> <column columnName="OrderLineQuantity"><![CDATA[5.00]]></column> <column columnName="OrderLineType"><![CDATA[0]]></column> <column columnName="OrderLinePriceWithoutVat"><![CDATA[2500.00]]></column> <column columnName="OrderLineUnitPriceWithoutVat"><![CDATA[500.00]]></column> <column columnName="OrderLinePriceWithVat"><![CDATA[2600.00]]></column> <column columnName="OrderLineUnitPriceWithVat"><![CDATA[520.00]]></column> <column columnName="OrderLinePriceVat"><![CDATA[100.00]]></column> <column columnName="OrderLineUnitPriceVat"><![CDATA[20.00]]></column> <column columnName="NetPrice"><![CDATA[500.00]]></column> <column columnName="OrderLineTypeName"><![CDATA[Product]]></column> <column columnName="OrderLineBom"><![CDATA[FALSE]]></column> <column columnName="OrderLineBomItemId"><![CDATA[]]></column> <column columnName="OrderLineGiftCardCode"><![CDATA[]]></column> <column columnName="OrderLineIsGiftCardDiscount"><![CDATA[FALSE]]></column> <column columnName="OrderLineFieldValues"><![CDATA[]]></column> </item> </table> </tables>

XML attributes are used by both batch integration add-ins and the live integration to trigger a particular behavior on the remote side or in the Connectors, such as batch sizes, reimports, and so on.

Some attributes may have to be added manually to your request, depending on the integration architecture.

Here is a (partial) list of attributes and what they are used for:

Attribute

Values

Use

CustomModifier

Any string

When two instances of a website point to one remote instance, this attribute allows the data to be synchronized independently.