Home

Error al crear una Actividad de servicio "General failure in scheduling engine" en CRM 2016

webmaster's picture

En el momento de crear una actividad de servicio (Service Activity), bien desde el calendario de servicios o desde el acceso a la creación de actividades, nos encontramos con un error en el momento de utilizar el botón Guardar o Guardar como... "General failure in scheduling engine".

En el momento de Ignorar y guardar aparece otro error:

y en el fichero de ErrorDetail.txt descargado nos apacere la siguiente informacion:

Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: Both statecode and statuscode must be set or both of them must be null.Detail:

<OrganizationServiceFault xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/xrm/2011/Contracts">

  <ErrorCode>-2147220989</ErrorCode>

  <ErrorDetails xmlns:d2p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic" />

  <Message>Both statecode and statuscode must be set or both of them must be null.</Message>

  <Timestamp>2017-05-31T14:40:49.261448Z</Timestamp>

  <InnerFault i:nil="true" />

  <TraceText i:nil="true" />

</OrganizationServiceFault>

Revisamos el formulario principal por defecto de la entidad y nos encontramos que existen dos inserciones del campo statecode en el mismo y esto provoca que en el momento de guardar el registro unos de los dos campos no contenga el valor apropiado y aparezca como nulo, provocando por consiguiente el fallo.

El campo statecode de arriba no se visualiza en la inserción y/o modificación del registro, mientras que el del pie del formulario si. Ambs aparecen con la etiqueta "Status". Este campo o attributo solo se puede ver modificando el diseño del formulario. Manualmente no se pueden eliminar del formulario el campo de arriba puesto que está protegido y debe mantenerse el que está situado en el Pie del formulario.

Solución

De momento la solución pasará por la vía NO Soportada de modifiar las especificaciones del fichero XML que define al formulario quitando el campo statecode de arriba en una solución NO Administrada y editando el fichero customizations.xml file, volviendo a importarla, teniendo en cuenta que en el momento de incorporar el nuevo formulario desactivar / renombrar el antiguo a efectos de que por defecto se visualice nuestro nuevo formulario.

Pasos a seguir:

1. Creamos una copia del formulario principal de la entidad manteniendo el original intacto y la llamamos InformacionNew. Creamos una solucion con la entidad Service Activity que solo contenga el formulario InformacionNew que se va a modificar:

2. Exportamos la solución y abrimos el fichero zip descomprimeindolo en una ubicación aparte. 

Dentro de ese fichero existe un fichero con el nombre de customizations.xml. Lo editamos con el notepad++ buscando la linea donde aparece el campo statecode. Debe existir un fragmento xml parecido a este:

<row>
                              <cell auto="false" showlabel="true" locklevel="1" rowspan="1" colspan="1" id="{4893ef20-cad9-4571-a8a2-bb04f903be18}" labelid="{cd053921-4bcd-4f4e-a087-8c60bc4e54eb}">
                                <labels>
                                  <label description="Status" languagecode="1033" />
                                </labels>
                                <control id="statuscode" classid="{5D68B988-0661-4db2-BC3E-17598AD3BE6C}" datafieldname="statuscode" disabled="false" uniqueid="{3e0db88d-e973-3b4d-316a-ed8d7c8884b2}" />
                              </cell>
                              <cell id="{5797dd26-b749-21a3-e608-e5ae114452eb}" showlabel="true" locklevel="1" visible="false" labelid="{15909276-e7b3-4780-a5eb-1f0f8539f099}">
                                <labels>
                                  <label description="Status" languagecode="1033" />
                                </labels>
                                <control id="statecode" classid="{3EF39988-22BB-4f0b-BBBE-64B5A3748AEE}" datafieldname="statecode" disabled="false" uniqueid="{2a89be6e-7068-160d-4982-635a4a673935}" />
                              </cell>
  </row>

3. Borramos las etiquetas que marcan el label y el control id del statecode que debemos eliminar, manteniendo el resto de lo que se encuentra en la etiqueta <row></row>

4. Guardamos los cambios en el fichero manteniendo el mismo nombre y lo incorporamos a un nevo fichero zip que llamaremos igual que la solución que se ha exportado para poder importarla nuevamente al CRM

5. Por ultimo importamos nuevamente la solución y publicamos los cambios. Una vez publicados desactivamos el formulario original y activamos el nuevo formulario estableciendolo por defecto para la entidad.

Fuente: 

Microsoft knowledge Base - LEMURSOLUTION knowledge Base

Contacto: 
webmaster