Posted on 2. January 2015

SparkleXRM for CRM2015 with process API support

I've just committed an update to SparkleXRM with CRM2015 support and the process client API. One of the design decisions I made early on with SparkleXRM was to stick with a CRM2011 solution format to allow installation on both CRM2011 and CRM2013. Now that CRM2015 does not support installing CRM2011 solutions I've had to branch and make both CRM2011 and CRM2015 versions available. The code base still remains the same but they are distributed through two separate solution files depending on your target version. You can download the new CRM2015 SparkleXRM solution from github.

The new client side process control API is such a welcome addition. The latest version of SparkleXRM contains support for this so that you can:

Write code to run when the stage is changed or the user selects a process tab (such as hiding/showing sections on the form.

// Add On Process Stage change
Page.Data.Process.AddOnStageChange(delegate(ExecutionContext context){
    // Stage Stepped forwards backwards

// Add On Process Stage change
Page.Data.Process.AddOnStageSelected(delegate(ExecutionContext context)
    // Stage Tab Selected

Write code to get the current process and stage so that onload functions can show/hide sections on the form.

// Get Current Process
Process process = Page.Data.Process.GetActiveProcess();

Stage stage = Page.Data.Process.GetActiveStage();
Script.Alert("Process = " + process.GetName() + " Stage = " + stage.GetName());

Write code to get the stages and steps of the current process and find the attributes that are referenced – I've not found a use for this yet!

// Get Stages
ClientCollection stages = process.GetStages();

if (stages.GetLength() > 0)
    // Get Steps
    Stage stage0 = stages.Get(0);
    ClientCollection steps = stage0.GetSteps();
    steps.ForEach(delegate(Step step, int index)
        Script.Alert(step.GetName() + " " + step.GetAttribute());
        return true;

Write code to show/hide or collapse/expand the process ribbon:

// Show/Hide Process

// Expand/collapse

Write to advance/step back the stage or change the process/stage completely:

// Change stage
Page.Data.Process.MoveNext(delegate(MoveStepResult result)


// Change process
Stage currentStage = stages.Get(0);
Page.Data.Process.SetActiveStage(currentStage.GetId(), delegate(SetActiveStageResult result)

// Change process to the first available process that the user has access to. 
// If the same as the current process, this does nothing.
Page.Data.Process.GetEnabledProcesses(delegate(Dictionary processes)
    Page.Data.Process.SetActiveProcess(processes.Keys[0], delegate(SetActiveProcessResult result)

Along with the server side branching support for processes – I think this really finishes off this feature nicely. The business process flow feature is now by far my favourite in terms of innovation, business usefulness and developer API. First it was gold in CRM203 RTM, then green in SP1 - now with CRM2015 I especially like the calming cool blue that the process ribbon is now rendered with!





trackback - CRM
5:50 AM on Saturday, January 03, 2015

From the Microsoft Dynamics CRM Blogs: SparkleXRM, Ribbon Workbench for CRM 2015; Tablet scripting; Know your CRM Online maintenance times

A selection of the latest insight from the Microsoft Dynamics CRM blogs: SparkleXRM for CRM 2015 with
11:36 AM on Wednesday, January 07, 2015

Pingback from

You can’t import a CRM 2011 solution into CRM 2015 | Hosk's Dynamic CRM Blog

11:50 AM on Wednesday, January 07, 2015

Pingback from

You can’t import a CRM 2011 solution into CRM 2015 | Dot Net RSS

Hosk's Dynamic CRM  Blog Hosk's Dynamic CRM Blog
12:46 PM on Wednesday, January 07, 2015

You can’t import a CRM 2011 solution into CRM 2015

Whilst I was at work on friday 2nd and everyone else seemed to be still on Christmas holiday, I was reading

Comments are closed