# Common Information Model (computing)

The Common Information Model (CIM) is an open standard that defines how managed elements in an IT environment are represented as a common set of objects and relationships between them.
The Distributed Management Task Force maintains the CIM to allow consistent management of these managed elements, independent of their manufacturer or provider.

## Overview

One way to describe CIM is to say that it allows multiple parties to exchange management information about these managed elements. However, this falls short of fully capturing CIM's ability not only to describe these managed elements and the management information, but also to actively control and manage them. By using a common model of information, management software can be written once and work with many implementations of the common model without complex and costly conversion operations or loss of information.
The CIM standard is defined and published by the Distributed Management Task Force (DMTF). A related standard is Web-Based Enterprise Management (WBEM, also defined by DMTF) which defines a particular implementation of CIM, including protocols for discovering and accessing such CIM implementations.

## Schema and specifications

The CIM standard includes the CIM Infrastructure Specification and the CIM Schema:
* CIM Infrastructure Specification
    The CIM Infrastructure Specification defines the architecture and concepts of CIM, including a language by which the CIM Schema (including any extension schema) is defined, and a method for mapping CIM to other information models, such as SNMP. The CIM architecture is based upon UML, so it is object-oriented: The managed elements are represented as CIM classes and any relationships between them are represented as CIM associations. Inheritance allows specialization of common base elements into more specific derived elements.
* CIM Schema
    The CIM Schema is a conceptual schema which defines the specific set of objects and relationships between them that represent a common base for the managed elements in an IT environment. The CIM Schema covers most of today's elements in an IT environment, for example computer systems, operating systems, networks, middleware, services and storage. Classes can be, for example: CIM_ComputerSystem, CIM_OperatingSystem, CIM_Process, CIM_DataFile. The CIM Schema defines a common basis for representing these managed elements. Since most managed elements have product and vendor specific behavior, the CIM Schema is extensible in order to allow the producers of these elements to represent their specific features seamlessly together with the common base functionality defined in the CIM Schema.
    Updates to the CIM Schema are published regularly.
CIM is the basis for most of the other DMTF standards (e.g. WBEM or SMASH). It is also the basis for the SMI-S standard for storage management.

## Implementations
### Infrastructure Implementations

Many vendors provide implementations of CIM in various forms:
* Some operating systems provide a CIM implementation, for example:
** the Windows Management Instrumentation (WMI) API available in Microsoft Windows 2000 and higher
** the Windows Management Infrastructure (MI) API for Microsoft Windows 2012 and higher
** some Linux distributions with the SBLIM (Standards Based Linux Instrumentation for Manageability) project
* Some implementations are Independent of the systems they support, for example:
** Open Group's Pegasus
** WSI's J WBEM Server
There is also a growing number of tools market around CIM.

### Management Standards based on the CIM Schema

Standards organizations have defined management standards based on the CIM Schema:
* The Storage Networking Industry Association (SNIA) has heavily bought into using CIM and WBEM: they have defined their usage of CIM (called Storage Management Initiative – Specification or SMI-S) as a standard.
* Some server manufacturers collaborate in the DMTF under the SMASH initiative to define CIM-based management of servers.
* The DASH initiative in the DMTF attempts to define CIM-based management of desktop computers.

### Communication protocols used

A number of protocols are defined for messages transmitted between clients and servers. The message protocols are transmitted on top of HTTP. There are two message types:
* operational messages, which provoke a response from the receiver (RPC)
* export messages, which are indications/events.

#### CIM Operations over HTTP (CIM-XML)

CIM-XML forms part of the WBEM protocol family, and is standardised by the DMTF.
CIM-XML comprises three specifications:
* CIM Operations over HTTP
* Representation of CIM using XML
* CIM DTD

#### WS-Management

WS-MAN forms part of the WBEM protocol family, and is standardised by the DMTF.
WS-MAN comprises 3 specifications:
* WS-CIM Mapping Specification
* WS-Management CIM Binding Specification
* Web Services for Management (WS- Management) Specification

#### CIM operations over RESTful services

CIM-RS forms part of the WBEM protocol family, and is standardised by the DMTF.
CIM-RS comprises three specifications:
* CIM Operations Over RESTful Services
* CIM-RS Protocol Specification
* CIM-RS Payload Representation in JSON