cmdbAbstractObject bizmodel,searchable,structure false autoincrement organization id %1$s name false code true active inactive status active true parent_id true DEL_MANUAL parent_id name
10 20 30 40
10 20 30 40 10 20
cmdbAbstractObject bizmodel,searchable,structure false autoincrement location id %1$s images/location.png name false active inactive status active true org_id Organization false DEL_MANUAL org_id name address true postal_code true city true country true parent_id true DEL_MANUAL org_id]]> parent_id name Contact location_id 0 0 InfrastructureCI location_id 0 0
10 20 30 40 50 60 70 80 90 100
10 20 30 40 50 60 10 20 30 40
cmdbAbstractObject bizmodel,searchable,structure true autoincrement contact id finalclass %1$s images/team.png name false active inactive status active false org_id Organization false DEL_MANUAL org_id name email false phone true org_id]]> location_id Location true DEL_MANUAL location_id name lnkContractToContact contact_id 0 0 contract_id lnkServiceToContact contact_id 0 0 service_id lnkTicketToContact contact_id 0 0 ticket_id lnkCIToContact contact_id 0 0 ci_id lnkTeamToContact contact_id 0 0 team_id
10 20 30 40 50 60 70 80 90 100 110
10 20 30 40 50 60 10 20 30 40 50 60
Contact bizmodel,searchable,structure false autoincrement person id %1$s %2$s images/person.png first_name false employee_id true
10 20 30 40 50 60 70 80 90 100 110 120 130
10 20 30 40 50 60 70 80 10 20 30 40 50 60 70
Contact bizmodel,searchable,structure false autoincrement team id %1$s images/team.png lnkTeamToContact team_id 0 0 contact_id
10 20 30 40 50 60 70 80 90 100 110 120
10 20 30 40 50 60 10 20 30 40 50
cmdbAbstractObject 1 bizmodel,searchable,structure false autoincrement lnkteamtocontact id %1$s team_id Team false DEL_AUTO team_id name contact_id Contact false DEL_AUTO contact_id name contact_id location_id contact_id location_name contact_id email contact_id phone role true
10 20 30
10 20 30 10 20 30 40 50 60
cmdbAbstractObject bizmodel,searchable,documentation true autoincrement document id finalclass %1$s images/document.png name false org_id Organization false DEL_MANUAL org_id name description true contract networkmap presentation training whitePaper workinginstructions type presentation true draft published obsolete status draft false lnkContractToDoc document_id 0 0 contract_id lnkServiceToDoc document_id 0 0 service_id lnkTicketToDoc document_id 0 0 ticket_id lnkCIToDoc document_id 0 0 ci_id
10 20 30 40 50 60 70 80 90
10 20 30 40 50 10 20 30
Document bizmodel,searchable,documentation false autoincrement externaldoc id %1$s images/document.png url false _blank
10 20 30 40 50 60 70 80 90 100
10 20 30 40 50 60 10 20 30 40
Document bizmodel,searchable,documentation false autoincrement note id %1$s images/document.png note true
10 20 30 40 50 60 70 80 90 100
10 20 30 40 50 60 10 20 30 40
Document bizmodel,searchable,documentation false autoincrement filedoc id %1$s images/document.png /** * Overload the display of the properties to add a tab (the first one) * with the preview of the document */ false public Overload-cmdbAbstractObject SetCurrentTab(Dict::S('Class:Document:PreviewTab')); $oPage->add($this->DisplayDocumentInline($oPage, 'contents')); $oPage->SetCurrentTab(Dict::S('UI:PropertiesTab')); } parent::DisplayBareProperties($oPage, $bEditMode, $sPrefix, $aExtraParams); }]]>
10 20 30 40 50 60 70 80 90 100
10 20 30 40 50 10 20 30 40
cmdbAbstractObject bizmodel,searchable,configmgmt false autoincrement licence id %1$s images/licence.png provider false org_id Organization false DEL_MANUAL org_id name product false name false start true end true licence_key true scope true usage_limit true SoftwareInstance licence_id 0 0
10 20 30 40 50 60 70 80 90 100
10 20 30 40 50 60 70 80 10 20 30 40 50
cmdbAbstractObject bizmodel,searchable,configmgmt false autoincrement subnet id %1$s / %2$s images/subnet.png description true org_id Organization false DEL_MANUAL org_id name ip false ip_mask false false public Overload-cmdbAbstractObject SetCurrentTab(Dict::S('Class:Subnet/Tab:IPUsage')); $bit_ip = ip2long($this->Get('ip')); $bit_mask = ip2long($this->Get('ip_mask')); $iIPMin = sprintf('%u', ($bit_ip & $bit_mask) | 1); // exclude the first one: identifies the subnet itself $iIPMax = sprintf('%u', (($bit_ip | (~$bit_mask))) & 0xfffffffe); // exclude the last one : broadcast address $sIPMin = long2ip($iIPMin); $sIPMax = long2ip($iIPMax); $oPage->p(Dict::Format('Class:Subnet/Tab:IPUsage-explain', $sIPMin, $sIPMax)); $oIfFilter = DBObjectSearch::FromOQL("SELECT NetworkInterface AS if WHERE INET_ATON(if.ip_address) >= INET_ATON('$sIPMin') AND INET_ATON(if.ip_address) <= INET_ATON('$sIPMax')"); $oIfSet = new CMDBObjectSet($oIfFilter); $oBlock = new DisplayBlock($oIfFilter, 'list', false); $oBlock->Display($oPage, 'nwif', array('menu' => false)); $iCountUsed = $oIfSet->Count(); $iCountRange = $iIPMax - $iIPMin; // On 32-bit systems the substraction will be computed using floats for values greater than PHP_MAX_INT; $iFreeCount = $iCountRange - $iCountUsed; $oPage->SetCurrentTab(Dict::S('Class:Subnet/Tab:FreeIPs')); $oPage->p(Dict::Format('Class:Subnet/Tab:FreeIPs-count', $iFreeCount)); $oPage->p(Dict::S('Class:Subnet/Tab:FreeIPs-explain')); $aUsedIPs = $oIfSet->GetColumnAsArray('ip_address', false); $iAnIP = $iIPMin; $iFound = 0; while (($iFound < min($iFreeCount, 10)) && ($iAnIP <= $iIPMax)) { $sAnIP = long2ip($iAnIP); if (!in_array($sAnIP, $aUsedIPs)) { $iFound++; $oPage->p($sAnIP); } else { } $iAnIP++; } } }]]>
10 20 30 40
10 20 30 40 10 20 30
cmdbAbstractObject bizmodel,searchable,configmgmt false autoincrement patch id %1$s images/patch.png name false description true target_sw true version true application os security servicepack type security false lnkPatchToCI patch_id 0 0 ci_id
10 20 30 40 50 60
10 20 30 40 50 10 20 30
cmdbAbstractObject bizmodel,searchable,configmgmt true autoincrement software id finalclass %1$s images/software.png name false description true
10 20
10 20 10
Software bizmodel,searchable,configmgmt false autoincrement software_app id %1$s images/software.png ApplicationInstance software_id 0 0
10 20 30
10 20 10
Software bizmodel,searchable,configmgmt false autoincrement software_db id %1$s images/software.png DBServerInstance software_id 0 0
10 20 30
10 20 10
cmdbAbstractObject 1 bizmodel,configmgmt false autoincrement lnkpatchtoci id %1$s patch_id Patch false DEL_AUTO patch_id name ci_id Device false DEL_AUTO ci_id name ci_id status
10 20 30
10 20 10 20 30
cmdbAbstractObject bizmodel,searchable,configmgmt true autoincrement functionalci id finalclass %1$s images/server.png name false implementation production obsolete status implementation false org_id Organization false DEL_MANUAL org_id name low medium high importance medium false lnkCIToContact ci_id 0 0 contact_id lnkCIToDoc ci_id 0 0 document_id lnkSolutionToCI ci_id 0 0 solution_id lnkContractToCI ci_id 0 0 contract_id lnkTicketToCI ci_id 0 0 ticket_id true public Overload-DBObject array("sQuery"=>"SELECT Contact AS c JOIN lnkCIToContact AS l1 ON l1.contact_id = c.id WHERE l1.ci_id = :this->id", "bPropagate"=>true, "iDistance"=>3), "solution" => array("sQuery"=>"SELECT ApplicationSolution AS s JOIN lnkSolutionToCI AS l1 ON l1.solution_id = s.id WHERE l1.ci_id = :this->id", "bPropagate"=>true, "iDistance"=>2), ); return array_merge($aRels, parent::GetRelationQueries($sRelCode)); break; default: return parent::GetRelationQueries($sRelCode); } }]]>
10 20 30 40 50 60 70 80 90
10 20 30 40 10 20 30 40
FunctionalCI bizmodel,searchable,configmgmt true autoincrement softwareinstance id %1$s - %2$s images/application.png org_id]]> device_id Device false DEL_MANUAL device_id name org_id]]> licence_id Licence true DEL_MANUAL licence_id name version true description true false public Overload-DBObject public function ComputeValues() { } true public Overload-DBObject array("sQuery"=>"SELECT DatabaseInstance AS db WHERE db.db_server_instance_id = :this->id", "bPropagate"=>true, "iDistance"=>5), ); return array_merge($aRels, parent::GetRelationQueries($sRelCode)); break; case 'depends on': $aRels = array( "applications" => array("sQuery"=>"SELECT Device JOIN SoftwareInstance AS app ON app.device_id = Device.id WHERE app.id = :this->id", "bPropagate"=>true, "iDistance"=>5), ); return array_merge($aRels, parent::GetRelationQueries($sRelCode)); break; default: return parent::GetRelationQueries($sRelCode); } }]]>
10 20 30 40 50 60 70 80 90 100 110 120 130
10 20 30 40 50 60 10 20 30 40 50 60
SoftwareInstance bizmodel,searchable,configmgmt false autoincrement softwareinstance_dbserver id %1$s - %2$s images/database.png software_id DBServer false DEL_MANUAL software_id name DatabaseInstance db_server_instance_id 0 0
10 20 30 40 50 60 70 80 90 100 110 120 130 140 150
10 20 30 40 50 60 70 10 20 30 40 50 60
SoftwareInstance bizmodel,searchable,configmgmt false autoincrement softwareinstance_application id %1$s - %2$s images/application.png software_id Application false DEL_MANUAL software_id name
10 20 30 40 50 60 70 80 90 100 110 120 130 140
10 20 30 40 50 60 70 10 20 30 40 50 60
FunctionalCI bizmodel,searchable,configmgmt false autoincrement databaseinstance id %1$s - %2$s images/database-instance.png org_id]]> db_server_instance_id DBServerInstance false DEL_MANUAL db_server_instance_id name db_server_instance_id version description true true public Overload-DBObject array("sQuery"=>"SELECT DBServerInstance AS db_server_inst JOIN DatabaseInstance AS db ON db.db_server_instance_id = db_server_inst.id WHERE db.id = :this->id", "bPropagate"=>true, "iDistance"=>5), ); return array_merge($aRels, parent::GetRelationQueries($sRelCode)); break; default: return parent::GetRelationQueries($sRelCode); } }]]>
10 20 30 40 50 60 70 80 90 100 110 120
10 20 30 40 50 60 10 20 30 40 50
FunctionalCI bizmodel,searchable,configmgmt false autoincrement applicationsolution id %1$s images/solution.png description true lnkSolutionToCI solution_id 0 0 ci_id lnkProcessToSolution solution_id 0 0 process_id true public Overload-DBObject array("sQuery"=>"SELECT BusinessProcess AS p JOIN lnkProcessToSolution AS l1 ON l1.process_id = p.id WHERE l1.solution_id = :this->id", "bPropagate"=>true, "iDistance"=>3), ); return array_merge($aRels, parent::GetRelationQueries($sRelCode)); break; case "depends on": $aRels = array( "solution" => array("sQuery"=>"SELECT FunctionalCI AS ci JOIN lnkSolutionToCI AS l1 ON l1.ci_id = ci.id WHERE l1.solution_id = :this->id", "bPropagate"=>true, "iDistance"=>2), ); return array_merge($aRels, parent::GetRelationQueries($sRelCode)); break; default: return parent::GetRelationQueries($sRelCode); } }]]>
10 20 30 40 50 60 70 80 90 100 110 120
10 20 30 40 10 20 30
FunctionalCI bizmodel,searchable,configmgmt false autoincrement businessprocess id %1$s images/business-process.png description true lnkProcessToSolution process_id 0 0 solution_id true public Overload-DBObject array("sQuery"=>"SELECT ApplicationSolution AS app JOIN lnkProcessToSolution AS l1 ON l1.solution_id = app.id WHERE l1.process_id = :this->id", "bPropagate"=>true, "iDistance"=>3), ); return array_merge($aRels, parent::GetRelationQueries($sRelCode)); break; default: return parent::GetRelationQueries($sRelCode); } }]]>
10 20 30 40 50 60 70 80 90 100
10 20 30 40 50 10 20 30
FunctionalCI bizmodel,searchable,configmgmt true autoincrement connectableci id %1$s images/server.png brand true model true serial_number true asset_ref true
10 20 30 40 50 60 70 80 90 100 110 120 130
10 20 30 40 50 60 70 80 10 20 30 40 50 60 70 80
ConnectableCI bizmodel,searchable,configmgmt false autoincrement networkinterface id %1$s - %2$s images/interface.png org_id]]> device_id Device false DEL_AUTO device_id name backup logical port primary secondary logical_type primary false atm ethernet framerelay vlan physical_type ethernet false ip_address true ip_mask true mac_address true speed true full half auto unknown duplex full true org_id]]> connected_if NetworkInterface true DEL_AUTO connected_if name connected_if device_id connected_if device_name uplink downlink link_type uplink false connected_if device_id_friendlyname true public Overload-DBObject array("sQuery"=>"SELECT Device AS dev JOIN NetworkInterface AS if1 ON if1.device_id = dev.id JOIN NetworkInterface AS if2 ON if2.connected_if = if1.id WHERE if2.id = :this->id AND if2.link_type='downlink'", "bPropagate"=>true, "iDistance"=>5), ); return array_merge($aRels, parent::GetRelationQueries($sRelCode)); break; default: return parent::GetRelationQueries($sRelCode); } }]]> false protected Overload-DBObject m_aOrigValues['connected_if']; // The interface this interface was connected to if ($iPrevTargetIf == $this->Get('connected_if')) { return; } if ($iPrevTargetIf != 0) { // The interface was previosuly connected to another interface. Make sure that we reset this 'previously connected interface' $oPrevConnectedIf = MetaModel::GetObject('NetworkInterface', $iPrevTargetIf, false); if (!is_null($oPrevConnectedIf)) { if ($oPrevConnectedIf->Get('connected_if') == $this->GetKey()) // protection against reentrance { $oPrevConnectedIf->Set('connected_if', 0); $oPrevConnectedIf->DBUpdate(); } } } $oConnIf = MetaModel::GetObject('NetworkInterface', $this->Get('connected_if'), false /* no exception if not found */); if (!is_null($oConnIf)) { $sLink = $this->Get('link_type'); $sConnLink = ($sLink == 'uplink') ? 'downlink' : 'uplink'; if (($oConnIf->Get('connected_if') != $this->GetKey()) || ($sConnLink != $oConnIf->Get('link_type'))) { // Connect the remote interface to the current one $oConnIf->Set('connected_if', $this->GetKey()); $oConnIf->Set('link_type', $sConnLink); // Need to backup the current change, because it is reset when DBUpdateTracked is complete $oConnIf->DBUpdate(); } } }]]> false protected Overload-DBObject UpdateConnectedInterface(); parent::AfterInsert(); }]]> false protected Overload-DBObject UpdateConnectedInterface(); parent::AfterUpdate(); }]]>
10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240
10 20 30 40 50 60 70 80 90 100 110 10 20 30 40 50 60 70 80
ConnectableCI bizmodel,searchable,configmgmt true autoincrement device id %1$s images/server.png NetworkInterface device_id 0 0 true public Overload-DBObject array("sQuery"=>"SELECT SoftwareInstance AS app WHERE app.device_id = :this->id", "bPropagate"=>true, "iDistance"=>5), "connected_devices" => array("sQuery"=>"SELECT Device AS dev JOIN NetworkInterface AS if1 ON if1.device_id = dev.id JOIN NetworkInterface AS if2 ON if2.connected_if = if1.id WHERE if2.device_id = :this->id AND if2.link_type='downlink'", "bPropagate"=>true, "iDistance"=>5), ); return array_merge($aRels, parent::GetRelationQueries($sRelCode)); break; case "depends on": $aRels = array( "connected_devices" => array("sQuery"=>"SELECT Device AS dev JOIN NetworkInterface AS if1 ON if1.device_id = dev.id JOIN NetworkInterface AS if2 ON if2.connected_if = if1.id WHERE if2.device_id = :this->id AND if2.link_type='uplink'", "bPropagate"=>true, "iDistance"=>5), ); return array_merge($aRels, parent::GetRelationQueries($sRelCode)); break; default: return parent::GetRelationQueries($sRelCode); } }]]>
10 20 30 40 50 60 70 80 90 100 110 120 130 140
10 20 30 40 50 60 70 80 10 20 30 40 50 60 70 80
Device bizmodel,searchable,configmgmt false autoincrement pc id %1$s images/laptop.png cpu true ram true hdd true os_family true os_version true SoftwareInstance device_id 0 0 lnkPatchToCI ci_id 0 0 patch_id
10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210
10 20 30 40 50 60 70 80 90 100 10 20 30 40 50 60
Device bizmodel,searchable,configmgmt true autoincrement mobileci id %1$s images/mobile-phone.png
10 20 30 40 50 60 70 80 90 100 110 120 130 140
10 20 30 40 50 60 70 80 10 20 30 40 50
MobileCI bizmodel,searchable,configmgmt false autoincrement mobilephone id %1$s images/mobile-phone.png number true IMIE true hw_pin true
10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170
10 20 30 40 50 60 70 80 90 100 10 20 30 40 50
Device bizmodel,searchable,configmgmt true autoincrement infrastructureci id %1$s images/server.png description true org_id]]> location_id Location true DEL_MANUAL location_id name location_details true management_ip true default_gateway true
10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190
10 20 30 40 50 60 70 80 90 100 110 10 20 30 40 50 60
InfrastructureCI bizmodel,searchable,configmgmt false autoincrement networkdevice id %1$s images/switch.png wanaccelerator firewall hub loadbalancer router switch type switch true ios_version true ram true snmp_read true snmp_write true
10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240
10 20 30 40 50 60 70 80 90 100 110 120 130 10 20 30 40 50 60 70
InfrastructureCI bizmodel,searchable,configmgmt false autoincrement server id %1$s images/server.png cpu true ram true hdd true os_family true os_version true SoftwareInstance device_id 0 0 lnkPatchToCI ci_id 0 0 patch_id
10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260
10 20 30 40 50 60 70 80 90 100 110 120 130 10 20 30 40 50 60 70
InfrastructureCI bizmodel,searchable,configmgmt false autoincrement printer id %1$s images/printer.png mopier printer type printer true laser inkjet tracer technology laser true
10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210
10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 10 20 30 40 50 60 70 80 90 100 110 120
cmdbAbstractObject bizmodel,searchable,configmgmt false autoincrement group id %1$s images/group.png name false production implementation obsolete status implementation false org_id Organization false DEL_MANUAL org_id name description true type true parent_id true DEL_MANUAL parent_id name lnkGroupToCI group_id 0 0 ci_id
10 20 30 40 50 60 70
10 20 30 40 10 20 30 40
cmdbAbstractObject 1 bizmodel,configmgmt false autoincrement lnkgrouptoci id %1$s group_id Group false DEL_MANUAL group_id name ci_id FunctionalCI false DEL_MANUAL ci_id name ci_id status reason true
10 20 30 40
10 20 30 10 20 30 40
cmdbAbstractObject 1 bizmodel,configmgmt false autoincrement lnkcitodoc id %1$s ci_id FunctionalCI false DEL_AUTO ci_id name ci_id status document_id Document false DEL_AUTO document_id name document_id type document_id status
10 20 30 40 50
10 20 10 20 30 40 50
cmdbAbstractObject 1 bizmodel,configmgmt false autoincrement lnkcitocontact id %1$s images/contact.png ci_id FunctionalCI false DEL_AUTO ci_id name ci_id status contact_id Contact false DEL_AUTO contact_id name contact_id email role true
10 20 30 40 50
10 20 30 10 20 30 40 50
cmdbAbstractObject 1 bizmodel,configmgmt false autoincrement lnksolutiontoci id %1$s solution_id ApplicationSolution false DEL_AUTO solution_id name ci_id FunctionalCI false DEL_AUTO ci_id name ci_id status utility true
10 20 30 40
10 20 30 10 20 30 40
cmdbAbstractObject 1 bizmodel,configmgmt false autoincrement lnkprocesstosolution id %1$s solution_id ApplicationSolution false DEL_AUTO solution_id name process_id BusinessProcess false DEL_AUTO process_id name reason true
10 20 30
10 20 30 10 20 30
70 Organization UR_ACTION_MODIFY UR_ALLOWED_YES 33 DataAdministration $pages/audit.php 50 DataAdministration 10 Catalogs SELECT Organization 1 20 Catalogs SELECT Application 40 Catalogs SELECT DBServer 20 0 ConfigManagement UI:ConfigMgmtMenuOverview:Title DashboardLayoutTwoCols 0 0 UI-ConfigMgmtMenuOverview-FunctionalCIbyStatus SELECT FunctionalCI status 0 0 UI-ConfigMgmtMenuOverview-FunctionalCIByType SELECT FunctionalCI finalclass 0 0 UI-ConfigMgmtMenuOverview-FunctionalCIByType SELECT FunctionalCI finalclass 1 ConfigManagement DashboardLayoutOneCol 0 0 UI:ContactsMenu itop-config-mgmt-1.0.0/images/team.png Menu:ConfigManagement:AllContacts SELECT Contact status active,inactive 1 Team 2 Person 1 0 UI-ContactsMenu-ContactsByLocation SELECT Contact location_id 1 Contact Contact 2 Contact Contact 2 ConfigManagement SELECT Document 1 3 ConfigManagement SELECT Location 1 4 ConfigManagement SELECT Group 1 5 ConfigManagement DashboardLayoutOneCol 0 0 Menu_ConfigManagement_Devices itop-config-mgmt-1.0.0/images/server.png Menu_ConfigManagement_AllDevices SELECT FunctionalCI status implementation,production,obsolete 1 Server 2 NetworkDevice 3 PC 4 MobilePhone 5 Printer 1 0 Menu:ConfigManagement:SWAndApps itop-config-mgmt-1.0.0/images/application.png 1 ApplicationInstance 2 DBServerInstance 3 DatabaseInstance 4 Patch 5 Licence 2 0 Menu:ConfigManagement:Misc itop-config-mgmt-1.0.0/images/subnet.png 1 NetworkInterface 2 Subnet 3 BusinessProcess 4 ApplicationSolution 5 Group 0 ConfigManagementCI FunctionalCI 1 ConfigManagementCI FunctionalCI 6 ConfigManagement 1 ConfigManagement:Shortcuts SELECT Server 2 ConfigManagement:Shortcuts SELECT NetworkDevice 3 ConfigManagement:Shortcuts SELECT Printer 4 ConfigManagement:Shortcuts SELECT PC 5 ConfigManagement:Shortcuts SELECT BusinessProcess 6 ConfigManagement:Shortcuts SELECT ApplicationSolution