4
votes

I'm trying to create an entity in CRM 2011 (not an out of the box kind, but what in CRM 4 would have been called a DynamicEntity... one with my custom attributes). The code below gives me this error and I'm not sure why. This exact same code works if I remove the new_accounttype attribute and try to use another custom attribute.

CRM seems to have taken issue with the "OptionSetValue" being set as the value for that key value pair. new_accounttype is a picklist (or OptionSet in CRM 2011) and that value of 100000003 was pulled from the front end so it's a valid value.

Error: A validation error occurred. The value of 'new_accounttype' on record of type 'account' is outside the valid range.

What am I doing wrong?

public static void CreateAccount(string accountName, string accountType)
{
   //Create properties
   KeyValuePairOfstringanyType[] attributes = new KeyValuePairOfstringanyType[2];
   attributes[0] = new KeyValuePairOfstringanyType() { key = "name", value = accountName ?? "" };
   attributes[1] = new KeyValuePairOfstringanyType() { key = "new_accounttype", value = new OptionSetValue() { Value = 100000003 } };

   ////Create DynamicEntity
   Entity accountToCreate = new Entity();
   accountToCreate.LogicalName = "account";
   accountToCreate.Attributes = attributes;

   try
   {
     service.Create(accountToCreate);
   }
}
2
Are you referencing the soap end-point from silverlight?Luke Baulch
Was/is everything published? Judging by the value and names used, that is a custom field.glosrob
Just a troubleshooting suggestion, get a existing entity with that value and see what it's set to in the debugger or other output. In case what your setting it to isn't what the system is expecting.user1231231412
Same problem here. Any resolution?BenPatterson1

2 Answers

3
votes

I agree that what you have should work fine. This can only mean that the value isn't published or is incorrect. As @glosrob mentions, check that the changes are actually published. Confirm these values by looking at the published form and seeing if your new value is present (and perhaps double check by using IE Developer Tools - hit F12 - and confirm that the value in the select>option object in the HTML contains the integer you expect).

As an aside, your code looks more complex than necessary (IMHO!). I believe this is easier to read an no less efficient:

Try this:

public static void CreateAccount(string accountName, string accountType)
{
   ////Create DynamicEntity
   Entity accountToCreate = new Entity();
   accountToCreate.LogicalName = "account";
   accountToCreate.Attributes = attributes;

   //Append properties
   accountToCreate.Attributes.Add("name", accountName ?? "" );
   accountToCreate.Attributes.Add("new_accounttype", new OptionSetValue(100000003);

   try
   {
     service.Create(accountToCreate);
   }
}
0
votes

Give this a shot: key = "new_accounttype", value = new OptionSetValue(100000003)