Cuando se elimina un registro en Microsoft Dynamics CRM 4.0, el registro no se elimina directamente de la Base de Datos, sino que este se marca para eliminación (Se coloca el campo ‘DeletionStateCode’ en 2) y un servicio que por defecto se ejecuta cada 24 horas llamado ‘Deletion Services’ ejecuta la eliminación del registro de la Tabla de la Base de Datos.

Cuando los registros marcados ‘DeletionStateCode’ = 2 no se eliminan, se debe ejecutar el siguiente query sobre la base de Datos ‘MSCRM_CONFIG’:

select * from ScaleGroupOrganizationMaintenanceJobs 
where OrganizationId in (select Id from Organization where DatabaseName = ‘[Org_DataBaseName]’) and OperationType = 14

En el resultado del Query, la columna LastResultCode, muestra el resultado de la ejecución, si es igual a 0, el resultado de la última ejecución del Deletion Service fue exitosa, cualquier otro valor que aparezca significa que se presentaron errores.

En la columna LastRunTime, muestra la última fecha en la que se ejecuto por última vez el Deletion Service.

 

Las causas del Error pueden ser:

  1. Que la cuenta que ejecuta el Servicio Asincrónico de Microsoft Dynamics CRM 4.0 no cuente con permisos suficientes para realizar operaciones de eliminación en la base de datos de CRM.
  2. Que la hora en el que el Job de eliminación de registros del CRM coincida con la hora de backups o mantenimiento del Servidor de SQL .
  3. Que se genere errores de timeout cuando CRM realiza consultas al Servidor de SQL ( que puede ocurrir tanto por índices no optimizados en la Base de Datos o lentitud en el Servidor de Base de Datos). para encontrar este tipo de errores es necesarios habilitar el trace en el servidor del CRM y en dado caso que se encuentren errores de timeout hay que incrementar el tiempo en la configuración del CRM antes de generar Timeout. Por defecto el tiemout está en 30 segundos, en el siguiente articulo de KB de Microsoft se describe como aumentar el tiempo de espera http://support.microsoft.com/kb/918609

Método Solución: Agregar el OLEDBTimeout y las subclaves del registro de ExtendedTimeout para incrementar los valores de tiempo de espera

  1. Haga clic en Inicio, haga clic en Ejecutar, tipoRegedity, a continuación, haga clic en ACEPTAR.
  2. Busque la siguiente subclave del registro:

    HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSCRM

  3. Con el botón secundario MSCRM, seleccione Nuevoy, a continuación, haga clic en Valor DWORD Para crear un nuevo valor DWORD.
  4. Cambie el valor DWORD en el valor siguiente:

    OLEDBTimeout

  5. Haga doble clic en el valor DWORD y, a continuación, haga clic en Modificar.
  6. En el Editar valor DWORD cuadro de diálogo, escriba86400en el Información del valor Haga clic en Decimal en el Base opción y haga clic en ACEPTAR.
    NotaAcuerdo con el requisito del equipo que ejecuta SQL server y el número de archivos de personalización, el valor puede ser mayor que 86400. El valor de 86400 equivale a 24 horas.
  7. Con el botón secundario MSCRM, seleccione Nuevo y, a continuación, haga clic en Valor DWORD Para crear un nuevo valor DWORD.
  8. Cambie el valor DWORD en el valor siguiente:

    ExtendedTimeout

  9. Haga doble clic en el valor DWORD y, a continuación, haga clic en Modificar.
  10. En el Editar valor DWORD cuadro de diálogo, escriba1000000en el Información del valor cuadro y haga clic en ACEPTAR.

La modificación incorrecta de los registros de Windows puede producir problemas serios en el Sistema Operativo. Modificar los registros de Windows se hace bajo su propia responsabilidad.

Despues de Modificados el Regedit, se debe reiniciar el Sitio web del CRM (desde la consola de comando IISRESET o desde la consola de administraciónd e Internet Information Services.) y esperar a que el Deletion Services se vuelva a ejecutar nuevamente y revisar si los registros marcados para eliminación fueron efectivamente elimados.

Nuevo_Logo