Skip to main content

Notifications

Announcements

No record found.

Community site session details

Community site session details

Session Id :
Dynamics 365 general forum

Plugin to create a case

(0) ShareShare
ReportReport
Posted on by 790

dear all

i am writing a plugin to  create CASE based on certain conditions, i faced the following issues and i hope you can help :

1. How to pass a certain SUBJECT (for example "MaintainaceServiceRequest") as one of the parameters to create the case, i mean how to set the value of subjectid field while passing the parameters to create the case.

i tried this line but did not work :       incident.Attributes.Add("subjectid", new Guid("{some GUID for one defined subject}"));

2. How to link the case i want to create using the plugin to the originating branch, on CASE, there is lookup field (new_sourcebranch) which should be referring to the related branch.

3. When fetching data from a Entitycollection (after applying query using queryExpression), how to read the text value of a lookup field and an optionset field?

4. How to specify the owner field (ownerid) of the case to a specific user?

i tried this but did not work :            incident.Attributes.Add("ownerid",new Guid ("{a sample GUID for one user}"));

5. how to upload attachment to the notes section of the newly created case (via the plugin).

6. is the GUID casting used in point#1 and point#4 correct or not?

the error i am receiving in the plugin-trace log is  :

Unhandled exception: 
Exception type: System.ServiceModel.FaultException`1[Microsoft.Xrm.Sdk.OrganizationServiceFault]
Message: An error occurred in MyPlug-in.Detail: 
<OrganizationServiceFault xmlns:i="www.w3.org/.../XMLSchema-instance" xmlns="schemas.microsoft.com/.../Contracts">
<ActivityId>3535f10e-ceeb-4e4b-a171-595897ec1831</ActivityId>
<ErrorCode>-2147220891</ErrorCode>
<ErrorDetails xmlns:d2p1="schemas.datacontract.org/.../System.Collections.Generic">
<KeyValuePairOfstringanyType>
<d2p1:key>OperationStatus</d2p1:key>
<d2p1:value xmlns:d4p1="www.w3.org/.../XMLSchema" i:type="d4p1:int">0</d2p1:value>
</KeyValuePairOfstringanyType>
<KeyValuePairOfstringanyType>
<d2p1:key>SubErrorCode</d2p1:key>
<d2p1:value xmlns:d4p1="www.w3.org/.../XMLSchema" i:type="d4p1:int">-2146233088</d2p1:value>
</KeyValuePairOfstringanyType>
</ErrorDetails>
<Message>An error occurred in MyPlug-in.</Message>
<Timestamp>2019-01-02T13:35:11.0319492Z</Timestamp>
<ExceptionRetriable>false</ExceptionRetriable>
<ExceptionSource>SdkClient</ExceptionSource>
<InnerFault>
<ActivityId>3d1ad43b-22eb-4798-9cd8-c74cf10cc6b9</ActivityId>
<ErrorCode>-2147220970</ErrorCode>
<ErrorDetails xmlns:d3p1="schemas.datacontract.org/.../System.Collections.Generic">
<KeyValuePairOfstringanyType>
<d3p1:key>ApiExceptionSourceKey</d3p1:key>
<d3p1:value xmlns:d5p1="www.w3.org/.../XMLSchema" i:type="d5p1:string">Plugin/Microsoft.Crm.ObjectModel.CustomBusinessEntityService</d3p1:value>
</KeyValuePairOfstringanyType>
<KeyValuePairOfstringanyType>
<d3p1:key>ApiOriginalExceptionKey</d3p1:key>
<d3p1:value xmlns:d5p1="www.w3.org/.../XMLSchema" i:type="d5p1:string">Microsoft.Crm.CrmException: An unexpected error occurred. ---&gt; System.InvalidCastException: Unable to cast object of type 'System.Guid' to type 'Microsoft.Xrm.Sdk.EntityReference'.
at Microsoft.Crm.BusinessEntities.EntityReferenceAttributeConverter.ConvertToBusinessEntity(Object value, AttributeMetadata attributeMetadata, Dictionary`2 abbrvToChildAttributeMetadata, ICrmConversionContext context, BusinessEntity target)
at Microsoft.Crm.BusinessEntities.EntityToBusinessEntityConverter.ConvertUsingExistingBusinessEntity(EntityMetadata entityMetadata, ICrmConversionContext conversionContext, Entity entity, BusinessEntity businessEntity)
at Microsoft.Crm.BusinessEntities.EntityToBusinessEntityConverter.Convert(ICrmConversionContext conversionContext, Entity entity)
at Microsoft.Crm.BusinessEntities.ConversionHelpers.Convert(ICrmConversionContext conversionContext, Object source, Type destinationType)
at Microsoft.Crm.Extensibility.DictionaryMapper.Map(ParameterCollection inputs, ICrmConversionContext context)
at Microsoft.Crm.Extensibility.InternalOperationPlugin.Execute(IServiceProvider serviceProvider)
at Microsoft.Crm.Extensibility.V5PluginProxyStep.ExecuteInternal(PipelineExecutionContext context)
at Microsoft.Crm.Extensibility.VersionedPluginProxyStepBase.Execute(PipelineExecutionContext context)
--- End of inner exception stack trace ---
at Microsoft.Crm.Extensibility.VersionedPluginProxyStepBase.Execute(PipelineExecutionContext context)
at Microsoft.Crm.Extensibility.PipelineInstrumentationHelper.Execute(Boolean instrumentationEnabled, String stopwatchName, ExecuteWithInstrumentation action, PipelineExecutionContext context)
at Microsoft.Crm.Extensibility.Pipeline.&lt;&gt;c__DisplayClass2_1.&lt;Execute&gt;b__0()</d3p1:value>
</KeyValuePairOfstringanyType>
<KeyValuePairOfstringanyType>
<d3p1:key>ApiStepKey</d3p1:key>
<d3p1:value xmlns:d5p1="schemas.microsoft.com/.../Serialization" i:type="d5p1:guid">2ccabb1b-ea3e-db11-86a7-000a3a5473e8</d3p1:value>
</KeyValuePairOfstringanyType>
<KeyValuePairOfstringanyType>
<d3p1:key>ApiDepthKey</d3p1:key>
<d3p1:value xmlns:d5p1="www.w3.org/.../XMLSchema" i:type="d5p1:int">2</d3p1:value>
</KeyValuePairOfstringanyType>
<KeyValuePairOfstringanyType>
<d3p1:key>ApiActivityIdKey</d3p1:key>
<d3p1:value xmlns:d5p1="schemas.microsoft.com/.../Serialization" i:type="d5p1:guid">3d1ad43b-22eb-4798-9cd8-c74cf10cc6b9</d3p1:value>
</KeyValuePairOfstringanyType>
<KeyValuePairOfstringanyType>
<d3p1:key>ApiPluginSolutionNameKey</d3p1:key>
<d3p1:value xmlns:d5p1="www.w3.org/.../XMLSchema" i:type="d5p1:string">System</d3p1:value>
</KeyValuePairOfstringanyType>
<KeyValuePairOfstringanyType>
<d3p1:key>ApiStepSolutionNameKey</d3p1:key>
<d3p1:value xmlns:d5p1="www.w3.org/.../XMLSchema" i:type="d5p1:string">System</d3p1:value>
</KeyValuePairOfstringanyType>
</ErrorDetails>
<Message>An unexpected error occurred.</Message>
<Timestamp>2019-01-02T13:35:11.0153843Z</Timestamp>
<ExceptionRetriable>false</ExceptionRetriable>
<ExceptionSource>SdkClient</ExceptionSource>
<InnerFault>
<ActivityId>3d1ad43b-22eb-4798-9cd8-c74cf10cc6b9</ActivityId>
<ErrorCode>-2147220970</ErrorCode>
<ErrorDetails xmlns:d4p1="schemas.datacontract.org/.../System.Collections.Generic" />
<Message>System.InvalidCastException: Unable to cast object of type 'System.Guid' to type 'Microsoft.Xrm.Sdk.EntityReference'.
at Microsoft.Crm.BusinessEntities.EntityReferenceAttributeConverter.ConvertToBusinessEntity(Object value, AttributeMetadata attributeMetadata, Dictionary`2 abbrvToChildAttributeMetadata, ICrmConversionContext context, BusinessEntity target)
at Microsoft.Crm.BusinessEntities.EntityToBusinessEntityConverter.ConvertUsingExistingBusinessEntity(EntityMetadata entityMetadata, ICrmConversionContext conversionContext, Entity entity, BusinessEntity businessEntity)
at Microsoft.Crm.BusinessEntities.EntityToBusinessEntityConverter.Convert(ICrmConversionContext conversionContext, Entity entity)
at Microsoft.Crm.BusinessEntities.ConversionHelpers.Convert(ICrmConversionContext conversionContext, Object source, Type destinationType)
at Microsoft.Crm.Extensibility.DictionaryMapper.Map(ParameterCollection inputs, ICrmConversionContext context)
at Microsoft.Crm.Extensibility.InternalOperationPlugin.Execute(IServiceProvider serviceProvider)
at Microsoft.Crm.Extensibility.V5PluginProxyStep.ExecuteInternal(PipelineExecutionContext context)
at Microsoft.Crm.Extensibility.VersionedPluginProxyStepBase.Execute(PipelineExecutionContext context): Microsoft Dynamics CRM has experienced an error. Reference number for administrators or support: #D0CCE26C</Message>
<Timestamp>2019-01-02T13:35:11.0153843Z</Timestamp>
<ExceptionRetriable>false</ExceptionRetriable>
<ExceptionSource i:nil="true" />
<InnerFault i:nil="true" />
<OriginalException i:nil="true" />
<TraceText i:nil="true" />
</InnerFault>
<OriginalException>System.ServiceModel.FaultException`1[Microsoft.Xrm.Sdk.OrganizationServiceFault]: An unexpected error occurred. (Fault Detail is equal to Exception details: 
ErrorCode: 0x80040216
Message: An unexpected error occurred.
TimeStamp: 2019-01-02T13:35:11.0153843Z
--
Exception details: 
ErrorCode: 0x80040216
Message: System.InvalidCastException: Unable to cast object of type 'System.Guid' to type 'Microsoft.Xrm.Sdk.EntityReference'.
at Microsoft.Crm.BusinessEntities.EntityReferenceAttributeConverter.ConvertToBusinessEntity(Object value, AttributeMetadata attributeMetadata, Dictionary`2 abbrvToChildAttributeMetadata, ICrmConversionContext context, BusinessEntity target)
at Microsoft.Crm.BusinessEntities.EntityToBusinessEntityConverter.ConvertUsingExistingBusinessEntity(EntityMetadata entityMetadata, ICrmConversionContext conversionContext, Entity entity, BusinessEntity businessEntity)
at Microsoft.Crm.BusinessEntities.EntityToBusinessEntityConverter.Convert(ICrmConversionContext conversionContext, Entity entity)
at Microsoft.Crm.BusinessEntities.ConversionHelpers.Convert(ICrmConversionContext conversionContext, Object source,...).
at Microsoft.Crm.Extensibility.OrganizationSdkServiceInternal.Execute(OrganizationRequest request, CorrelationToken correlationToken, CallerOriginToken callerOriginToken, WebServiceType serviceType, Boolean checkAdminMode, ExecutionContext executionContext, Dictionary`2 optionalParameters)
at Microsoft.Crm.Extensibility.InprocessServiceProxy.ExecuteCore(OrganizationRequest request)
at Microsoft.Crm.Sandbox.SandboxSdkListener.ExecuteInternal(SandboxCallInfo callInfo, SandboxSdkContext requestContext, String operation, Byte[] serializedRequest, IExecutionContext context, String&amp; primaryEntityName)
at Microsoft.Crm.Sandbox.SandboxSdkListener.Execute(SandboxCallInfo callInfo, SandboxSdkContext requestContext, String operation, Byte[] serializedRequest) 
Original SdkErrors: 
{ "ApiExceptionSourceKey": "Plugin/Microsoft.Crm.ObjectModel.CustomBusinessEntityService" }, { "ApiOriginalExceptionKey": "Microsoft.Crm.CrmException: An unexpected error occurred. ---&gt; System.InvalidCastException: Unable to cast object of type 'System.Guid' to type 'Microsoft.Xrm.Sdk.EntityReference'.
at Microsoft.Crm.BusinessEntities.EntityReferenceAttributeConverter.ConvertToBusinessEntity(Object value, AttributeMetadata attributeMetadata, Dictionary`2 abbrvToChildAttributeMetadata, ICrmConversionContext context, BusinessEntity target)
at Microsoft.Crm.BusinessEntities.EntityToBusinessEntityConverter.ConvertUsingExistingBusinessEntity(EntityMetadata entityMetadata, ICrmConversionContext conversionContext, Entity entity, BusinessEntity businessEntity)
at Microsoft.Crm.BusinessEntities.EntityToBusinessEntityConverter.Convert(ICrmConversionContext conversionContext, Entity entity)
at Microsoft.Crm.BusinessEntities.ConversionHelpers.Convert(ICrmConversionContext conversionContext, Object source, Type destinationType)
at Microsoft.Crm.Extensibility.DictionaryMapper.Map(ParameterCollection inputs, ICrmConversionContext context)
at Microsoft.Crm.Extensibility.InternalOperationPlugin.Execute(IServiceProvider serviceProvider)
at Microsoft.Crm.Extensibility.V5PluginProxyStep.ExecuteInternal(PipelineExecutionContext context)
at Microsoft.Crm.Extensibility.VersionedPluginProxyStepBase.Execute(PipelineExecutionContext context)
--- End of inner exception stack trace ---
at Microsoft.Crm.Extensibility.VersionedPluginProxyStepBase.Execute(PipelineExecutionContext context)
at Microsoft.Crm.Extensibility.PipelineInstrumentationHelper.Execute(Boolean instrumentationEnabled, String stopwatchName, ExecuteWithInstrumentation action, PipelineExecutionContext context)
at Microsoft.Crm.Extensibility.Pipeline.&lt;&gt;c__DisplayClass2_1.&lt;Execute&gt;b__0()" }, { "ApiStepKey": "2ccabb1b-ea3e-db11-86a7-000a3a5473e8" }, { "ApiDepthKey": "2" }, { "ApiActivityIdKey": "3d1ad43b-22eb-4798-9cd8-c74cf10cc6b9" }, { "ApiPluginSolutionNameKey": "System" }, { "ApiStepSolutionNameKey": "System" }</OriginalException>
<TraceText i:nil="true" />
</InnerFault>
<OriginalException>System.ServiceModel.FaultException`1[Microsoft.Xrm.Sdk.OrganizationServiceFault]: An unexpected error occurred. (Fault Detail is equal to Exception details: 
ErrorCode: 0x80040216
Message: An unexpected error occurred.
TimeStamp: 2019-01-02T13:35:11.0153843Z
--
Exception details: 
ErrorCode: 0x80040216
Message: System.InvalidCastException: Unable to cast object of type 'System.Guid' to type 'Microsoft.Xrm.Sdk.EntityReference'.
at Microsoft.Crm.BusinessEntities.EntityReferenceAttributeConverter.ConvertToBusinessEntity(Object value, AttributeMetadata attributeMetadata, Dictionary`2 abbrvToChildAttributeMetadata, ICrmConversionContext context, BusinessEntity target)
at Microsoft.Crm.BusinessEntities.EntityToBusinessEntityConverter.ConvertUsingExistingBusinessEntity(EntityMetadata entityMetadata, ICrmConversionContext conversionContext, Entity entity, BusinessEntity businessEntity)
at Microsoft.Crm.BusinessEntities.EntityToBusinessEntityConverter.Convert(ICrmConversionContext conversionContext, Entity entity)
at Microsoft.Crm.BusinessEntities.ConversionHelpers.Convert(ICrmConversionContext conversionContext, Object source,...).
at Microsoft.Crm.Extensibility.OrganizationSdkServiceInternal.Execute(OrganizationRequest request, CorrelationToken correlationToken, CallerOriginToken callerOriginToken, WebServiceType serviceType, Boolean checkAdminMode, ExecutionContext executionContext, Dictionary`2 optionalParameters)
at Microsoft.Crm.Extensibility.InprocessServiceProxy.ExecuteCore(OrganizationRequest request)
at Microsoft.Crm.Sandbox.SandboxSdkListener.ExecuteInternal(SandboxCallInfo callInfo, SandboxSdkContext requestContext, String operation, Byte[] serializedRequest, IExecutionContext context, String&amp; primaryEntityName)
at Microsoft.Crm.Sandbox.SandboxSdkListener.Execute(SandboxCallInfo callInfo, SandboxSdkContext requestContext, String operation, Byte[] serializedRequest) 
Original SdkErrors: 
{ "ApiExceptionSourceKey": "Plugin/Microsoft.Crm.ObjectModel.CustomBusinessEntityService" }, { "ApiOriginalExceptionKey": "Microsoft.Crm.CrmException: An unexpected error occurred. ---&gt; System.InvalidCastException: Unable to cast object of type 'System.Guid' to type 'Microsoft.Xrm.Sdk.EntityReference'.
at Microsoft.Crm.BusinessEntities.EntityReferenceAttributeConverter.ConvertToBusinessEntity(Object value, AttributeMetadata attributeMetadata, Dictionary`2 abbrvToChildAttributeMetadata, ICrmConversionContext context, BusinessEntity target)
at Microsoft.Crm.BusinessEntities.EntityToBusinessEntityConverter.ConvertUsingExistingBusinessEntity(EntityMetadata entityMetadata, ICrmConversionContext conversionContext, Entity entity, BusinessEntity businessEntity)
at Microsoft.Crm.BusinessEntities.EntityToBusinessEntityConverter.Convert(ICrmConversionContext conversionContext, Entity entity)
at Microsoft.Crm.BusinessEntities.ConversionHelpers.Convert(ICrmConversionContext conversionContext, Object source, Type destinationType)
at Microsoft.Crm.Extensibility.DictionaryMapper.Map(ParameterCollection inputs, ICrmConversionContext context)
at Microsoft.Crm.Extensibility.InternalOperationPlugin.Execute(IServiceProvider serviceProvider)
at Microsoft.Crm.Extensibility.V5PluginProxyStep.ExecuteInternal(PipelineExecutionContext context)
at Microsoft.Crm.Extensibility.VersionedPluginProxyStepBase.Execute(PipelineExecutionContext context)
--- End of inner exception stack trace ---
at Microsoft.Crm.Extensibility.VersionedPluginProxyStepBase.Execute(PipelineExecutionContext context)
at Microsoft.Crm.Extensibility.PipelineInstrumentationHelper.Execute(Boolean instrumentationEnabled, String stopwatchName, ExecuteWithInstrumentation action, PipelineExecutionContext context)
at Microsoft.Crm.Extensibility.Pipeline.&lt;&gt;c__DisplayClass2_1.&lt;Execute&gt;b__0()" }, { "ApiStepKey": "2ccabb1b-ea3e-db11-86a7-000a3a5473e8" }, { "ApiDepthKey": "2" }, { "ApiActivityIdKey": "3d1ad43b-22eb-4798-9cd8-c74cf10cc6b9" }, { "ApiPluginSolutionNameKey": "System" }, { "ApiStepSolutionNameKey": "System" }</OriginalException>
<TraceText i:nil="true" />
</OrganizationServiceFault>

thanks,

  • Ahmad Saud Profile Picture
    Ahmad Saud 790 on at
    RE: Plugin to create a case

    thanks you all guys, i really appreciate your help.

  • Verified answer
    gdas Profile Picture
    gdas 50,089 Moderator on at
    RE: Plugin to create a case

    Hi Ahmad,

    Please have a look my answer.

    1. 

    // Get the subject inside create case plugin

     Entity entity = (Entity)context.InputParameters["Target"];
    if (entity.Attributes.Contains("subjectid"))
         {
         if ((entity.Attributes["subjectid"] as EntityReference) == null)
          {
           subjectId = (entity.Attributes["subjectid"] as EntityReference).Id;
           caseSubject = (entity.Attributes["subjectid"] as EntityReference).Name;
          }
        }


    // Set the subject id to create another case 

      Entity myCase = new Entity("incident");
    
      myCase .Attributes["subjectid"] = new EntityReference("subject", SubjectId); // Here put SubjectId GUID.

     

    2. Set lookup branch -

    Entity myCase = new Entity("incident");
    myCase.Attributes["new_branch_value"] = new EntityReference("new_branch", branchId); // Here put branchId GUID.

    3. When fetching data from a Entitycollection (after applying query using queryExpression), how to read the text value of a lookup field and an optionset field?

                                EntityCollection CaseResult = service.RetrieveMultiple(new FetchExpression(query));
                                if (CaseResult != null && CaseResult.Entities.Count > 0)
                                {
                                    foreach (Entity caseEnt in CaseResult.Entities)
                                    {
                                        
                                        if (caseEnt.Attributes.Contains("new_optionsetFieldName"))
                                        {
                                           int optionSetValue  = new OptionSetValue(((OptionSetValue)caseEnt.Attributes["new_optionsetFieldName"]).Value);
                                        }
                                       
                                    }
                                }

    4. How to specify the owner field (ownerid) of the case to a specific user?

    i tried this but did not work :            incident.Attributes.Add("ownerid",new Guid ("{a sample GUID for one user}"));

    Set Owner id - 

    myCase.Attributes["ownerid"] = new EntityReference("systemuser", userID); // Here in userID put User  GUID

    5. how to upload attachment to the notes section of the newly created case (via the plugin). 

    Please post different thread for that as its different requirement .

    6. is the GUID casting used in point#1 and point#4 correct or not?

    Already answered .

  • Verified answer
    RaviKashyap Profile Picture
    RaviKashyap 55,410 Moderator on at
    RE: Plugin to create a case

    Hi Ahmad,

    With respect to the error message, your assumption is correct i.e. this error is occurring due to invalid type casting while setting up the look up field from Guid to EntityRefernce. You need to change your code as suggested above-

    incident.Attributes.Add("subjectid", new EntityReference("subject", new Guid("{some GUID for one defined subject}"));

    Regarding 4 (i.e. setting up the owner),

    --If the owner is user

    incident.Attributes.Add("ownerid", new EntityReference("systemuser", new Guid("{GUID of the user}"));

    or --If the owner is team

    incident.Attributes.Add("ownerid", new EntityReference("team", new Guid("{GUID of the team}"));

    docs.microsoft.com/.../sample-assign-record-new-owner

    As an alternate of setting up owner during the creation, if it is not working, you might want to use another call to assign the record to new owner i.e. create the case without setting up owner and then use AssignRequest to assign the created case to some other user.

    docs.microsoft.com/.../microsoft.crm.sdk.messages.assignrequest

    Hope this helps.

  • Verified answer
    a33ik Profile Picture
    a33ik 84,325 Most Valuable Professional on at
    RE: Plugin to create a case

    Hello,

    1, 2 and 4. To set lookup fields you should use something like:

    record["field"] = new EntityReference("entity schema name", <Guid Here>);

    3. To get display label use FormattedValues collection of record returned.

    5. https://community.dynamics.com/crm/b/mahenderpal/archive/2012/12/09/create-and-attach-text-file-to-notes-in-microsoft-crm-2011.aspx

    6. Not sure what you meant with "casting". Here is what it is - docs.microsoft.com/.../casting-and-type-conversions

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

November Spotlight Star - Khushbu Rajvi

Congratulations to a top community star!

Forum Structure Changes Coming on 11/8!

In our never-ending quest to help the Dynamics 365 Community members get answers faster …

Dynamics 365 Community Platform update – Oct 28

Welcome to the next edition of the Community Platform Update. This is a status …

Leaderboard

#1
André Arnaud de Calavon Profile Picture

André Arnaud de Cal... 292,516 Super User 2025 Season 1

#2
Martin Dráb Profile Picture

Martin Dráb 231,409 Most Valuable Professional

#3
nmaenpaa Profile Picture

nmaenpaa 101,156

Leaderboard

Featured topics

Product updates

Dynamics 365 release plans