HEAT Discovery - AssetProcessor log error: UpdateObjectOrGetInvalidFields: Validation Errors: 'Production' is not in the validation list of validated field CI.{CIType}.Status.

Version 1

    Details

     

    AssetProcessor.frslog file may show the following error:
    UpdateObjectOrGetInvalidFields: Validation Errors: 'Production' is not in the validation list of validated field CI.VirtualServer.Status.

    The Validated field may also be other CI extension types... i.e. validated field CI.Server.Status / validated field CI.Computer.Status / validated field CI.Workstation.Status / etc

    Full error text
    <log4net:event logger="FrontRangeSaaS" timestamp="2016-12-21T19:59:40.3712079-06:00" level="ERROR" thread="13" domain="/LM/W3SVC/2/ROOT/AssetProcessor-1-131268455754894143" username="NT AUTHORITY\NETWORK SERVICE"><log4net:message>UpdateObjectOrGetInvalidFields: Validation Errors: 'Production' is not in the validation list of validated field CI.VirtualServer.Status.</log4net:message><log4net:properties><log4net:data name="ErrorCode" value="101" /><log4net:data name="ServiceName" value="IM" /><log4net:data name="LogEntryId" value="7f2bebf7991a4414b77af4c8d341f6b8" /><log4net:data name="log4net:UserName" value="NT AUTHORITY\NETWORK SERVICE" /><log4net:data name="SubsystemId" value="IMDataAdapter" /><log4net:data name="LoginId" value="(null)" /><log4net:data name="log4net:Identity" value="" /><log4net:data name="DiscoveryContext" value="ClientId:{clientID},MessageQueueId:{messageID}," /><log4net:data name="ClientIPAddress" value="(null)" /><log4net:data name="CurrentRole" value="(null)" /><log4net:data name="log4net:HostName" value="{Hostname}" /><log4net:data name="TenantId" value="{tenantURL}" /><log4net:data name="StackTrace" value="   at SaaS.IM.Logger.LogError(String text, String eventSource, String tenantId, Exception ex)&#xD;&#xA;   at SaaS.IM.DataAdapter.BoTransaction.UpdateObjectOrGetInvalidFields(ISessionContext context, String tableRef, String id, IEnumerable`1 values, List`1&amp; invalidFields)&#xD;&#xA;   at SaaS.IM.DataAdapter.BoTransaction.&lt;&gt;c__DisplayClass24_0.&lt;TryUpdateObjectOrGetInvalidFields&gt;b__0()&#xD;&#xA;   at SaaS.IM.DataAdapter.RetryHelper.ActionExecutor.Execute()&#xD;&#xA;   at SaaS.IM.DataAdapter.RetryHelper.ExecuteWithRetryOnDeadlock[T](IExecutor`1 executor, Int32 maxRetryCount, Int32 waitInterval)&#xD;&#xA;   at SaaS.IM.DataAdapter.BoTransaction.TryUpdateObjectOrGetInvalidFields(ISessionContext context, String tableRef, String id, IEnumerable`1 values)&#xD;&#xA;   at SaaS.IM.DataAdapter.DataAccess.BusinessObjectAdapter.UpdateBO_ValidFieldsOnly(String tableRef, String recId, Dictionary`2 objDict)&#xD;&#xA;   at SaaS.IM.DataAdapter.AssetDataImporter.AddUpdateAssetDataFromMap(DeviceIdentity deviceIdentity, XDocument assetData, String subtype, Int32 firstSeqNum, Int32 lastSeqNum, String orgUnit, String subTenant, String&amp; error)&#xD;&#xA;   at SaaS.IM.AssetProcessor.ImportAssetData(String assetDataXml, String subtype, Int32 firstAuditSequenceNumber, Int32 lastAuditSequenceNumber)&#xD;&#xA;   at SaaS.IM.MessageHandler.Process(Object arg)&#xD;&#xA;   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)&#xD;&#xA;   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)&#xD;&#xA;   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)&#xD;&#xA;   at System.Threading.ThreadHelper.ThreadStart(Object obj)&#xD;&#xA;" /><log4net:data name="SessionId" value="(null)" /><log4net:data name="TargetSite" value="Void LogError(System.String, System.String, System.String, System.Exception)" /></log4net:properties></log4net:event>

     


    Resolution

    This will happen if the CIStatus Picklist has the "Production" value removed. 


    The Asset Data Mapping workspace has an entry for each CI Type and a field entry within each of these for Status.  OOTB many of these are hard coded to "Production".  This can be updated to any value that is valid on the picklist. - just be sure to update all of the CI Types that have Status mapped to "Production" (or re-add Production to the picklist).

    It is also possible to remove the Status field from the mapping at which point a check-in of the Discovery Client Agent will leave the status at the current value.

    Here's a screenshot of the Field Mapping that would need modified or removed: