ConfigMgr 2012: Offline Servicing fails with “Failed to find properties of file”

Symptoms
Offline Servicing fails with following error [SQl logging is enabled]:

Mounting image at index 1. Image file=’C:\ConfigMgr_OfflineImageServicing\TCM0012B\Win7SP1_Office10_NET40_x64_10_02_2012.wim’, MountDirectory=’C:\ConfigMgr_OfflineImageServicing\TCM0012B\ImageMountDir’, ImageFileType=’WIM’, Mode=’ReadWrite’SMS_OFFLINE_SERVICING_MANAGER 29/11/2013 10:44:20 AM 18772 (0x4954)Image OS information : MajorVersionMS = 6, MinorVersionMS = 1, MajorVersionLS = 7601, MinorVersionLS = 18015 SMS_OFFLINE_SERVICING_MANAGER 29/11/2013 10:47:23 AM 18772 (0x4954)SQL>>>set quoted_identifier on;set ansi_warnings on;set ansi_padding on;set ansi_nulls on;set concat_null_yields_null on;set arithabort on;set numeric_roundabort off;set DATEFORMAT mdy; SMS_OFFLINE_SERVICING_MANAGER 29/11/2013 10:47:23 AM 18772 (0x4954)SQL>>>>> Done. SMS_OFFLINE_SERVICING_MANAGER 29/11/2013 10:47:23 AM 18772 (0x4954)SQL>>>select distinct cpkg.Content_ID, ContentSubFolder, FileName from vCIAllContents cont join CI_ContentFiles cf on cf.Content_ID=cont.Content_ID join CI_ContentPackages cpkg on cpkg.Content_ID=cont.Content_ID join SMSPackages pkg on pkg.PkgID=cpkg.PkgID where CI_ID=16791696 SMS_OFFLINE_SERVICING_MANAGER 29/11/2013 10:47:23 AM 18772 (0x4954)SQL>>>>> Done. SMS_OFFLINE_SERVICING_MANAGER 29/11/2013 10:47:23 AM 18772 (0x4954)

Failed to find properties of file 2 SMS_OFFLINE_SERVICING_MANAGER 29/11/2013 10:47:23 AM 18772 (0x4954)

Cause
A NO_SMS_ON_DRIVE.SMS file was present on the drive where content was located.
Resolution
Interesting thing was that the number “2” kept changing everything we tried to run the wizard again for offline servicing. On running the SQL query in SQl Management Studio we got:

select distinct cpkg.Content_ID, ContentSubFolder, FileName from vCIAllContents cont join CI_ContentFiles cf on cf.Content_ID=cont.Content_ID join CI_ContentPackages cpkg on cpkg.Content_ID=cont.Content_ID join SMSPackages pkg on pkg.PkgID=cpkg.PkgID where CI_ID=16791696

Content ID ContentSubFolder Filename
16791021 2921051e-5897-4120-b749-0f38f3ea6ac9 windows6.1-kb982666-x64.cab
It turned out that the number “2” was the first character for the string “2921051e-5897-4120-b749-0f38f3ea6ac9”. This would change on subsequent attempts and the number “2” would be replaced by the first alphabet/digit of the value under ‘ContentSubFolder’.

This Number ‘2921051e-5897-4120-b749-0f38f3ea6ac9’ was actually the name of the folder in the ‘DataLib’ directory in ‘SMSContentLib’.

I:\SCCMContentLib\DataLib\2921051e-5897-4120-b749-0f38f3ea6ac9

Opening the INI file we got following value inside it:

[File]
Attributes=00000020
Size=63945
TimeModified=129385629639903558
Hash=0DCA7A2935011E00ACE4B5C1E3A3AF51095B2FDC91449504265C3667934119DB
The FileLib Directory was split across multiple drives. We found that the actual content for this Update was stored on E:\:

E:\SCCMContentLib\FileLibDCA

For more information on how to navigate inside SCCMContentLib please refer to:

http://blogs.technet.com/b/configmgrdogs/archive/2012/04/16/configmgr-2012-content-library-overview.aspx

Thus we knew that the content was very much present, but, was not reachable from OfflineServicing thread. At this point I decided to you procmon for the entire process. I found out that the E:\ Directory was not even being scanned in this process:

Looking at the registry value ‘HKLM\Software\Microsoft\SMS\DP\ContentLibUsableDrives’ ‘E:\’ was not added over there.

On further investigation we found out that ‘NO_SMS_ON_DRIVE.SMS’ was present on ‘E:\’.This would make the smsexec process skip the drive when looking for content. We remove the ‘NO_SMS_ON_DRIVE.SMS’ from ‘E:\’ and restart ‘smsexec’ service. After this we got ‘E:\’ listed as a usable drive in registry:

We ran the wizard for Offline servicing again and this time it completed successfully.