6.1 Plugin Registration Tool - Uso Avanzado

Domina todas las funciones del Plugin Registration Tool

Ya vimos los fundamentos del Plugin Registration Tool en lecciones anteriores. Ahora profundizamos en funcionalidades avanzadas que necesitarás en proyectos reales: gestión de múltiples steps, configuración de imágenes, trabajo con configuración segura, y estrategias de actualización sin tiempo de inactividad.

Objetivos de aprendizaje

  • Gestionar steps e imágenes de forma eficiente
  • Configurar Filtering Attributes para optimización
  • Usar Secure Configuration para credenciales
  • Actualizar assemblies sin afectar la configuración

Entendiendo la estructura del PRT

Cuando abres el Plugin Registration Tool y te conectas a un entorno, ves una estructura jerárquica:


Assembly (MiEmpresa.Dataverse.Plugins v1.0.0.0)
├── Plugin1
│   ├── Step: Create of account, Pre-operation
│   │   ├── Pre-Image: PreImg
│   │   └── Post-Image: PostImg
│   └── Step: Update of account, Post-operation
│       └── Pre-Image: BeforeUpdate
└── Plugin2
    └── Step: Delete of contact, Pre-operation

Esta estructura refleja exactamente cómo Dataverse almacena la configuración de plugins. Cada assembly puede contener múltiples clases de plugin. Cada plugin puede tener múltiples steps (registros en diferentes mensajes/entidades). Cada step puede tener imágenes asociadas.


Gestión de Steps

Los steps son el corazón de la configuración. Definen cuándo se ejecuta tu plugin y con qué parámetros.

Crear un nuevo Step

Click derecho en la clase del plugin → Register New Step. Los campos principales que configurarás:

Message: El evento que dispara el plugin (Create, Update, Delete, Retrieve, etc.).

Primary Entity: La entidad sobre la que aplica. Dejar en blanco para mensajes globales como SetStateDynamicEntity.

Event Pipeline Stage: Pre-validation, Pre-operation, o Post-operation.

Execution Mode: Synchronous para bloquear al usuario, Asynchronous para ejecutar en background.

Execution Order: Define prioridad cuando hay múltiples plugins en el mismo mensaje/stage. Los números más bajos se ejecutan primero.

Filtering Attributes: optimización clave

Para plugins en el mensaje Update, Filtering Attributes determina qué cambios disparan el plugin. Si no configuras nada, el plugin se ejecuta en CUALQUIER actualización de la entidad. Esto es ineficiente.


Por ejemplo, tienes un plugin que recalcula el total cuando cambia el descuento.
Solo necesitas ejecutarlo cuando cambian estos campos:
- discountpercentage
- discountamount
- new_customdiscount

En Filtering Attributes, escribe:
discountpercentage,discountamount,new_customdiscount

Ahora el plugin solo se ejecuta si al menos uno de esos campos cambió. Actualizaciones al teléfono del cliente o cualquier otro campo no disparan el plugin innecesariamente.

Consejo práctico: Los Filtering Attributes son especialmente importantes en entidades con muchas actualizaciones, como Account o Contact. Reducen significativamente la carga del sistema.

Deshabilitar y eliminar Steps

Para troubleshooting temporal:

  • Click derecho en el Step → Disable
  • El step permanece registrado pero no se ejecuta
  • Útil para aislar problemas sin perder la configuración

Para eliminar permanentemente:

  • Click derecho → Unregister
  • Esto elimina el step y todas sus imágenes asociadas
  • La clase del plugin sigue existiendo en el assembly

Configuración segura para credenciales

Cuando tu plugin necesita credenciales para llamar a servicios externos, no las hardcodees en el código. El PRT permite configurar Secure Configuration y Unsecure Configuration por cada step.

Unsecure Configuration: Visible para cualquiera que pueda ver el step. Usa para configuración no sensible como URLs base o timeouts.

Secure Configuration: Encriptado en reposo, solo visible en runtime. Usa para API keys, contraseñas, tokens.


public class MiPluginConConfiguracion : IPlugin
{
    private readonly string _unsecureConfig;
    private readonly string _secureConfig;
    
    public MiPluginConConfiguracion(string unsecureConfig, string secureConfig)
    {
        _unsecureConfig = unsecureConfig;
        _secureConfig = secureConfig;
    }
    
    public void Execute(IServiceProvider serviceProvider)
    {
        var trace = (ITracingService)
            serviceProvider.GetService(typeof(ITracingService));
        
        // Parsear configuración (JSON, XML, o key=value)
        var config = JsonConvert.DeserializeObject(_secureConfig);
        string apiKey = config.ApiKey;
        
        trace.Trace($"Configuración cargada: URL base = {_unsecureConfig}");
        // Usar las credenciales para llamadas externas...
    }
}

Para configurar en PRT: al registrar o modificar el step, verás campos para Secure y Unsecure Configuration. Puedes poner JSON, XML, o cualquier formato que tu plugin sepa parsear.


Actualizaciones sin tiempo de inactividad

Has corregido un bug o añadido una funcionalidad. Necesitas actualizar el assembly sin perder la configuración de steps ni causar errores a usuarios.

El proceso correcto:

  1. Compila la nueva versión (mantén el mismo nombre de assembly y versión si no hay cambios breaking)
  2. En PRT, click derecho en el Assembly → Update
  3. Navega al nuevo DLL
  4. Click Update Selected Plugins

La actualización preserva todos los steps, imágenes, y configuración. Solo reemplaza el código del assembly.

Importante: Si renombraste clases de plugin o cambiaste el namespace, los steps que apuntaban a las clases antiguas dejarán de funcionar. Planifica las refactorizaciones cuidadosamente.

Estrategia para cambios breaking

Si necesitas hacer cambios significativos que afectan la estructura:

  1. Registra el nuevo assembly con nombre diferente
  2. Crea los nuevos steps configurados correctamente
  3. Deshabilita los steps del assembly antiguo
  4. Verifica que todo funciona
  5. Elimina los steps y assembly antiguos

Esto te da un rollback fácil: si algo falla, simplemente reactivas los steps antiguos.


Exportar configuración para CI/CD

La configuración de plugins forma parte de las soluciones de Dataverse. Para incluirla en tu pipeline de CI/CD:


# Exportar solución que incluye plugins
pac solution export --name MiSolucionPlugins --path ./export --managed

# Importar en otro entorno
pac solution import --path ./MiSolucionPlugins_managed.zip

# Publicar cambios
pac solution publish

La solución incluye el assembly y toda su configuración de steps e imágenes. Esto hace el despliegue repetible y automatizable.


Puntos clave

  • Usa Filtering Attributes en plugins de Update para evitar ejecuciones innecesarias
  • Secure Configuration para credenciales sensibles, nunca en código
  • Deshabilitar steps es útil para troubleshooting sin perder configuración
  • Actualizar assembly preserva steps e imágenes
  • Las soluciones incluyen configuración de plugins para CI/CD

Para profundizar

Inicia sesión e inscríbete para guardar tu progreso.
En este curso
¿Te ha resultado útil?