I am trying to upgrade C# code for a custom workflow activity from CRM 4 to CRM 2011.
The following line is causing me some trouble, as I don't know how to upgrade it properly.
Original code is:
public Lookup accountId { get { return (Lookup)base.GetValue(accountIdProperty); } set { base.SetValue(accountIdProperty, value); } }
The lookup was originally accessed as follows:
Guid accountId = MatchSenderWithExistingAccount(crmService, this.sender); this.accountId = new Lookup("contact", accountId);
So I've updated the lookup part to this:
[Output("AccountId")] [ReferenceTarget("contact ")] [Default("00000000-0000-0000-0000-000000000000")] public OutArgument<EntityReference> AccountId { get; set; }
And am trying to update the second line like this:
Guid accountId = MatchSenderWithExistingAccount(service, SenderId.ToString()); this.AccountId.Set(executionContext, new EntityReference("contact", accountId));
But this isn't working. It builds, but when I try to register the dll I get 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]]: Invalid default value: There is no entity name specified with property: AccountId of type EntityReference Detail: <OrganizationServiceFault xmlns="http://schemas.microsoft.com/xrm/2011/Contracts" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><ErrorCode>-2147200995</ErrorCode><ErrorDetails xmlns:a="http://schemas.datacontract.org/2004/07/System.Collections.Generic" /><Message>Invalid default value: There is no entity name specified with property: AccountId of type EntityReference</Message><Timestamp>2014-03-03T13:35:50.9340181Z</Timestamp><InnerFault><ErrorCode>-2147200995</ErrorCode><ErrorDetails xmlns:a="http://schemas.datacontract.org/2004/07/System.Collections.Generic" /><Message>Invalid default value: There is no entity name specified with property: AccountId of type EntityReference</Message><Timestamp>2014-03-03T13:35:50.9340181Z</Timestamp><InnerFault i:nil="true" /><TraceText i:nil="true" /></InnerFault><TraceText i:nil="true" /></OrganizationServiceFault> Server stack trace: at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc) at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message) Exception rethrown at [0]: at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) at Microsoft.Xrm.Sdk.IOrganizationService.Create(Entity entity) at Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy.CreateCore(Entity entity) at Microsoft.Crm.Tools.PluginRegistration.RegistrationHelper.RegisterPlugin(CrmOrganization org, CrmPlugin plugin) at Microsoft.Crm.Tools.PluginRegistration.PluginRegistrationForm.btnRegister_Click(Object sender, EventArgs e)
So I know that the upgraded version of the property is written wrongly as it says in the error message that there is no entity with that value. But I don't know how else to upgrade that specific piece of code. The way I've done it, I just found online - it's completely new to me, so I have no idea myself!
Thanks.