Quantcast
Channel: CRM Development forum
Viewing all articles
Browse latest Browse all 8223

crm plugin error - Error in return product Plug-in:EntityState must be set to null, Created (for Create message) or Changed (for Update message)

$
0
0

Hello All,

Greeting!!

Below is my crm 2011 plugin code

  protected void ExecutePostOrderProductUpdate(LocalPluginContext localContext)
        {
            if (localContext == null)
            {
                throw new ArgumentNullException("localContext");
            }

            IPluginExecutionContext context = localContext.PluginExecutionContext;
            IOrganizationService service = localContext.OrganizationService;
            var ServiceContext = new OrganizationServiceContext(service);
            if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
            {
                Entity OP = (Entity)context.InputParameters["Target"];

                string orderId = "", orderDetailId = "", orderName = "", fetchOrderDetails="";
                int oStatus;
                string orderAutoId="";
                Guid tId = new Guid();
                try
                {
                    Guid _OPId = new Guid(OP.Id.ToString());
                    string opid = OP.Id.ToString();

                    var res = from c in ServiceContext.CreateQuery("salesorderdetail")
                              //  where (c["new_vendorproductid"].Equals("SHP1") && c["quoteid"].Equals(quote.Id.ToString()))  
                              where (c["salesorderdetailid"].Equals(OP.Id.ToString()))
                              select c;

                    foreach (var odR in res)
                    {
                        if (odR.Attributes.Contains("salesorderdetailid"))
                        {
                            orderDetailId = ((Guid)odR.Attributes["salesorderdetailid"]).ToString();

                            if (odR.Attributes.Contains("new_orderstatus"))
                            {
                                // oStatus = odR.Attributes["new_orderstatus"].ToString();
                                oStatus = ((OptionSetValue)(odR.Attributes["new_orderstatus"])).Value;
                                /*
                                 * check the order attached return is availble
                                 * if not create one
                                 *
                                 * */

                                if (oStatus == 862410000)
                                {
                                    Entity Return = new Entity("cse_return");

                                    //order

                                    if (odR.Attributes.Contains("salesorderid"))
                                    {
                                        Return["cse_order"] = odR.Attributes["salesorderid"];
                                        orderId = ((EntityReference)odR.Attributes["salesorderid"]).Id.ToString();
                                    }
                                    //order
                                   
                                    string orderIdQ = "{" + orderId+ "}";
                                    fetchOrderDetails = @"<fetch mapping='logical'>
                                           <entity name='salesorder'><all-attributes/>
                                               <filter type='and'>
                                                       <condition attribute='salesorderid' uitype='salesorder' operator='eq' value='" + orderIdQ + "'/></filter></entity></fetch>";
                                    EntityCollection resultOrder = service.RetrieveMultiple(new FetchExpression(fetchOrderDetails));
                                    Entity vOrder = resultOrder.Entities[0];

                                    if (!String.IsNullOrEmpty(vOrder.Attributes["ordernumber"].ToString()))
                                    orderAutoId = vOrder.Attributes["ordernumber"].ToString();
                                    if (!String.IsNullOrEmpty(vOrder.Attributes["customerid"].ToString()))
                                    {
                                        Return["new_customer"] = vOrder.Attributes["customerid"];
                                    }
                                     if (!String.IsNullOrEmpty(vOrder.Attributes["name"].ToString()))
                                     orderName = vOrder.Attributes["name"].ToString();

                                     Return["new_name"] = orderName;
                                     Return["new_orderid"] = orderAutoId;
                                     tId =  service.Create(Return);

// error here while updating

                                     odR["new_return"] = new EntityReference("new_return", tId );

                                     service.Update(odR);                                    
                                     
                                  
                                }
                            }

                        }
                     
                    }


                }
                catch (Exception ex)
                {
                    throw new InvalidPluginExecutionException("Error in return product  Plug-in:" + ex.Message );
                }
            }

After creating a return entity record when i try to update the order product with new return record i am getting the following error


Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: Error in return product  Plug-in:EntityState must be set to null, Created (for Create message) or Changed (for Update message)

Detail:
<OrganizationServiceFault xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/xrm/2011/Contracts">
  <ErrorCode>-2147220891</ErrorCode>
  <ErrorDetails xmlns:d2p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic">
    <KeyValuePairOfstringanyType>
      <d2p1:key>CallStack</d2p1:key>
      <d2p1:value xmlns:d4p1="http://www.w3.org/2001/XMLSchema" i:type="d4p1:string">   at Microsoft.Crm.Extensibility.VersionedPluginProxyStepBase.Execute(PipelineExecutionContext context)
   at Microsoft.Crm.Extensibility.Pipeline.Execute(PipelineExecutionContext context)
   at Microsoft.Crm.Extensibility.MessageProcessor.Execute(PipelineExecutionContext context)
   at Microsoft.Crm.Extensibility.InternalMessageDispatcher.Execute(PipelineExecutionContext context)
   at Microsoft.Crm.Extensibility.ExternalMessageDispatcher.ExecuteInternal(IInProcessOrganizationServiceFactory serviceFactory, IPlatformMessageDispatcherFactory dispatcherFactory, String messageName, String requestName, Int32 primaryObjectTypeCode, Int32 secondaryObjectTypeCode, ParameterCollection fields, CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId, Guid transactionContextId, Int32 invocationSource, Nullable`1 requestId, Version endpointVersion)
   at Microsoft.Crm.Extensibility.OrganizationSdkServiceInternal.ExecuteRequest(OrganizationRequest request, CorrelationToken correlationToken, CallerOriginToken callerOriginToken, WebServiceType serviceType, UserAuth userAuth, Guid targetUserId, Boolean traceRequest, OrganizationContext context, Boolean returnResponse)
   at Microsoft.Crm.Extensibility.OrganizationSdkServiceInternal.ExecuteRequest(OrganizationRequest request, CorrelationToken correlationToken, CallerOriginToken callerOriginToken, WebServiceType serviceType)
   at Microsoft.Crm.Extensibility.OrganizationSdkServiceInternal.Execute(OrganizationRequest request, CorrelationToken correlationToken, CallerOriginToken callerOriginToken, WebServiceType serviceType)</d2p1:value>
    </KeyValuePairOfstringanyType>
    <KeyValuePairOfstringanyType>
      <d2p1:key>OperationStatus</d2p1:key>
      <d2p1:value xmlns:d4p1="http://www.w3.org/2001/XMLSchema" i:type="d4p1:string">0</d2p1:value>
    </KeyValuePairOfstringanyType>
  </ErrorDetails>
  <Message>Error in return product  Plug-in:EntityState must be set to null, Created (for Create message) or Changed (for Update message) </Message>
  <Timestamp>2014-03-04T11:03:59.082937Z</Timestamp>
  <InnerFault i:nil="true" />
  <TraceText>

[Return.ReturnProduct: Return.ReturnProduct.PostOrderProductUpdate]
[730944fd-a5a2-e311-8d01-00155d059e08: PostOrderProductUpdate]
Entered Return.ReturnProduct.PostOrderProductUpdate.Execute(), Correlation Id: 90d5df0d-6bfd-45be-bf20-4143fb27a30e, Initiating User: 43e28b45-b8ae-e011-abc2-00155d14c502
Return.ReturnProduct.PostOrderProductUpdate is firing for Entity: salesorderdetail, Message: Update, Correlation Id: 90d5df0d-6bfd-45be-bf20-4143fb27a30e, Initiating User: 43e28b45-b8ae-e011-abc2-00155d14c502
Exiting Return.ReturnProduct.PostOrderProductUpdate.Execute(), Correlation Id: 90d5df0d-6bfd-45be-bf20-4143fb27a30e, Initiating User: 43e28b45-b8ae-e011-abc2-00155d14c502

</TraceText>
</OrganizationServiceFault>

Please suggest me how to rectify this issue. The plugin is registered in Update message   post- operation pipeline.

Many Thanks,

Rand


Viewing all articles
Browse latest Browse all 8223

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>