A step-by-step guide to configuring NOIDMIF for Hardware Inventory in Configuration Manager 2012

~ Rafid Ali

imageHello Everyone, Rafid Ali here with a Configuration Manager support tip for you. I recently worked an interesting case where we had to configure Hardware Inventory using NOIDMIF files, and although writing customizations for customers is not something we’re able to do here in product support, we can help teach you how to do this on your own. Because of this I thought it would be a good idea to pass along some tips in the form of a step-by-step guide for the configuration of NOIDMIF for Hardware Inventory in System Center 2012 Configuration Manager.

This article is divided into four major steps:

Step 1: Introduction of NOIDMIF and IDMIF files, including the MOF and the component engaged to process it
Step 2: Server Side Configuration
Step 3: Client Side Configuration
Step 4: Processing the Hardware Inventory with NOIDMIF data

Step 1: Introduction of NOIDMIF and IDMIF files

1. The NOIDMIF and IDMIF files

NOIDMIF files can be used to add information to a client hardware inventory that is associated with a particular client device but cannot normally be collected by Configuration Manager. For example, many companies label each computer in the organization with an asset number and then catalogue them by hand. NOIDMIF inventory is automatically associated with the client device that it was collected from if you configure the Hardware Inventory in the client settings to collect NOIDMIFs. To do this you need to individually create a NOIDMIF file for each machine, and this information can be added to the Configuration Manager database while processing the Hardware Inventory and thus can be used for queries and reporting.

For information about creating NOIDMIF files see the System Center 2012 Configuration Manager SDK documentation at http://msdn.microsoft.com/en-us/library/hh948960.aspx.

IDMIF files are simply custom MIF files. IDMIF files contain a unique ID and are not associated with the computer they are collected from. IDMIF files can also be used to collect inventory data about devices that are not Configuration Manager clients. For example, we can use this collect information about a shared network printer, DVD player, photocopier or similar equipment that is not associated with a client-specific computer.

IDMIF files are identical to NOIDMIF files with these exceptions:

• IDMIF files must have a delta header that provides architecture and a unique ID. NOIDMIF files are automatically given a similar header by the system during processing on the client.

• IDMIF files must include a top-level group with the same class as the architecture being added or changed, and that group must include at least one property.

• Like NOIDMIF files, IDMIF files have key properties that must be unique. Any class that has more than one instance must have at least one key property defined, or subsequent instances overwrite previous instances.

• Removing IDMIF files from clients does not cause the associated data in the site database to be deleted during subsequent hardware inventories.

• IDMIF file information is not added to client inventory reports and the files themselves are sent across the network to be processed at the site server.

2. The MOF file
Managed Object Format (MOF) files can be used to import or extended hardware inventory classes that need to be inventoried from a Configuration Manager client computer.

3. MP_Hinv
is a Management Point component that receives the inventory sent by client machines in XML format. It processes the XML file and converts it into a MIF file.

SMS_INVENTORY_DATA_LOADER processes the MIF file received from MP_Hinv and stores the inventory information sent by client machines in the ConfigMgr database by executing SQL stored procedures in the background.

Step 2: Server Side Configuration

First we will create the MOF and MIF Files according to a requirement specified in our example for this scenario.

We will pull the following information using NOIDMIF files from a SCCM client machine.


The MOF for creating a Class and its Attribute is as follows:

[ SMS_Report (TRUE),
SMS_Group_Name ("Department_Information"),
SMS_Class_ID ("Department_Name")]
class Department_InformationInventory : SMS_Class_Template
[SMS_Report (TRUE),key ] string Department_Name;
[SMS_Report (TRUE) ] string Department_Code;
[SMS_Report (TRUE) ] string Users_Title;
[SMS_Report (TRUE) ] string User_Full_Name;

To create the MOF file, simply copy the lines above in red into Notepad and save the file with the extension .MOF

“Department_Information” is the Group name which you will see in the Resource explorer under Hardware.
is the name of the Class.
“Highlighted” portion are Attributes whose values will be fetched up by processing the Hardware Inventory.

NOTE You can create more attributes as per your specific requirements.

Once the file is saved with a .MOF extension we need to import it. To do this, go to the console and open Client Settings, browse to Hardware Inventory and click on “Set Classes”


Then click on “Import”


Browse to the location where you have saved the .MOF file and click Open 


Select the option “Import both Hardware Inventory Classes and Hardware Inventory Class Settings”


Once the Hardware Inventory class is imported, verify that the class is added by searching for it using its class name. By default it’s already selected but if not then select the Class. You can expand the Class to look into its Attributes as well.


After importing the MOF, be sure you enable the collection of NOIDMIF files as shown below.


Now you can verify that new tables are created regarding the above class “Department_Name” in the database.


At this point the configuration on the server side is completed so we will now move to the client side.

Step 3: Client Side Configuration

On the client side we need to create a MIF file and copy it to the required location. To do this, type the following lines into Notepad. This will create the NOIDMIF, its Class “Department_Name” and its attributes.

NOTE You need to save this file in .MIF extension.

Start Component
Name = "
Start Group
Name = "Department_Information"
ID = 1
Class = "Department_Name"
Start Attribute
Name = "Department_Name"
ID = 1
Type = String(250)
Value = "ConfigMgr"
End Attribute
Start Attribute
Name = "Department_Code"
ID = 2
Type = String(80)
Value = "808315"
End Attribute
Start Attribute
Name = "Users_Title"
ID = 3
Type = String(250)
Value = "Admin"
End Attribute
Start Attribute
Name = "User_Full_Name"
ID = 4
Type = String(80)
Value = "Rafid_Ali"
End Attribute
End Group
End Component

The highlighted four attributes above are required as per our example. You can create more attributes to suit your specific requirements, but if you do, make sure the same Class and Attributes are created on the server side as well.

Once the .MIF file is created, copy it to the location: %Windir%\CCM\Inventory\Noidmifs

Now the client side configuration is completed.

Step 4: Processing the Hardware Inventory with NOIDMIF data

1. Run the “Machine Policy Retrieval and Evaluation Cycle” so the new policies regarding the new Hardware Inventory Classes are be received.

2. Run the “Hardware Inventory Cycle” to send the new Inventory with NOIDMIF’s data. InventoryAgent.log will show that four new attributes regarding the Class “Department_Name” need to be collected for hardware Inventory data and that info needs to be sent to server.

The next line will show that “Department_InformationInventory” does not exist, but you can ignore it.


3. Now the XML file from the client computer will be received by MP_Hinv and processed into a MIF file and sent to the SMS_INVENTORY_DATA_LOADER component (dataldr.box) for processing.



4. The SMS_INVENTORY_DATA_LOADER component will receive file MIF file, process it, and then insert the data into the corresponding tables in the ConfigMgr database by running SQL stored procedures in the background.

NOTE To view the stored procedures you must enable verbose logging for the SMS_INVENTORY_DATA_LOADER component.



5. In the ConfigMgr console, open Resource Explorer for the client computer and view the Processed NOIDMIF information. You will find a new component named “Department_Information” with its Attributes and their values under HARDWARE


NOTE All of the above results and screens shots are from my lab environment setup in a simple ConfigMgr 2012 R2 configuration. It is recommended that you perform these steps in a test environment before implementing in a production environment.

Additional Information

1. NOIDMIF files themselves are not sent to the site server during a client hardware inventory cycle. The information that is contained within the NOIDMIF file is collected and added to the client inventory report.

2. When you create a NOIDMIF file, this must be saved in an ANSI encoded format. NOIDMIF files saved in UTF-8 encoded format cannot be read by Configuration Manager.

3. The Configuration.mof file is used to define the data classes to be inventoried by the hardware inventory client agent. Data classes can be created to inventory existing or custom WMI repository data classes or registry keys present on client systems.

4. The SMS_def.mof file defines the reporting classes used by the hardware inventory client agent to determine whether or not specific client data class information is reported. Reporting classes are based on the WMI repository data classes and attributes of those classes existing on clients by default or added to them by customizing the Configuration.mof file.

5. For more information on how to import Hardware Inventory class please see the following:


Rafid Ali

Get the latest System Center news on Facebook and Twitter:

clip_image001 clip_image002

System Center All Up: http://blogs.technet.com/b/systemcenter/
System Center – Configuration Manager Support Team blog: http://blogs.technet.com/configurationmgr/
System Center – Data Protection Manager Team blog: http://blogs.technet.com/dpm/
System Center – Orchestrator Support Team blog: http://blogs.technet.com/b/orchestrator/
System Center – Operations Manager Team blog: http://blogs.technet.com/momteam/
System Center – Service Manager Team blog: http://blogs.technet.com/b/servicemanager
System Center – Virtual Machine Manager Team blog: http://blogs.technet.com/scvmm

Windows Intune: http://blogs.technet.com/b/windowsintune/
WSUS Support Team blog: http://blogs.technet.com/sus/
The AD RMS blog: http://blogs.technet.com/b/rmssupp/

App-V Team blog: http://blogs.technet.com/appv/
MED-V Team blog: http://blogs.technet.com/medv/
Server App-V Team blog: http://blogs.technet.com/b/serverappv

The Forefront Endpoint Protection blog : http://blogs.technet.com/b/clientsecurity/
The Forefront Identity Manager blog : http://blogs.msdn.com/b/ms-identity-support/
The Forefront TMG blog: http://blogs.technet.com/b/isablog/
The Forefront UAG blog: http://blogs.technet.com/b/edgeaccessblog/

System Center 2012 R2 Configuration Manager ConfigMgr 2012 R2 ConfigMgr 2012 SP1 service pack 1

Comments (16)
  1. Great post, thanks! I would like to reply to the comment asking about using the NOIDMIF files on a Linux or Unix client in Configuration Manager 2012, these files are windows client specific, to customize hardware inventory for *ix machines will take a
    little bit of programming skills, here is a blog to get you started:

  2. Henrik_Dahl says:

    Thanks, good article.

  3. aamer says:

    Amazing article…you beat me to it ??

  4. Satinder says:

    Stupendous work done! 🙂

  5. Vicky says:

    Thanks bhai was looking for the same…Recently had to work on similar scenario, now have a documentation :-).
    Great Work….

  6. Harvinder Singh says:

    Good job

  7. faizan says:

    grt 🙂

  8. Daniel says:

    Solid article!

  9. Madhvi Nishad says:

    Great work ……..wel done….

  10. Alexander says:

    Nice article, good job !

  11. Vijay Nagpal says:

    Hi Rafid,

    Can we use NOIDMIF file for Linux or CentOS machine as well……I need some other information from Linux apart from default Hardware inventory.

  12. gautam says:

    Really a Very useful article.

    Thank you team

  13. Natanael Muniz says:

    This is a great article. Very well written. Thank You for the information.

  14. smar11 says:

    Great Job Rafid! You saved me a lot of time by writing this step by step! This is exactly what I needed to do for my customer.

  15. Siegbert says:

    Can you please let me know if I can test my WMI Class on few clients instead of adding globally? I'm trying to test this before adding to the default client settings & the class will be added to all the client as soon the hardware inventory policy updates.
    Please let me know if this can be tested on few machine.

Comments are closed.

Skip to main content