Migrate an Extension to 3.3

XML datamodel

Breaking changes

Other nodes added to the standard datamodel

  • New class id Cloud
  • New menu node id ServiceCatalog under ServiceManagement menu group.

Class properties

  • New obsolescence rule on classes Contract, Service, ServiceSubcategory,
  • New uniqueness rule name on class OSFamily
  • New uniqueness rule name_brand on class IOSVersion
  • New uniqueness rule name_osfamily on class OSVersion
  • New fields_semantic logo on classes NetworkDeviceType, OSFamily, BusinessProcess, Application Solution, Software, MiddlewareInstance and WebApplication,

Lifecycle

  • New transition id ev_auto_resolved on states escalated_tto, approved and waiting_for_approval for class UserRequest
  • New transition id ev_auto_resolved on state escalated_tto for class Incident

Presentation

  • New default_search on class Model, IOSVersion
  • Add logo to presentation list of class Brand

Fields

  • New Dashboard field id overview on class Team.
  • New LinkedSet field id ospatches_list on class OSVersion, added to the presentation details
  • New LinkedSet field id osversions_list on class OSFamily, added to the presentation details
  • New LinkedSet fields id models_list and iosversions_list on class Brand, added to the presentation details
  • New LinkedSet field id networkdevices_list on class IOSVersion, added to the presentation details
  • New LinkedSet field id groups_list on class FunctionalCI, added to the presentation details of every CI sub-classes
  • New Image field id logo on classes OSFamily, NetworkDeviceType, BusinessProcess, Application Solution, Software, MiddlewareInstance, WebApplication, added to the presentation details
  • New Date field id end_of_support on classes Model, OSVersion, IOSVersion and Software, added to the presentation details
  • New External field id model_end_of_support on class PhysicalDevice, added to the presentation details of every PhysicalDevice sub-classes
  • New External field id ios_end_of_support on class NetworkDevice, added to the presentation details
  • New External field id os_end_of_support on classes Server, VirtualMachine and PC, added to the presentation details
  • New External field id software_end_of_support on classes SoftwareInstance, added to the presentation details of every SoftwareInstance sub-classes
  • New External field id osfamily_id on classes OSPatch and OSLicence
  • New SubItem fields id tto_time_spent and ttr_time_spent on classes Incident and UserRequest

Colors on Enum

Add colors on enum:

  • field priority on classes Incident and UserRequest
  • field request_type on classes Incident and UserRequest
  • field status on classes Document, Contract, Service, ServiceSubcategory
  • field status on classes PhysicalDevice, VirtualDevice and Group

Access rights

  • New action on group Incident to enable transitions id stimulus:ev_dispatch and stimulus:ev_reopen

Given to SuperUser:

  • New action on group Incident transition on Incident in full ITIL mode
  • New action on group Ticketing to enable transitions id stimulus:ev_close
  • collectors and datasynchro

Portal

  • New scope id service-manager on classes Service and ServiceSubcategory

Other nodes removed from the standard datamodel

  • Tab tickets_list removed from Team presentation details
  • Remove transition id ev_autoresolve on state resolved of class Incident and userRequest
  • field id request_type removed from presentation details of class UserRequest in full ITIL mode
  • Portal goto action rule
    • It's definition /itop_design/module_designs/module_design/action_rules/action_rule[@id='go-to-open-request-on-submit']
    • It's usage /itop_design/module_designs/module_design/bricks/brick[@id='services']/levels/level/levels/level/levels/level/actions/action[@id='create_from_this']/rules/rule[@id='go-to-open-request-on-submit']

Removed file

No XML file removed.

Removed dictionary entries

Entry code Replaced by Covered by migration audit
UI:Delect:Confirm_Count_ObjectsOf_Class UI:Delete:Confirm_Count_ObjectsOf_Class N°294
UI:Delect:Confirm_Object UI:Delete:Confirm_Object N°294

Deprecations

Other nodes deprecated in the standard datamodel

No other nodes deprecated in the standard datamodel.

PHP APIs

Breaking changes

Changed APIs

Attribute definition Attribute definition classes have been move to a PSR-4 compatible folder and now have a namespace. Even though we kept backward compatibility with class aliases, this results in some code pattern no longer working.

For instance, if you tested the class name directly with a string instead of the class itself, you have to migrate your code:

// Instead of doing
if (is_subclass_of('some_attcode', 'AttributeXXX')
 
// Do this
if (is_subclass_of('some_attcode', AttributeXXX::class)

Removed APIs

As announced in the previous migration notes, the following APIs have been removed. Refer to the previous migration notes to know what replaced them.

Domain Type Name Deprecated since Covered by migration audit (customers only)
Global API utils::GetClassesForInterface 3.2.0 N°221
Global API utils::ResizeImageToFit 3.3.0 N°250
Backoffice API ThemeHandler::GetCurrentThemeId 3.0.0 N°243
Backoffice API iPageUIExtension 3.0.0 N°65
Backoffice API AbstractPageUIExtension 3.0.0 N°65
Backoffice API iApplicationObjectExtension 3.0.0 N°251
Backoffice API AbstractApplicationObjectExtension 3.0.0 N°251
Backoffice API WebPage::add_linked_script 3.2.0 N°242
Backoffice API WebPage::add_linked_stylesheet 3.2.0 N°242
Backoffice API WebPage::StartCollapsibleSection 3.0.0 N°247
Backoffice API WebPage::GetStartCollapsibleSection 3.0.0 N°247
Backoffice API WebPage::EndCollapsibleSection 3.0.0 N°247
Backoffice API WebPage::GetEndCollapsibleSection 3.0.0 N°247
Backoffice API DisplayableGraph::Display 3.1.1 N°186
Backoffice API DisplayableGraph::DisplayFiltering 3.1.1 N°186
Backoffice API SLAComputation 2.7.0 N°255
Backoffice API SLAComputationAddOnAPI 2.7.0 N°255
Backoffice API ajax_page 3.0.0 N°115
Backoffice Endpoint pages/ajax.render.php xlsx_* operations 3.1.0 N.A.
Backoffice Endpoint webservices/export-v2.php 2.4.0 N°303
Object API CMDBObject::DBCloneTracked 3.1.0 N°125
Object API CMDBObject::DBCloneTracked_Internal 3.1.1 N°182
Object API CMDBObject::DBDeleteTracked_Internal 3.1.1 N°183
Object API CMDBObject::CheckUserRights 3.0.0 N°66
Object API cmdbAbstractObject::DisplayCaseLog 3.0.0 N°59
Object API MetaModel::GetFilterLabel 3.0.0 N°110
Object API MetaModel::GetAllowedValues_flt 3.0.0 N°110
Object API MetaModel::GetClassFilterDefs 3.0.0 N°110
Object Class FilterFromAttribute 3.0.0 N°110
Object Class FilterPrivateKey 3.0.0 N°110
Object Class FilterDefinition 3.0.0 N°110
WizardHelper API WizardHelper::GetJsForUpdateFields 3.0.4 N°177
Datatable API DataTableUIBlockFactory::MakeForRenderingObject 3.1.0 N°157
Newsroom API MetaModel::EnumPlugin('iNewsroomProvider') 3.2.0 N°191
Portal Method AbstractController::ForwardFromRoute 3.0.0 N°63
Portal Method AbstractController::GetControllerNameFromRoute 3.0.0 N°63
Form API Combodo\iTop\Form\Validator\Validator 3.1.0 N.A.
Renderer Method SelectObjectField::VerifyCurrentValue 3.1.0 N°245
Twig Class Combodo\iTop\TwigExtension 3.1.0 N°116

Removed files

As announced in the previous migration notes, the following APIs have been removed. Refer to the previous migration notes to know what replaced them.

Domain Type Name Deprecated since Covered by migration audit (customers only)
Global API application/ajaxwebpage.class.inc.php 3.0.0 N°115
Global API application/capturewebpage.class.inc.php 3.0.0 N°244
Global API application/clipage.class.inc.php 3.0.0 N°244
Global API application/csvpage.class.inc.php 3.0.0 N°244
Global API application/datatable.class.inc.php 3.0.0 N°95
Global API application/errorpage.class.inc.php 3.0.0 N°244
Global API application/itopwebpage.class.inc.php 3.0.0 N°115
Global API application/itopwizardwebpage.class.inc.php 3.0.0 N°244
Global API application/nicewebpage.class.inc.php 3.0.0 N°244
Global API application/pdfpage.class.inc.php 3.0.0 N°244
Global API application/webpage.class.inc.php 3.0.0 N°244
Global API application/xmlpage.class.inc.php 3.0.0 N°244
Global API core/coreexception.class.inc.php 3.0.0 N.A.
Global API core/expression.class.inc.php 3.1.0 N°112

DBObject::GetName() cannot be override anymore

DBObject::GetName() become a final method and cannot be override in a class derived from DBObject.

Covered by migration audit N°252

Class EnhancedSLAComputation cannot be override anymore

EnhancedSLAComputation become a final class and cannot be override.

Covered by migration audit N°255

ModuleInstallerAPI::MoveColumnInDB()

The ModuleInstallerAPI::MoveColumnInDB() function must not be used outside the BeforeDatabaseCreation handler

Covered by migration audit N°295

Change prototype of DBObjectSearch::GetQueryParams()

The parameters of the DBObjectSearch::GetQueryParams() were not being used; we are therefore removing them from the method’s prototype.

Covered by migration audit N°249

Deprecations

Deprecated APIs

What changed Why was it deprecated What to search for What to do if found Covered by migration audit
\InlineImage::ResizeImageToFit Duplication of \ormDocument::ResizeImageToFit InlineImage::ResizeImageToFit($oVar, $aDimensionsAfterResizing
Mind that variables names can change.
Replace with $oVar→ResizeImageToFit(MAX_WIDTH, MAX_HEIGHT, $aDimensionsAfterResizing N°299
\AttributeXXX Replaced with PSR-4 compatible classes to allow autoloading AttributeXXX Replace with \Combodo\iTop\Core\AttributeDefinition\AttributeXXX N°301
EnhancedSLAComputation::GetOpenDuration
EnhancedSLAComputation::GetDeadline
N°2683 - EnhancedSLAComputation: use common extension mechanism
$iTimeSpentBB = EnhancedSLAComputation::GetOpenDuration(..., $sCoverageOql, $sHolidaysOql);
$oDeadline= EnhancedSLAComputation::GetDeadline(..., $sCoverageOql, $sHolidaysOql);
$oComputer = new CoverageBasedWorkingTimeComputer();
$oComputer->SetCoverageOql($sCoverageOql);
$oComputer->SetHolidayseOql($sHolidaysOql);
$iTimeSpentBB = $oComputer->GetOpenDuration(...);
$oDeadline = $oComputer->GetDeadline(...);
N°113
EnhancedSLAComputation::GetOpenDurationFromCoverage
EnhancedSLAComputation::GetDeadlineFromCoverage
N°2683 - EnhancedSLAComputation: use common extension mechanism
$iTimeSpentBB = EnhancedSLAComputation::GetOpenDurationFromCoverage ($oCoverage, ...);
$oDeadline= EnhancedSLAComputation::GetDeadlineFromCoverage($oCoverage, ...);
$oComputer = new CoverageBasedWorkingTimeComputer();
$oComputer->SetCoverageOql($sCoverageOql);
$oComputer->SetHolidayseOql($sHolidaysOql);
$iTimeSpentBB = $oComputer->GetOpenDurationFromCoverage($oCoverage, ...);
$oDeadline = $oComputer->GetDeadlineFromCoverage($oCoverage, ...);
N°256
EnhancedSLAComputation::IsInsideCoverage N°2683 - EnhancedSLAComputation: use common extension mechanism EnhancedSLAComputation::IsInsideCoverage ($oCurDate, $oCoverage, $oHolidaySet); $oCoverage→IsInsideCoverage($oCurDate, $oHolidaySet); N°257

Deprecated files

What changed Why was it deprecated What to search for What to do if found Covered by migration audit
core/attributedef.class.inc.php Replaced with PSR-4 compatible classes to allow autoloading of AttributeXXX classes core/attributedef.class.inc.php Remove it completly N°301

Calling a module page via exec.php

When calling a module page via exec.php you must checked that the user is logged inside the concerned page :

<?php
// Your own module page which will be called by exec.php
LoginWebPage::DoLoginEx();

Otherwise you can declare the page as white listed in the delegated_authentication_endpoints option in module.XXX.php file :

'delegated_authentication_endpoints'=>['index.php','open_access.php'],

Ultimately, you can also opt out from the safe mode in your configuration file, but we do not recommend this.

'security.force_login_when_no_delegated_authentication_endpoints_list' => false

Covered by migration audit N°283

Userrights management override is deprecated

Override the user rights management is now deprecated and will be removed in the next version.

// This configuration will not be supported in the next version
$MyModules = array(
    'addons' => array('user rights' => 'addons/userrights/userrightsprofile.class.inc.php'),
);

Covered by migration audit N°248

JS APIs

Breaking changes

Removed APIs

As announced in the previous migration notes, the following APIs have been removed. Refer to the previous migration notes to know what replaced them.

Domain Type Name Deprecated since Covered by migration audit (customers only)
Global Library js/json.js 3.2.0 N°196
Global Library js/json/json2.js 3.2.0 N°196
Global Library js/jquery.layout.js 3.0.0 N°89
Global Library js/jquery.treeview.pack.js 3.2.0 N°196
Global Library js/themes 3.2.0 N°196
Global Library js/wizard.utils.js 3.2.0 N°300
Global Function EncodeHtml() 3.0.0 N°39

Removed files

We removed the JS files and folder that were deprecated in 3.0.0

  js/
     datatable.js
     date.js
     hovertip.js
     jquery-ui-1.11.4.custom.min.js
     jquery.layout.min.js
     jquery.qtip-1.0.min.js
     jquery.tablesorter.js
     jquery.tablesorter.pager.js
     jquery.tablehover.js

We removed the JS files and folder that were deprecated in 3.2.0

  js/
     json/
        json2.js
     json.js
     jquery.treeview.pack.js
     themes/*
     wizard.utils.js 
json2.js, json.js, themes/* : those files aren't used in iTop since a long time. If you want to keep them for older versions, add a test using version_compare() and the ITOP_DESIGN_LATEST_VERSION constant.
if (version_compare(ITOP_DESIGN_LATEST_VERSION, '3.2', '<')) {
        // Deprecated lib in iTop 3.2.0
        $oP->add_linked_script(utils::GetAbsoluteUrlAppRoot().'js/json.js');
}

jquery.treeview.pack.js : use /js/jquery.treeview.min.js instead

We removed some files from JS libraries and moved them to `node_modules`

  js/
     ace/*
     mousetrap/*
     c3.js
     c3.min.js
     d3.js
     d3.min.js
     clipboard.min.js
     jquery.autocomplete.js
     jquery.contextMenu.js
     jquery.fileupload.js
     jquery.iframe-transport.js
     jquery-ui.custom.min.js
     jquery.min.js
     jquery.magnific-popup.js
     jquery.magnific-popup.min.js
     jquery-migrate.dev.js
     jquery-migrate.prod.min.js
     moment-with-locales.min.js
     showdown.min.js
     

Deprecations

Deprecated APIs

No deprecated API.

Deprecated files

No deprecated file.

CSS APIs

Breaking changes

Removed APIs

No removed API.

Removed files

We removed a bunch of CSS files from legacy iTop look

  css/
      css-variables.scss
      light-grey.scss
      
      

We also removed some files from external libraries and moved them to `node_modules`

  css/
      c3.min.css
      jquery.contextMenu.css
      magnific-popup.css

Deprecations

Deprecated APIs

No deprecated API.

Deprecated files

No removed file.

Others

Breaking changes

We removed a bunch of images from iTop, mostly deprecated icons from pre-3.0 rework

  datamodels/2.x/
      itop-change-mgmt/images/*.png
      itop-change-mgmt-itil/images/*.png
      itop-config-mgmt/images/*.png
      itop-datacenter-mgmt/images/*.png
      itop-endusers-devices/images/*.png
      itop-faq-light/images/*.png
      itop-incident-mgmt-itil/images/*.png
      itop-knownerror-mgmt/images/*.png
      itop-problem-mgmt/images/*.png
      itop-request-mgmt/images/*.png
      itop-request-mgmt-itil/images/*.png
      itop-service-mgmt/images/*.png
      itop-service-mgmt-provider/images/*.png
      itop-storage-mgmt/images/*.png
      itop-structure/images/*.png
      itop-tickets/images/*.png
      itop-virtualization-mgmt/images/*.png
      itop-welcome-itil/images/*.png
     
latest/release/developer.txt · Last modified: 2026/09/14 10:56 by 127.0.0.1
Back to top
Contact us