MSCrm 2011 - Workflow Assembly Get Current Entity ID
This is a workflow assembly that returns the current record ID
(Guid) in Dynamics crm 2011.
There is only one drawback, It won't work in Dynamics CRM 2011
ONLINE because workflow assemblies aren't supported there.
Code:
public class GetEntityId : CodeActivity
{
protected override void
Execute(CodeActivityContext executionContext)
{
//Create the tracing
service
ITracingService
tracingService = executionContext.GetExtension<ITracingService>();
IWorkflowContext context
= executionContext.GetExtension<IWorkflowContext>();
EntityId.Set(executionContext, context.PrimaryEntityId.ToString());
}
[Output("Entity Id")]
public OutArgument<string> EntityId
{ get; set; }
}
Walkthrough:
1) Copy the .dll from the bin folder to <%CRM
folder%>\Server\bin\assembly
2) Use the plugin registration tool to register the workflow
assembly
3) Now you should be able to see it in the Workflow window:
4) After you added it to the Workflow you can use it:
Download Link: https://docs.google.com/open?id=0B8k6R6QcCN7INjU2ZjIwMGQtYTBjYy00MmQ1LWI1ZWQtODg0OWViYmQ3YzRl
Dynamics CRM 2011 ONLINE users walkaround:
Create plugin on post create step insert the id to some
text field.
The plugin has advantage, as it will work on all environments
Plugin version: http://dynamicslollipops.blogspot.com/2011/11/mscrm-2011-get-guid-plugin.html
Thanks for this.
ReplyDeleteI badly need to get the GUID of a newly created record in CRM 2011 online and expose this attribute to workflow. In my scenario, it has to occur without JavaScript.
I have no idea how to 'create plugin on post create step'...can you point me in the right direction?
This is the plugin code, hope you'll know to compile it and create plugin out of it.
ReplyDeleteusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xrm.Sdk;
namespace MSCRM2011SetGuidPlugin
{
public class MSCRM2011SetGuidPlugin : IPlugin
{
public readonly string rAttributeSchemaName = "new_guid";
public string m_SecureConfig { get; set; }
public string m_Config { get; set; }
public MSCRM2011SetGuidPlugin(string i_Config, string i_SecureConfig)
{
m_Config = i_Config;
m_SecureConfig = i_SecureConfig;
}
///
/// A plugin that creates a follow-up task activity when a new account is created.
///
/// Register this plug-in on the Create message, account entity,
/// and asynchronous mode.
///
public void Execute(IServiceProvider serviceProvider)
{
//Extract the tracing service for use in debugging sandboxed plug-ins.
ITracingService tracingService =
(ITracingService)serviceProvider.GetService(typeof(ITracingService));
// Obtain the execution context from the service provider.
IPluginExecutionContext context = (IPluginExecutionContext)
serviceProvider.GetService(typeof(IPluginExecutionContext));
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
tracingService.Trace("Config: " + m_Config);
string attr = rAttributeSchemaName;
if (!String.IsNullOrEmpty(m_Config))
{
attr = m_Config;
}
tracingService.Trace("attr: " + attr);
tracingService.Trace("id: " + context.PrimaryEntityId);
Guid id = context.PrimaryEntityId;
Entity entity = new Entity(context.PrimaryEntityName);
entity.Id = id;
entity.Attributes.Add(attr, id.ToString());
service.Update(entity);
}
}
}
http://dynamicslollipops.blogspot.com/2011/11/mscrm-2011-get-guid-plugin.html
ReplyDeleteGOOD ARTICLE,CLICK HERE
ReplyDelete