Home

Cómo habilitar y realizar el seguimiento de trazas en Microsoft Dynamics CRM 365 Online

webmaster's picture

En muchas ocasiones nos encontramos con que hemos programado un PlugIn para validaciones sobre una entidad de Microsoft Dynamics CRM 365 Online y no podemos habilitar el Profile de la PlugIn Registration Tools para depuración. No nos que da más remedio que realizar un seguimiento de por donde va pasando nuestro código y detectar donde está produciendo el fallo.

Escribir en el registro de rastreo es útil para cuando un plug-in ha fallado o se ha producido una excepción, ya que dentro del archivo ErrorDetails.txt (disponible para descargar desde la ventana del cuadro de mensaje de error) aparecerá una lista de todo lo que se ha escrito en el archivo log, hasta ese punto. Un problema con esto es, si un usuario encuentra un error y no elige descargar este archivo, entonces este archivo se pierde - no tanto de un problema si se puede volver a producir la excepción, pero esto no siempre es así.

Para aquellos que ahora están trabajando en CRM Online 2015 Update 1 o CRM 2016 y CRm 365 Online se ha agregado una nueva característica que amplía aún más esta función: el  registro de seguimiento de complementos . Ahora, las excepciones de plug-in pueden configurarse para escribir en una nueva entidad del sistema, que contiene detalles completos de la excepción, a la que se puede acceder en cualquier momento para respaldar la depuración retroactiva. La introducción de esta característica significa que ahora es el mejor momento para empezar a usar el registro de rastreo dentro de sus complementos, si aún no lo ha hecho y además puede agregara sus propios mensajes personalizados para saber en todo momento que está haciendo el PlugIn programado. Tambien funciona con WorkFlow Activity.
Sólo recuerda lo siguiente ...
La escritura al servicio de rastreo agrega un paso adicional que su plug-in tiene que superar. No tanto de un problema si su complemento es relativamente pequeño, pero cuanto más tiempo se hace, y más frecuente que está escribiendo en el servicio, significa que hay un impacto en el rendimiento potencial. Usted debe usar su mejor juicio al escribir al servicio; no cada vez que haces algo dentro del plugin, pero donde existe la posibilidad de que se produzca un error. Escribir en el registro de seguimiento también puede tener un impacto en su capacidad de almacenamiento de CRM.
 

Instanciar el ITracingService en la creación del PlugIn

Para empezar a escribir en el servicio de rastreo depende de cómo está implementando su complemento. Si ha utilizado la plantilla de Visual Studio, simplemente utilice esta línea de código dentro de la sección "TODO: implementar su lógica empresarial de complemento personalizada".
 
// ¡Asegúrese de agregar referencias a Microsoft.Xrm.Sdk para poder utilizar este espacio de nombres!
 
using Microsoft.Xrm.Sdk;
 
namespace GradoAvancePlugIn
{
    public class Main : IPlugin
    {
public void Execute(IServiceProvider serviceProvider)
{
// Agregamos esta linea para instanciar el servicio del Tracking en CRM
ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
 
IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = factory.CreateOrganizationService(context.UserId);
 
//Para revisar si esta offline o esta en plena sincornizacion
if (context.IsExecutingOffline || context.IsOfflinePlayback)
return;
 
// Ejecución del contexto en Depth = 1
if (context.Depth == 1)
{
try
{
if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
{
Entity entity = (Entity)context.InputParameters["Target"];
// Obtain the target entity from the Input Parameters.
tracingService.Trace("GradoAvancePlugIn: Getting the target entity from Input Parameters.");
 
 
var CierreActivo = service.Retrieve("tres60_cierremensualproyecto", entity.Id, new ColumnSet(true));
Entity MyCierreMensual = new Entity("tres60_cierremensualproyecto");
 
// Obtenemos los Datos del proyeto activo
var ProyectoActivo = service.Retrieve("msdyn_project", ((Microsoft.Xrm.Sdk.EntityReference)(CierreActivo["tres60_proyectoid"])).Id, new ColumnSet(true));
MyCierreMensual.Id = CierreActivo.Id;
 
// Escribimos el mensaje personalizado con los datos que queremos se muestren en el tracking Services
tracingService.Trace("GradoAvancePlugIn: El proyecto activo es " + ((Microsoft.Xrm.Sdk.EntityReference)(CierreActivo["tres60_proyectoid"])).Id );
}
catch (Exception e)
{
throw new InvalidPluginExecutionException(e.Message);
}
}
}
}
}

Activar el seguimiento

Aunque hemos configurado nuestro complemento para el rastreo, esto no significa automáticamente que nuestro plugin empiece a escribir en el registro. En primer lugar, debemos configurar el  complemento y el rastreo de actividad del flujo de trabajo personalizado en la página Configuración del sistema:
 
 
Tiene tres opciones que puede configurar:
Desactivado: nada se escribirá en el registro de seguimiento, aunque el complemento encuentre una excepción.
Excepción: cuando el complemento produce una excepción, se escribirá un rastreo en el registro.
Todos - Siempre que se ejecuta el complemento y se llama al registro de seguimiento, se creará un registro de registro de seguimiento. Esto es equivalente al registro Verbose.
 
Como se mencionó anteriormente, los registros individuales se escribirán en CRM cada vez que se solicite el servicio de búsqueda. Por lo tanto, se recomienda sólo activar "All" para períodos temporales; dejarlo encendido para 'Excepción' puede ser útil al intentar diagnosticar inicialmente errores del enchufe. Revise la cantidad de almacenamiento disponible en su implementación de CRM Online / On-Premise para determinar el mejor curso de acción

Después de registrar nuestro plugin y con el rastreo configurado para "Todos" en nuestra instancia de CRM, ahora podemos ver nuestros mensajes personalizados están siendo escritos en el registro de seguimiento:

Al

Al visualizar el detalle del seguimiento del Tracking no solo se puede ver el mensaje personalizado, sino también toda la descripción dle error en caso de que hubiese ocurrido en error no controlado dentro del PlugIn.

Fuente: 

Microsoft knowledge Base - LEMURSOLUTION knowledge Base

Contacto: 
webmaster