A blog on Dynamics 365 for Operations – Retail

Tag: Retail

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

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

[vimeo 257533558 w=640 h=360]

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.

 

MPOS AAD changes – The reply address does not match the reply addresses configured for the application

If you are on Dynamics 365 for Operations 7.1 and planning to uptake the latest set of binary hotfixes, expect to see the above error when trying to activate MPOS.

Sergey from Microsoft has described the change that is triggered by binary hotfix KB4051347 in below link in great detail. Just one note though if you are on 7.1 you will not find the event ID 40619 in the event viewer. Its only available 7.2 onwards.

https://community.dynamics.com/ax/b/axforretail/archive/2017/11/06/mpos-aad-changes-in-monthly-update-4

In case you are interested to know more about these changes the below link is a great video that describes the differences between ADAL versus MSAL –https://channel9.msdn.com/Events/Build/2017/P4031

-Hitesh Manglani

[AX 2012 R3 / Dynamics 365 for Operations -Retail]: Viewing events from MPOS in Event Viewer

This post is based on a conversation in Dynamics AX Community (link attached later in the post)

 

Events from the MPOS in AX 2012 R3 can be found in Event Viewer here:

Application and Services Logs -> Microsoft -> Windows -> AppHost -> AppTracing.

activate the event log using Event Viewer.

  1. Navigate to Application and Services Logs -> Microsoft -> Windows -> AppHost.
  2. Right click AppHost and Select View -> Show Analytic and Debug Logs

Events from the MPOS in AX 7 / Dynamics 365 for Operations can be found in Event Viewer here:

Event Viewer: Applications and Services Logs->Microsoft->Dynamics->Commerce-ModernPos.- Admin, Debug, Operational (where Operational would contain errors and Debug is by default disabled but can be Enabled if needed.)

 

Please visit the source of this post at this link

for more information.

A simple customization in MPOS (Blank Operation) with Dynamics 365 for Operations

Note – This article is applicable upto Dynamics 365 for Operations- 7.1 i.e. not applicable to 7.2 and above

Hi All,

 

Blank Operation as you may already be aware enable you to extend Microsoft Dynamics Retail for POS by adding custom logic that can be triggered from the Retail POS Register buttons. The way to implement Blank Operations in MPOS  is different from Enterprise POS as MPOS is a modern app as compared to EPOS which is a windows forms based app.

So lets explore a very simple customization i.e. we want to open a URL on triggering a button from MPOS.

1. We would need to start with AX to add a button to the layout of MPOS. If you do not want to disturb the standard layouts its better to copy one of the existing layouts and then modify it using the designer. Please note the designer only opens in Internet Explorer so it will save you time by not trying to open it in other browsers e.g Chrome

<Update > If you can trust third party extension, you can install ClickOnce  for Google Chrome extension to be able to open the designer in Chrome</Update>

2. Next we need to add this layout to the Store where we intend to use it, in my case I have choosen Houston Store

3. We need to modify the screen layout in the worker setup.

Next run jobs 1060,1070, 1090 to push the worker,store configuration and the new screen layout respectively to Channel DB.

Lets run MPOS SDK code from Visual Studio and check if the changes are reflected.

As you can see we have a new button in MPOS which can be used to invoke custom logic. Currently on triggering the button gives us a message “The blank operation identifier is invalid”

Now make the following modifications in the code.

In POS.ViewModels->OperationsMap.ts add the following line of code to register a new handler for the custom blank operation

Operations.BlankOperationHandler.registerBlankOperationHandler(“CustomOpenURL”, new Operations.OpenURLOperationHandler());

Next we need to provide the definition for the handler, to do this headover to Pos.Core->Operations->Add a new typescript file say CustomBlankOperations.ts and paste following code.

module Commerce.Operations {

“use strict”;

export class OpenURLOperationHandler extends OperationHandlerBase {

/**

* Executes the OpenURL operation.

*

* @param { IBlankOperationOptions } options The operation options.

* @return {IAsyncResultIOperationResult>} The async result containing the operation result, if any.

*/

public execute(options: IBlankOperationOptions): IAsyncResultIOperationResult> {

// sanitize options

options = options || { operationId: undefined, operationData: undefined };

var asyncQueue: AsyncQueue = new AsyncQueue();

var asyncResult: VoidAsyncResult = new VoidAsyncResult(null);

var url = String(options);

asyncQueue.enqueue((): IAsyncResultICancelableResult> => {

Windows.System.Launcher.launchUriAsync(

new Windows.Foundation.Uri(url)

);

return asyncResult;

});

return asyncQueue.run();

}

}

}

On running the modified app you should be able to successfully run the blank operation and see the web page in this case http://www.bing.com opened in your browser.

So hopefully this exercise will whet your appetite and for a deeper dive to more MPOS customizations I would suggest the following resources to try out in AX 7-

1. http://blogs.msdn.com/b/axsa/archive/2015/02/17/extensibility-in-dynamics-ax-2012-r3-cu8-crt-retailserver-mpos-part-1.aspx

2. http://blogs.msdn.com/b/axsa/archive/2015/05/20/extensibility-in-dynamics-ax-2012-r3-cu8-crt-retailserver-mpos-part-2-new-data-entity.aspx

 

hope this helps

-Hitesh Manglani

This post was first published at http://hiteshgoldeneye-techtalk.blogspot.sg/2015/12/a-simple-customization-in-mpos-blank.html

© 2023 Dynamics Journal

Theme by Anders NorenUp ↑