Hello Everyone,
Please help what I 'm doing wrong over here, the code works while debugging however it's not getting triggered on automatic record creation, I have registered this plugin as "Create", "PostOperation", "Synch".
ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService crmService = serviceFactory.CreateOrganizationService(context.UserId);
tracingService.Trace("{0}: Begin", tracePrefix);
Entity targetEntity = (Entity)context.InputParameters["Target"];
if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
{
if (context.MessageName == "Create")
{
Entity postImageEntity = (Entity)context.PostEntityImages[POST_IMAGE_ALIAS];
var programEnrollmentService = new ProgramEnrollmentService(crmService, tracingService);
Guid? accountOnPostedSurvey = null;
if (postImageEntity.Contains(CrmMetadata.Test.Account))
{
accountOnPostedSurvey = postImageEntity.GetAttributeValue<EntityReference>(CrmMetadata.Test.Account).Id;
}
Guid? contactId = null;
if (postImageEntity.Contains(CrmMetadata.Test.Contact))
{
contactId = postImageEntity.GetAttributeValue<EntityReference>(CrmMetadata.Test.Contact).Id;
}
programEnrollmentService.UpdateAAEnrollmentDetails(targetEntity.Id, contactId, accountOnPostedSurvey);
var TestEntity = new Entity(CrmMetadata.Test.LogicalName);
TestEntity.Id = TestRecordId;
if (accountId.HasValue)
{
var _enrQuery = new QueryExpression("Test");
// Query expression code written --> Assume
EntityCollection enrollCollection = _crmService.RetrieveMultiple(_enrQuery);
if (enrollCollection.Entities.Count > 0)
{
foreach (Entity act in enrollCollection.Entities)
{
Guid? progromEnrollId = ((Microsoft.CECRM.Comm.Crm.Test)act).TestId;
var EnrollmentStatus = ((Microsoft.CECRM.Comm.Crm.Test)act).EE_EnrollmentStatus.Value;
TestEntity[CrmMetadata.Test.AAProgramEnrollmentName] = new EntityReference(CrmMetadata.ProgramEnrollment.LogicalName, (Guid)progromEnrollId);
TestEntity[CrmMetadata.Test.AAProgramEnrollmentStatus] = new OptionSetValue((int)EnrollmentStatus);
}
_crmService.Update(TestEntity);
}