LS Retail

LS Retail is a developer of point-of-sale software used by retailers and restaurateurs in more than 130 countries.

An integration between Dynamicweb and LS Retail consists of communicating with LS Nav via the LS Omni web api, on a schedule or in real-time depening on the feature.

An integration between LS Retail and Dynamicweb makes it possible to...

  • Allow customers to use Click & Collect (buy products online, collect them in brick and mortar stores)
  • Show brick and mortar store location on a (Google) map
  • Show if a product is in-stock at a specific location
  • Let Loyalty Club members earn and spend loyalty points either online or in stores
  • Give special offers to Loyalty Club members
  • Synchronize discounts such as Multibuy or Mix & Match between online shops and physical stores
  • Allow Loyalty Club members to sign up online
  • Allow customers to view previous orders online, including those placed in physical locations
  • Create email marketing campaigns based on both online and offline behavior

This article is a step by step guide to setting up an integration between a Dynamicweb 9.4.X solution with a Rapido 2.0 frontend and LS Retail – if used with other frontends you should plan for more development time. Please also note:

  • You must have a working LS Omni installation
  • The server which hosts your DW solution must have access to the service exposed by the LS Omni server

The LS Retail-Dynamicweb integration is dependent on a set of custom fields, a specific item type, and a content page with a particular name being present on the solution:

  • Go to Settings > Ecommerce > Orders > Order fields and create a new order field called ClickAndCollectStore – use the Text(255) field type.
  • Go to Settings > Control Panel > Users > Edit Custom Fields and create a new user field called called e.g. CardID, with the system name AccessUser_CardID and the Text(255) field type.
  • Download the Stores item type and upload it to the Files/System/Items folder
  • In the content tree, create a hidden page called Stores – this page will be used as a container for imported store items
  • Any custom properties from LS that you want to use must be created as product fields in Dynamicweb.

After completing these steps:

  • Download the LS Retail dll from the Downloads section
  • Copy it to the solution /bin folder

Finally, an LS Retail discount type must be created– this allows discounts from LS Omni to be applied when a cart is calculated or an order is placed

Create the LS Retail discount:

  • Go to Ecommerce > Discounts and create a new discount
  • Name it and check the Active checkbox
  • Clear the Date to field – this discount should always be active
  • In the Type dropdown, select the LS Retail discount type
  • Save

Once the infrastructure for placing data in is in place, the jobs which place data in Dynamicweb must be created. We’ve preconfigured three import activities which can be used in most scenarios:

  • Download the LS data integration jobs and extract them, then upload them to /Files/Integration/Jobs – if the folder does not exist, creating an integration job will generate it
  • Open the LsStoreImport job and edit the destination settings – verify that the Stores page you created is selected as the new item roots page
  • Open the LsUserImport job and edit the destination settings – select one or more user groups to import the LS customer accounts to
  • Open the LsDataImport job and edit the destination settings – select one or more indexes to rebuild after each import. This will typically be your product index(es).

Editing the LsUserImport and LsDataImport jobs is optional, of course, but recommended – whereas the LsStoreImport must have a valid destination page for stores to be imported correctly.

When the jobs are configured, you must create and configure the batch task which connects to the LS Omni installation and retrieves the data.

Go to Settings > Integration > Integration Framework Batch and click Add in the toolbar to create a new batch task – name it LS Retail or similar.

Using the Type dropdown, select the LS Retail import data add-in – then configure it:

  • Enter the web service URL for the LS Omni installation
  • Save – this may take a while, as the add-in retrieved information from LS Omni
  • Store: Select the Omni store you are importing data from – the demo uses the Cronus Web Store
  • Language & Currency: Select the language and currency you are importing products in
  • Destination shop: Select the Dynamicweb store you want to place the imported products in
  • Check the FullImageImport and Import Hierarchy checkboxes
  • Select the LsDataImport, LsUserImport, and LsStoreImport actvitites
  • Save & Run

After the import has been run, you may have to recycle the application pool for the website before the products show up in the backend and frontend in the correct manner. If you want to include custom properties from LS, and these are not named so they can be automatically mapped to the corresponding product fields in Dynamicweb, you must also edit the data import job and switch to manual mapping mode, then map the properties to the custom product fields manually.

You can read more about the settings on the LS Retail add-in here:

Setting

Used for

Notes

FullImageImport

Imports all images from LS Retail to the /Images folder.

Every image is imported every time the activity is run – no partial update functionality implemented (yet)

Import Hierarchy

Imports the hierarchy defined in the LS Omni structure.

If this is not checked, the default NAV group structure is used.

Import Currencies

-

Not in use

Log all requests and responses

Logs all requests and responses

Use for debugging purposes

 

As a part of the integration with LS Retail, a Dynamicweb solution interacts in real time with the LS Omni server in the following scenarios:

  • When stock availability is shown in frontend
  • When a cart is calculated
  • When a user visits the customer center to view previous orders
  • When a user logs in
  • When an order is placed

To activate the Live Integration:

  • Go to Settings > Integration > Integration Framework Live
  • Click the LsRetailLiveIntegration add-in
  • Enter the web service URL for the LS Omni installation
  • Save
  • Select the LS Omni store you are integrating with
  • Save

And that’s in – the solution can now communicate in real time with the LS Omni installation.

The procedure above ensures that data is imported and available on the Dynamicweb solution – but the features using the data must still be implemented on the Dynamicweb solution. And naturally, the frontend used makes a huge difference when it comes to scoping this part of the project.

On a standard Rapido 2.0 the following is not implemented:

  • External Authentication agains LS Omni
  • Store specific stock status
  • Click & Collect
  • B2B Customer Center retriving data from LS Omi

See below for a rough outline of the work needed to implement these features.

The integration between Dynamicweb and LS Retail allows you to authenticate users directly against the LS Omni user database using a Login provider for external authentication.

To set that up:

  • Go to Settings > Control Panel > External Authentication
  • Add a new external login option using the LS Retail Login add-in
  • Enter web service URL to the LS Omni installation

You must also update the login template to use external authentication - this is an example based on Rapido 2.1:

RAZOR
@if (GetLoop("DWExtranetExternalLoginProviders").Count != 0) { foreach (LoopItem LoginProvider in GetLoop("DWExtranetExternalLoginProviders")) { var ProviderName = LoginProvider.GetString("ProviderName").ToLower(); <a href="javascript:void(0);" onclick="document.getElementById('loginform').action='/Admin/Public/Social/ExternalLogin.aspx?action=login&providerID=@LoginProvider.GetValue("ProviderID")';document.getElementById('loginform').submit();" class="btn btn-sm btn-primary">Login with <i class="fa fa-@ProviderName"></i> @LoginProvider.GetString("ProviderName")</a> } }

Update product template to use list of stores imported and an API connecting to LS Omni.

Update checkout templates to use list of stores imported and add click-and-collect store ID to order.

Update B2B CC template to use data retrieved from LS Retail