Quantcast
Channel: Microsoft Dynamics CRM Forum - Recent Threads
Viewing all articles
Browse latest Browse all 82002

Custom Workflow to Unshare records- Error "Object reference not set to an instance of an object. If you contact support, please provide the technical details"

$
0
0

Ive written custom workflow to share and unshare the record. Sharing record workflow is working fine. but unshare is generating an error. 

below is my code:

if (_entity.LogicalName == "opportunity")
{


EntityReference createdBy = _entity.GetAttributeValue<EntityReference>("createdby");
int oppbusiness = ((OptionSetValue)(_entity.Attributes["jd_businessunit"])).Value;


//get the all the teams based on User
string fetchxml = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='true'>" +
"<entity name='team'>" +
"<attribute name='name' />" +
"<attribute name='businessunitid' />" +
"<attribute name='teamid' />" +
"<attribute name='teamtype' />" +
"<order attribute='name' descending='false' />" +
"<link-entity name='teammembership' from='teamid' to='teamid' visible='false' intersect='true'>" +
"<link-entity name='systemuser' from='systemuserid' to='systemuserid' alias='aa'>" +
"<filter type='and'>" +
"<condition attribute='systemuserid' operator='eq' uiname='CafeX AppUser' uitype='systemuser' value='" + createdBy.Id + "' />" +
"</filter>" +
"</link-entity>" +
"</link-entity>" +
"</entity>" +
"</fetch>";

EntityCollection teams = service.RetrieveMultiple(new FetchExpression(fetchxml));

if (teams.Entities.Count > 0)
{
foreach (Entity team in teams.Entities)
{
QueryExpression query = new QueryExpression("jd_securityconfig");
query.Criteria.AddCondition("jd_team", ConditionOperator.Equal, team.Id);
query.Criteria.AddCondition("jd_opportunity", ConditionOperator.Equal, true);
query.Criteria.AddCondition("jd_account", ConditionOperator.Null);
query.ColumnSet = new ColumnSet(true);
EntityCollection _secConfig = service.RetrieveMultiple(query);

foreach (Entity secConfig in _secConfig.Entities)
{
EntityReference shareWith = secConfig.GetAttributeValue<EntityReference>("jd_teams");
//EntityReference businessunit = secConfig.GetAttributeValue<EntityReference>("jd_businessunit");
int Sec_business = ((OptionSetValue)(secConfig.Attributes["jd_businessunit"])).Value;
if (Sec_business != oppbusiness)
{
UnshareRecord(shareWith, _entity, service);
}

}
}
}
}


}
catch (Exception ex)
{
throw new InvalidPluginExecutionException(" " + ex.Message);
}
}

public void UnshareRecord(EntityReference shareWith, Entity entity, IOrganizationService service)
{
ModifyAccessRequest modifyRequest = new ModifyAccessRequest()
{
Target = new EntityReference(entity.LogicalName, entity.Id),
PrincipalAccess = new PrincipalAccess()
{
Principal = new EntityReference(shareWith.LogicalName, shareWith.Id),
AccessMask = AccessRights.None
}
};

// Execute the request.
ModifyAccessResponse modifyResponse = (ModifyAccessResponse)service.Execute(modifyRequest);
}

What should i do now?

can anyone help.

Thanks


Viewing all articles
Browse latest Browse all 82002

Latest Images

Trending Articles



Latest Images