Obsolescence
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.
Purpose
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:
After:
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:
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
Searching for obsolete objects
obsolescence_flag
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?
-
Objects with a status equal to
obsolete
orinactive
, -
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
-
Ticket which have been
closed
more than 15 months ago, (in 2.4.x only, was removed in 2.5.0) -
License expired more than 15 months ago, (Search query cannot be cached, so cautious with high volumes)
Default Obsolescence Conditions
Configuration Management core
-
Contact:
status='inactive'
🚧 Cautious: user preference may impact who is notified -
Document:
status='obsolete'
CIs
-
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'
Miscellaneous
-
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'
Datacenter
-
Enclosure:
status='obsolete'
-
PDU:
status='obsolete'
-
Power Source:
status='obsolete'
-
Rack:
status='obsolete'
Ticket
None, due to performance issue, if based on current date, it is never cached and recomputed all the time
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"> <condition><![CDATA[status='inactive']]></condition> </obsolescence>
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> </obsolescence>
Examples
Based on object status:
<classes><class id="Organization"><properties><obsolescence><condition> <![CDATA[status = 'inactive']]> </condition></obsolescence></properties></class><classes>
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)]]> </condition></obsolescence></properties></class><classes>
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')))]]> </condition></obsolescence></properties></class><classes>