How to send alert to user via plugin without using InvalidPluginExecutionException?
Asked Answered
A

2

10

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.");
        }
    } 
}
Auld answered 16/5, 2013 at 17:19 Comment(0)
D
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.

Domesticity answered 16/5, 2013 at 17:26 Comment(0)
H
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

Hylophagous answered 3/2, 2017 at 12:47 Comment(5)
None of this is available in CRM 2011 (maybe the hacky HTML works, though)Doily
I like the html smylie hackWaterfall
Yeah me too. Our Clients had other thinks in mind though;)Hylophagous
Can you embed Html that embeds script that further mutilates the dialog?Domesticity
Looks like Microsoft saw it and it no longer works :) HTML string is returned instead.Manama

© 2022 - 2024 — McMap. All rights reserved.