Create a user-defined event
Unified Service Desk provides you with predefined events for hosted controls based on the type of the hosted control. Apart from these predefined events, you can also create your own events in Unified Service Desk, which are called user-defined events. You can use the FireEvent action or the event moniker to run user-defined events.
Use the FireEvent action
All of the predefined and custom Unified Service Desk hosted control types, except for the CCA Hosted Application have a special UII action called FireEvent. You can call this action to initiate a user-defined event from that control. This is a convenient way to group multiple action calls into a single call, effectively creating a function within Unified Service Desk. It is also a reasonable way to test events and their action sequences before deployment.
The first parameter to the FireEvent is the name of the event:
name=MyEvent
All subsequent name/value pairs become the parameters to the event and thus can be used as replacement parameters within the actions that are called as a result. For example, if you pass the following parameter list:
name=MyEvent
var1=[[account.name]]
This will fire the custom event MyEvent event enabling the ability to create an action call that uses the var1
parameter as follows:
Hosted Control=Some Hosted Control
UII Action=Some action on the Hosted Control
Data=[[var1]]
This passes the event parameter as a data parameter to the hosted control action. In this example, that means the data parameter to the hosted control will be the account.name value from the session.
Use the event moniker
You can create a custom event on a hosted control, and then call it using the following event moniker syntax:
http://event/?EventName=<EVENT_NAME>&key=value&key=value&…
In the syntax, you specify the key=value
pair to pass parameter list to be used when the event is triggered.
Consider an example where you want to raise a user-defined event whenever the title of the case on the case form changes in Microsoft Dataverse. To do this:
Create a new event, called
TitleChanged
, for the Incident hosted control in Dataverse.Create an action call, called
Action Call for Title Change
, with the following values:Field Value Name Action Call for Title Change Hosted Control Incident Action RunXrmCommand Data function titleChangeReaction() {
window.open(http://event/?EventName=TitleChanged&NewTitle="+encodeURIComponent(Xrm.Page.getAttribute("title").getValue()
));
}
Xrm.Page.getAttribute("title").addOnChange(titleChangeReaction);Add the new action call that you created to the BrowserDocumentComplete event of the Incident hosted control. More information: Add action calls to an event
When the
TitleChanged
event is triggered, the following request is raised:http://event/?EventName=TitleChanged&NewTitle=<NEW_TITLE>
This will cause the
TitleChanged
event to be triggered with the following data parameter:NewTitle=<NEW_TITLE>
If you use JavaScript in Dataverse to invoke an event in Unified Service Desk using the event moniker (
http://event/?EventName=<EVENT_NAME>&key=value&key=value&…
), you can use thewindow.IsUSD
property to determine whether the JavaScript code is running under Unified Service Desk when the event is invoked. The following code sample can be included in your JavaScript code to ensure that the event is invoked only when the calling JavaScript is running within Unified Service Desk.
if ((window.IsUSD != null) && (window.IsUSD == true))
{
window.open(http://event/?EventName=<EVENT_NAME>&key=value&key=value&…);
}
See also
Events
Hosted control types and action/event reference
Manage hosted controls, actions, and events
MSDN: Use JavaScript with Microsoft Dynamics CRM