Upselling – Info codes configuration recap

Upselling is one of the common requirements in Retail POS. In this post I would like to recap how this can be achieved using configuration and no code in Dynamics 365 for Operations using info codes.

Info codes is quite an old feature and I thought it would be good to recap how we can use it to achieve “Upselling”.

Lets say we want the cashier to remember to try to upsell a product B on purchase of a certain product A (association rules)- example to prompt cashier to ask customer if he or she would like to buy batteries with purchase of camera.

The first step would be to create an infocode that will show a prompt to the cashier in the Retail POS. Infocodes can be created in Dynamics 365 in the following path- Retail and Commerce-> Channel setup -> Info codes

The input type of the info code can be setup as subcode buttons.

The subcodes need to be setup as follows. Note the use of Trigger function and Trigger code in the setup.

The above setup means that on selecting Yes, the customer agrees to buy the product we are trying to upsell (batteries) and the product will be added to the transaction.

The next part of the setup involves linking this info code to the product the cashier sells in the first place to the customer (Camera). This can be done in the released products master under Commerce tab-> Set up-> Info codes.

With the above setup in backoffice and pushed to the POS (by running the 1030 job and 1040 job), the cashier will get a prompt as shown below

On clicking Yes, the upsell will be done by adding the Batteries product to the transaction.

Regards

Hitesh Manglani

Dynamics 365 for Retail Upgrade – Backward compatibility

Been a while since I last posted as I was busy with upgrading our implementation from v7.1 to v10. During our upgrade from Dynamics 365 for Retail v7.1 to v10.0, one of the main issue we faced is that of Backward compatibility.

The issue occurs when trying to run v7.1 MPOS with v10.0 Retail Server, basically “Declare Start Amount”feature does not work.

On trying to declare the start amount the cashier gets the following prompt.

IMG_3420

On trying to key in any value, the start amount results as NAN.

IMG_3421

Reattempting to declare the start amount simply repeats the above prompts. Now this issue is serious since it prevents the closing of shift as shown in the screenshot below.

IMG_3422

My investigation started with debugging the MPOS code and eventually the CRT code, and I found that one of the fields “StartingAmount” had been removed from crt.ShiftsView. This was causing its value to stay as undefined.

The good news is that issue is reported to Microsoft, and we are currently awaiting the fix (currently expected in v10.0.4)

-Hitesh Manglani

 

 

 

 

MPOS Build Error – App manifest validation error: The app manifest must be valid as per schema

When trying to build the MPOS solution on my laptop, I got the below error.

getimage

Error APPX0501 Validation error. error C00CE169: App manifest validation error: The app manifest must be valid as per schema: Line 10, Column 50, Reason: —————‘ violates pattern constraint of ‘(CN|L|O|OU|E|C|S|STREET|T|G|I|SN|DC|SERIALNUMBER|Description|PostalCode|POBox|Phone|X21Address|dnQualifier|(OID\.(0|[1-9][0-9]*)(\.(0|[1-9][0-9]*))+))=(([^,+=”<>#;])+|”.*”)(, ((CN|L|O|OU|E|C|S|STREET|T|G|I|SN|DC|SERIALNUMBER|Description|PostalCode|POBox|Phone|X21Address|dnQualifier|(OID\.(0|[1-9][0-9]*)(\.(0|[1-9][0-9]*))+))=(([^,+=”<>#;])+|”.*”)))*’. The attribute ‘Publisher’ with value ————- failed to parse. Pos.App ” 1

App manifest validation error: The app manifest must be valid as per schema: Line 10, Column SO, Reason: ‘xxxx’ violates pattern constraint of ‘(CNILIOIOUIEICISISTREETITIGIIISNIDCI
((CNILIOIOUIEICISISTREETITIGIIISNIDCISERIALNUM8ERIDescriptionPostalCodeP080xI
PhoneIX21 . The attribute ‘Publisher’ with value ‘xxx’ failed to parse.

It took me a while to figure it out but this was happening because certain features in Visual Studio were not installed, the Retail SDK Handbook helped me to confirm which features were needed to be installed. After installing the highlighted features, I restarted the machine and the solution built successfully.

visualstudiofeatures

 

Hope this helps, if someone meets the same error.

-Hitesh Manglani

Debugging Cloud POS on Microsoft hosted VM with no admin rights

If you are on a MSDyn365FO 8.1 Microsoft hosted VM, you won’t have admin rights. In this case when you open the Cloud POS solution from the Retail SDK itself you get an error.

The error occurs as you do not have rights on IIS unless you run Visual Studio with Admin rights

Cloud POS Solution Error

So to get around this issue, follow the article below to resolve the issue.

https://docs.microsoft.com/en-gb/dynamics365/unified-operations/retail/dev-itpro/cloud-dev-box

Note –  For step 2 you will find the aspnet.config and redirection.config files in C:\Program Files\IIS Express\config\templates\PersonalWebServer

Following the steps will make sure your Cloud POS runs on IISExpress instead of IIS and thus allowing you to to run Cloud POS and debug by attaching to iisexpress.exe.

-Hitesh Manglani

(Special thanks to my mentor Mugunthan Mani from Microsoft for this tip )

RetailCdxSeedData class – Create custom tables mapping in Retail scheduler automatically

In this post, I would like to draw your attention to RetailCdxSeedData class.

The RetailCdxSeedData class is called when you trigger the following option in Dynamics 365 for Operations

Retail and commerce->Headquarters setup -> Retail scheduler ->Initialise retail scheduler 

If you have added some custom tables that need to be synced  between your HQ and Channel Database using CDX (Commerce Data eXchange), then you should customize the RetailCdxSeedData class to include the custom tables. If you do not not customize the RetailCdxSeedData class, you will need to do the CDX table mapping manually in all the environments and in every DB refresh and increasing the chances of missing out some fields if you have a lot of tables.

Please refer the following link from Microsoft on how you can customise this class with an extension.

https://docs.microsoft.com/en-us/dynamics365/unified-operations/retail/dev-itpro/cdx-extensibility

Hope this helps

– Hitesh Manglani

[MPOS Technical Development]- Refactoring/Renaming of a CRT Entity in Extensions

If you decide to refactor or rename a Commerce Runtime (CRT) entity (lets say OldEntityName to NewEntityName) inheriting from CommerceEntity, one issue that I have faced is in Retail Server extension assembly the build fails with errors due to the RetailProxy classes relying on the definition of your old entity name.

Example of the error messages that you would see in this scenario are as follows-

Could not load type OldEntityName from assembly… and the command ‘bin\CommerceProxyGenerator.exe’ ..

Retail Proxy Error

The solution to this issue is a little tricky one. You need to compile the CRT data dlls keeping the OldEntityName in the References folder.

You need to then comment any reference to NewEntityName in the Retail Server Extension assembly. Then do a clean and a build of the solution.

If this succeeds with no errors, you can now go ahead to uncomment all references to NewEntityName in the Retail Server Extension assembly.

<Update>This article is based on 7.1 Retail SDK </Update>

-Hitesh Manglani

MPOS touch screen grid freeze issue

Note – This issue occurs only on few POS models so you may or may not face this issue. I do not have a list of models that have this issue, though I have experienced this on a HP RP9 POS and on D365FO 7.1 Retail SDK

When trying to scroll through MPOS using touch gesture, in the views that have a grid (examples Tender Declaration, Show Journal, Product Search) you may experience the screen layout on the row you touch, getting out of alignment with the remaining rows and the screen freezes with no further response to touch gestures.

A workaround is to use a mouse instead of touch for scrolling but obviously this can only be a temporary arrangement.

When we contacted Microsoft support, we were given a one line code change fix  that consists in changing the WinJS script that is provided  in the Retail SDK. The script to be changed is the WinJS ui.js and update the equivalent minified file (ui.min.js). The exact change can be seen in this github link: https://github.com/winjs/winjs/commit/a48a12e33e08fccdea7879af877b2cc3a7cb8ec3

 

-Hitesh Manglani

 

MPOS randomly switching from online mode to offline

In my recent Dynamics 365 for Operations implementation on 7.1, we encountered an issue with MPOS switching to offline randomly . MPOS as we know switches to offline either when triggered manually or when the switch is seamless (automatically) when there is any issue in the communication between MPOS and D365 Retail Server, an example is a network interruption (for more information on the overall Retail Topology do refer this link MPOS Technical Architecture)

In a usual scenario, when an interruption occurs in between a transaction, cashier would get an error message the Cart State has changed. The cashier would need to void the transaction and then start all over again and end with creating an offline transaction (Not the kind of experience you want when you have a queue of customers at the billing).  Another issue that coupled with this was that the MPOS logo would not switch from offline to online when the MPOS mode switched.

 

Bottomline –

Make sure you uptake following binary hotfixes as soon as you can if you have enabled MPOS in offline mode

KB 4049328 – MPOS offline logo issue

KB 4058723- Set of reliability fixes for POS Offline

Also include the following X++ hotfix which complements the above binary fix

KB4058724 – Set of reliability fixes for POS Offline

 

 

-Hitesh Manglani

 

 

 

Some important resources on Dynamics 365 for Operations – Retail

This post is meant for anyone starting to explore Dynamics 365 for Operations Retail. I have included some of the resources that I have found very useful. In this video I will take a quick look at the following resources

1. The first link is the landing page on Retail on the Microsoft documentation portal docs.microsoft.com

https://docs.microsoft.com/en-us/dynamics365/unified-operations/retail/dev-itpro/retail-sdk/retail-sdk-overview

2. The second link is the Microsoft Dynamics Learning Portal.  (DLP)

https://mbspartner.microsoft.com/

If you are an independent consultant looking to access DLP please visit the following link and register.

<Update 27 Feb 2018> This link is also open to consultants working with end users. Thanks to Jay Patel for making me aware about this. </Update>

3.  The third link is a very helpful blog by Andreas Hofmann from Microsoft

https://dynamicsnotes.com/

<Update 18 Sep 2019>

4. Last but defintely not the least is an important blog for Retail and Dynamics365FO which is by Kurt Hatlevik , the below blog post from Kurt is an important consolidation of resources.

https://kurthatlevik.com/2019/09/17/d365fo-lots-of-new-high-value-content-on-docs/

<Update>

-Hitesh Manglani

Cannot create a record in Global address book (DirPartyTable). The record already exists

This article is the outcome of a shared session with credit to my friend Vishal Kohli .

StoreMaster

 

While creating a new store in the store master in Dyn365FO, you may face the following error.

“Cannot create a record in Global address book (DirPartyTable). The record already exists.”

The issue is that the operating number keyed is already existing in the system. Therefore you need to make sure you key in a number that does not already exist. The error message can be a little confusing in this regard, which is why I thought this warrants a post.

Note -You are most likely to face this issue when your operating unit number sequence is configured as Manual.

Hope this helps!!

-Hitesh Manglani and Vishal Kohli.