:: Version 2.4.0 ::


Introduced by iTop 2.4, the Data Model now includes an obsolescence notion defined per class of object, to improve user experience by highlighting / hiding obsolete objects.


Highlight obsolete objects

Object defined as obsolete are flagged in the console to make this aspect obvious, by graphical icon and tag.

On a list:

On an object:

On a list of linked object:

Improved Impact Analysis

Obsolete objects are ignored by Impact Analysis

Before iTop 2.4.0:


Hide obsolete objects

Based on user preference, objects which are defined as obsolete, are removed from displayed lists in the iTop console.

An obsolete object details is displayed regardless of user preference.

The same Farm as above displayed for a user, requesting to not display obsolete objects:

Be cautious with this user preference, it does hide existing objects:

modify mode

  • In details screen, on a drop-down list: obsolete objects will not be proposed.
  • In a relation tab, obsolete objects will not be displayed, so cannot be removed.
  • In a relation tab, obsolete objects cannot be added.

other display difference

  • Shortcut display a list without obsolete objects
  • Dashlets do not include obsolete objects
  • Global Search do not return obsolete objects
  • Audit does not report audit errors on obsolete objects
  • RunQuery does not return obsolete objects
  • Export should return a list without obsolete objects
CSV import of obsolete objects is still possible in this mode
Bulk modify does propose to modify obsolete objects, but once done, resulting list is again without obsolete
  • FIXME more cases to be added

Searching for obsolete objects

Use RunQuery and automatic attribute obsolescence_flag
Be cautious to set User Preference show obsolete data before!
obsolescence_date won't be documented unless the iTop cron is running.
This is done in background as an asynchronous task

iTop default Data Model

Which objects are Obsolete?

  1. Objects with a status equal to obsolete or inactive,
  2. Objects being a sub-object of another one, are obsolete if their main object is. Example: Physical Interface is obsolete if its ConnectableCI is. There are two exceptions to this rule: a Virtual Machine and an Hypervisor are obsolete if and only if their own status is obsolete
  3. Ticket which have been closed more than 15 months ago,
  4. License expired more than 15 months ago,

Default Obsolescence Conditions

Configuration Management core

  • Contact: status='inactive' FIXMECautious: user preference may impact who is notified
  • Document: status='obsolete'
  • Application Solution: status='inactive'
  • Business Process: status='inactive'
  • DB Server: status='inactive'
  • Database Schema: its DBServer is obsolete
  • Middleware: status='inactive'
  • Middleware Instance: its Middleware is obsolete
  • Network Device: status='obsolete'
  • Other Software: status='inactive'
  • PC Software: status='inactive'
  • Server: status='obsolete'
  • Web Application: its Web server is obsolete
  • Web server: status='inactive'
  • Group: status='obsolete'
  • Location: status='inactive'
  • OS Licence: Licence is not perpetual and end date defined and exceeded by more than 15 months
  • OS Patch: no obsolescence defined
  • Organization: status='inactive'
  • Physical Interface: its Device is obsolete
  • Software: no obsolescence defined
  • Software Licence: Licence is not perpetual and end date defined and exceeded by more than 15 months
  • Software Patch: no obsolescence defined
  • Subnet: no obsolescence defined
  • VLAN: no obsolescence defined

End User devices

On all end-user devices use the same logic defined on Physical Device: status='obsolete'

Virtualization Management

  • Farm: status='obsolete'
  • Hypervisor: status='obsolete'
  • Logical Interface: its Virtual Machine is obsolete
  • Virtual Machine: status='obsolete

Advanced Storage

  • Fiber Channel Interface: its Datacenter Device is obsolete
  • Logical Volume: its Storage System is obsolete
  • NAS: status='obsolete'
  • NAS File System: its NAS is obsolete
  • SAN Switch: status='obsolete'
  • Storage System: status='obsolete'
  • Tape: its Tape Library is obsolete
  • Tape Library: status='obsolete'


  • Enclosure: status='obsolete'
  • PDU: status='obsolete'
  • Power Source: status='obsolete'
  • Rack: status='obsolete'


Ticket (User Request, Incident and all type of Changes) are considered as obsolete, when they have been:

  • closed more than 15 months ago


  • rejected and not updated for more than 15 months

Thus allowing yearly report during the following quarter.

Configuring Obsolescence

How is it defined

  • Obsolescence is defined on a class per class basis.
  • A obsolescence condition is an OQL statement, using any field of the class, including those of type AttributeExternalField
  • Obsolescence condition are inherited from parent classes, but can be redefined on a child class.
  • If no obsolescence condition is defined on a class and none of its parent, then objects of that class are never considered as obsolete.
        <obsolescence _delta="redefine">
Adding a sophisticated obsolescence condition may lead to exceed the 61 tables limitation of MySQL. In such a case, the symptom is: MySQL can only use 61 tables in a join, mysql_errno = 1116. An example of sophisticated condition is to base the obsolescence of a Virtual Machine on the obsolescence of its Hypervisor.
An object with its status undefined (= no value = ISNULL), is not considered as obsolete by default. If you want to have undefined status considered as obsolete then use this condition:
        <obsolescence _delta="redefine">
          <condition><![CDATA[status='inactive' OR ISNULL(status)=1]]></condition>


Based on object status:

   <classes><class id="Organization"><properties><obsolescence><condition>
        <![CDATA[status = 'inactive']]>

Based on object status combined with status of a parent if parent exists :

   <classes><class id="Hypervisor"><properties><obsolescence><condition>
        <![CDATA[status = 'obsolete' OR (server_id != 0 AND server_id_obsolescence_flag)]]>

Combination of status and delay:

   <classes><class id="Ticket"><properties><obsolescence><condition>
       <![CDATA[operational_status='closed' AND (close_date < DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 15 MONTH),'%Y-%m-%d 00:00:00') OR (ISNULL(close_date) AND last_update < DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 15 MONTH),'%Y-%m-%d 00:00:00')))]]>
2_4_0/feature/obsolescence.txt ยท Last modified: 2018/02/14 10:43 (external edit)
Back to top