A blog on Dynamics 365 for Operations – Retail

Custom error messages in MPOS

This post is for describing how we can show custom error messages in MPOS.

MPOS standard error handlers require that the strings to be shown as error messages are entered in the following format within the resources.json file (en-US).

“string_55001” : “This is a custom error.”,

Within MPOS we could use the following snippet to display any custom error messages

let displayMessageActivity: Commerce.Activities.DisplayMessageActivity = new Commerce.Activities.DisplayMessageActivity({
title: ‘Custom Error’,
message: Commerce.ViewModelAdapter.getResourceString(“string_55001“)
});
displayMessageActivity.execute().done(() => {
// code to run on successful display of the error dialog
}).fail(() => {
// code to run on failure in displaying the error dialog
});

If however the error condition is met in the Commerce Run Time (CRT) you need to show the error message in MPOS, you can leverage the CommerceRunTimeException

throw new CommerceException(“string_55047”, “CUSTOM ERROR MESSAGE”);

 

One possibility is that the error messages could be coming from a third party application. On a recent integration I received a list of predefined error codes with error messages from the application.I then defined an enum in the CRT which had the values as this status codes and names as the error messages

e.g.

INVALID_OPTION = 152

ERROR_NEW_PASSWORD_CANNOT_BE_THE_SAME_AS_OLD_PASSWORD = 180

I defined a corresponding Enum in the CRT

public enum AppError
{

INVALID_OPTION = 152

ERROR_NEW_PASSWORD_CANNOT_BE_THE_SAME_AS_OLD_PASSWORD = 180

}

After deserializing the response I checked the ReturnStatus code from the application and used an offset (50050) to throw the correct error message from the resources.json file

if (Enum.IsDefined(typeof(AppError), res.ReturnStatus))
{
AppError err = (AppError)res.ReturnStatus;
throw new CommerceException(“string_” + (50050 + res.ReturnStatus) , err.ToString().Replace(“_”, ” “));
}

<Update>

I later discovered a simpler way by following the Retail SDK example

throw new CommerceException(“Microsoft_Dynamics_Commerce_30104”, “Custom error”)
{
LocalizedMessage = “Custom error message returned by the third party app”;

};

</Update>

Hope this helps

-Hitesh Manglani

 

 

 

 

 

 

 

 

2 Comments

  1. Pratyush

    Hi Hitesh,
    Could you please help me display the custom error message from crt. I have tried with this code
    string message = string.Format(“This customer ‘{0}’ is not allowed for this Payment.”,
    cust.AccountNumber);
    throw new CommerceException(“Validation”, message);
    But it did not work. Instead i am getting the “Application has encounter an error. Try again or contact your administrator to fix this Problem”

    • hiteshgoldeneye

      hello Pratyush,

      Try the following syntax,

      throw new CommerceException(“Microsoft_Dynamics_Commerce_30104”, “Custom error”)
      {
      LocalizedMessage = String.Format(“This customer {0} is not allowed for this Payment.”,
      cust.AccountNumber);

      };

Leave a Reply

Your email address will not be published. Required fields are marked *

© 2023 Dynamics Journal

Theme by Anders NorenUp ↑