9

I am currently using InvalidPluginExecutionException to send the message to the user, but it turns out that the message is in English "Business Process Error" beyond which the error box appears the button "download log file". This is not an error because the user is trying to duplicate a record, as can be seen in the code. Is there other way without having to use InvalidPluginExecutionException to show an alert?

QueryExpression query1 = new QueryExpression();
query1.ColumnSet = new ColumnSet(true);
query1.EntityName = "new_appraisers";

EntityCollection ec = service.RetrieveMultiple(query1);

if (ec.Entities.Count <= 0)
{
    log.Tb_Log_Create("Appraiser created");
}
else
{
    foreach (Entity app in ec.Entities)
    {
        if (app["fcg_appraiser"].ToString() == name)
        {
            log.Tb_Log_Create("appraiser allready exist");

            throw new InvalidPluginExecutionException("The name allready exists");
        }

        if (app["new_login"].ToString() == login)
        {
            log.Tb_Log_Create("appraiser allready exist");

            throw new InvalidPluginExecutionException("The login allready exists.");
        }
    } 
}
Maarten Bodewes
  • 80,169
  • 13
  • 121
  • 225
Hugo Silva
  • 145
  • 1
  • 3
  • 15

2 Answers2

8

The only method to display a message box to the user from a plugin is using an exception from the validation stage. You could use javascript however, perform a simple OData query on the On_Save event of the form, and display an alert box with whatever information you'd like, and cancel the saving of the form.

This would allow you to display whatever custom message you'd like, and keep the plugin from firing and displaying the download file dialog.

Daryl
  • 17,774
  • 8
  • 63
  • 133
1

I may be little late, however, in more recent versions of CRM there are several possibilites to achieve what you want. The better ones beeing:

  1. Business Rules
  2. Validation using JS and notifying the user using

I hope Microsoft doesn't read this but...

You can also use a synchronous Plugin and be happy with the Business Process Error Dialog popping off. I just found out that this Dialog is hackable to some degree. Just return HTML in the Exeptions Message like so:

throw new InvalidPluginExecutionException(
@"<img height='16px' src='http://emojione.com/wp-content/uploads/assets/emojis/1f644.svg'> <strong>Oh snap!</strong>

It seems the record can not be saved in its current state.    

");

Which results in sth. like this:

enter image description here

nozzleman
  • 9,019
  • 4
  • 32
  • 52