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

Object reference not set to an instance of an object

$
0
0

I have written custom workflow for unsharing the records. workflow triggers on change of some option set option. but I'm getting the abouv error.

below is my code:

Entity _entity = (Entity)context.InputParameters["Target"];

                //Share Opportunity

                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' />" +

                                        "<filter type='and'>" +

                                          "<condition attribute='teamid' operator='not-null' />" +

                                        "</filter>" +

                                        "<link-entity name='teammembership' from='teamid' to='teamid' visible='false' intersect='true'>" +

                                          "<link-entity name='systemuser' from='systemuserid' to='systemuserid' alias='ae'>" +

                                            "<filter type='and'>" +

                                              "<condition attribute='systemuserid' operator='eq' uiname='Beau Garrett' 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)

                            {  

                                if (secConfig.Attributes.Contains("jd_teams"))

                                {

                                    EntityReference shareWith = secConfig.GetAttributeValue<EntityReference>("jd_teams");

                                    if (secConfig.Attributes.Contains("jd_businessunit"))

                                    {

                                        int Sec_business = ((OptionSetValue)(secConfig.Attributes["jd_businessunit"])).Value;

                                        if (Sec_business != oppbusiness)

                                        {

                                            shareRecord(shareWith, _entity, service);

                                        }

                                    }

                                }

                            }

                        }

                    }

                }

                }

            catch(Exception ex)

            {

                throw new InvalidPluginExecutionException(" " + ex.Message);

            }

        

        }

        public void shareRecord(EntityReference shareWith, Entity entity, IOrganizationService service)

        {

           

                    RevokeAccessRequest revokeRequest = new RevokeAccessRequest()

                    {

                        //ex: new EntityReference("salesorder", new Guid(orderId)),

                        Target = new EntityReference(entity.LogicalName, entity.Id),

                        //ex: new EntityReference("systemuser", new Guid(userId)),

                        Revokee = new EntityReference(shareWith.LogicalName, shareWith.Id),

                    };

                    RevokeAccessResponse revoked = (RevokeAccessResponse)service.Execute(revokeRequest);

                 }

}


Viewing all articles
Browse latest Browse all 82002

Latest Images

Trending Articles



Latest Images