Whilst doing some housekeeping for a client recently I discovered that the SCCM inboxes were littered with bad mif files. Hmmm time to do some investigative work.

Bad MIF files occur in the following situations:

  • MIF file size is too large, as I know in SMS it is limited up to 5,000,000 bytes
  • If a NOIDMIF or an IDMIF can not be parsed successfully because syntax errors meaning simply that it is not formatted correctly.

Each mif file can be opened in Notepad and I noticed that mif files being created in the C:\Program Files\Microsoft Configuration Manager\inboxes\auth\dataldr.box\BADMIFS\MajorMismatch folder were all coming from VDI devices and that the physicals were not generating the files. Ok so I’ve narrowed the problem down a little.

If you open a mif file you can get the hostname of the affected device. So I then took at look at the dataldr.log on the site server. The dataldr log file processes Management Information Format (MIF) files and hardware inventory in the Configuration Manager database in case you were wondering.

Each affected device was reporting the following warnings:

  • WARNING – Outdated report will be discarded. (sp return code = 8) SMS_INVENTORY_DATA_LOADER 11116 (0x2B6C)
  • WARNING – Attempting to resync due to missed major reports (sp return code = 9) SMS_INVENTORY_DATA_LOADER 7832 (0x1E98)

Ok so I thought there must be something wrong with the original installation of the client on the VDI master image if only virtual machines were affected. I cast my mind back to the original installation where I’d followed advice from The Citrix Blog.

‘When you create cloned/streamed machines from that master image, the SCCM agent will automatically generate and store machine IDs that persist for the life of the VM.  Your virtual desktops will register and behave exactly like their physical counterparts.  One record per machine and that machine will continue to use the same ID across reboots. ‘

Great – set it and forget it – welcome news to the IT admin. Unfortunately this is not the case and the bad mifs are being generated because of this approach.

So how to fix.

It’s simple but adds some extra steps to prior your VDI master image and you’ll need to do this every time you update.

  1. Stop the SMS Host Service – to do this run the command net stop ccmexec as an administrator
  2. Delete the SMSCFG.ini file from the Windows folder – to do this run the command del %WINDIR%\smscfg.ini
  3. Delete the SMS certificates – to do this run the following line in PowerShell – Remove-Item -Path HKLM:\Software\Microsoft\SystemCertificates\SMS\Certificates\* -Force or from DOS using powershell -command “Remove-Item -Path HKLM:\Software\Microsoft\SystemCertificates\SMS\Certificates\* -Force”
  4. Remove the Inventory Action ID 1 in WMI – to do this run the command
wmic /namespace:\\root\ccm\invagt path inventoryActionStatus where InventoryActionID="{00000000-0000-0000-0000-000000000001}" DELETE /NOINTERACTIVE

At this point shut down the master image and create your snapshot that will be deployed to end devices.

Note that I had to uninstall and reinstall the client the first time on my master image prior to running the steps above. I was then able to update my master image from then on with the steps outlined above.

Now when I deploy out the VDI devices in the estate they are no longer reporting bad mifs. One downside to this is that the WMI changes force the VDI’s to run a full inventory at start up but I’m happy to live with this until there is a permanent fix to Citrix’s ‘Set it and Forgot it’ option. You can see this in the clients InventoryAgent.log file.

InventoryAgentLog

Investigation over and my attempt to house keep on the server is going to plan. Also time to update my ‘Implementing SCCM in a XenDesktop MCS VDI environment’ post to reflect the change.

 

Advertisements