Cómo compartir un registro en MS Dynamics CRM usando el flujo de trabajo
-
10-07-2019 - |
Pregunta
Me gustaría hacer lo siguiente:
cuando un vendedor asigna una entidad personalizada (llamémosla 'Experiencia principal') a una Oportunidad en MS CRM 4.0, el sistema compartiría la Oportunidad con el usuario que se define como el Propietario de la 'Experiencia principal' asociada grabar.
Me gustaría hacerlo automáticamente a través del flujo de trabajo, pero no puedo encontrar el paso del flujo de trabajo que lo lograría. Sí, y leí en algunos foros que todavía no es posible, solo a través de un ensamblado .NET.
¿Experiencia, alguien?
Solución
Correcto, solo es posible a través del ensamblado .NET. Sin embargo, ¿podría (si usa CRM 4) hacer que el flujo de trabajo cambie el propietario al propietario de la actividad y use la opción compartir con el propietario anterior para permitir que el propietario anterior acceda a su entidad personalizada?
Otros consejos
Prueba esto:
Solo es posible invocando actividad de flujo de trabajo personalizada. Dentro de la actividad de flujo de trabajo personalizado, puede invocar GrantAccessRequest y GrantAccessResponse configurando el objeto PrincipalAccess .
Consulte este " Compartir objeto " sección para más detalles.
Si decide utilizar un complemento personalizado, su código podría verse así:
var rights = AccessRights.ReadAccess | AccessRights.WriteAccess;
var principalAccess = new PrincipalAccess
{
// Gives the principal read write access
AccessMask = rights,
// Set the PrincipalAccess Object's Properties
Principal = sharingTarget.Key
};
// Create the Request Object
var grantAcessRequest = new GrantAccessRequest();
// Set the Request Object's properties
grantAcessRequest.PrincipalAccess = principalAccess;
// Set the Target. In my case it is account record
var entityReference = new EntityReference(localContext.PluginExecutionContext.PrimaryEntityName,
localContext.PluginExecutionContext.PrimaryEntityId);
//throw new InvalidPluginExecutionException("EntityReference");
grantAcessRequest.Target = entityReference;
// Execute the Request
localContext.OrganizationService.Execute(grantAcessRequest);