N°8760 - Audit uninstall of extensions that declare final classes

N°8760 - be able to list modules based on extension choices
refactoring: move some classes in a moduleinstallation folder (coming
namespace)

N°8760 - module dependency check applied before audit

N°8760 - make dependency check work during audit

N°8760 - fix ci

N°8760 - fix ci

N°8760 - add GetCreatedIn to get module name based on DBObject class - everything stored in MetaModel during compilation and autoload

N°8760 - be able to describe from which module a datamodel class comes via MetaModel created_in field

N°8760 - rename GetCreatedIn <- GetModuleName + compute module name live instead having complex stuff in MetaModel/compilation

temp review 1

review: renaming InstallationChoicesToModuleConverter

review: renaming InstallationChoicesToModuleConverter

review: ModuleDiscovery:GetModulesOrderedByDependencies replacing deprecated GetAvailableModules method

ci: fix typo

cleanup

review: rework InstallationChoicesToModuleConverter

N°8760 - review tests
This commit is contained in:
odain
2026-01-21 17:00:24 +01:00
parent bb6248a6e7
commit 77626f8159
30 changed files with 1139 additions and 119 deletions

View File

@@ -0,0 +1,162 @@
<?php
namespace Combodo\iTop\Test\UnitTest\Setup;
use AnalyzeInstallation;
use Combodo\iTop\Test\UnitTest\ItopTestCase;
use ModuleInstallationRepository;
class AnalyzeInstallationTest extends ItopTestCase
{
protected function setUp(): void
{
parent::setUp();
$this->RequireOnceItopFile('setup/modulediscovery.class.inc.php');
$this->RequireOnceItopFile('setup/runtimeenv.class.inc.php');
}
public static function AnalyzeInstallationProvider()
{
//$aModules = json_decode(file_get_contents(__DIR__.'/ressources/priv_modules.json'), true);
$aAnalyzeInstallationOutput = json_decode(file_get_contents(__DIR__.'/ressources/analyze_installation_output.json'), true);
$aAvailableModules = json_decode(file_get_contents(__DIR__.'/ressources/available_modules.json'), true);
return [
'new modules not in DB setup history' => [
'aAvailableModules' => [
'mandatory_module/1.0.0' => [
"mandatory" => true,
"ga" => "bu",
],
'optional_module/6.6.6' => [
"mandatory" => false,
"zo" => "meu",
],
],
'aInstalledModules' => [],
'expected' => [
'_Root_' => [
'installed_version' => '',
'available_version' => 'ITOP_VERSION_FULL',
'name_code' => 'ITOP_APPLICATION',
],
'mandatory_module' => [
"mandatory" => true,
'installed_version' => '',
'available_version' => '1.0.0',
'install' => [
'flag' => 2,
'message' => 'the module is part of the application',
],
"ga" => "bu",
],
'optional_module' => [
"mandatory" => false,
'installed_version' => '',
'available_version' => '6.6.6',
"zo" => "meu",
'install' => [
'flag' => 1,
'message' => '',
],
],
],
],
'new modules ALREADY in DB setup history' => [
'aAvailableModules' => [
'mandatory_module/1.0.0' => [
"mandatory" => true,
"ga" => "bu",
],
'optional_module/6.6.6' => [
"mandatory" => false,
"zo" => "meu",
],
],
'aInstalledModules' => json_decode(file_get_contents(__DIR__.'/ressources/priv_modules_simpleusecase.json'), true),
'expected' => [
'_Root_' => [
'installed_version' => '3.3.0-dev-svn',
'available_version' => 'ITOP_VERSION_FULL',
'name_code' => 'ITOP_APPLICATION',
],
'mandatory_module' => [
"mandatory" => true,
'installed_version' => '3.3.0',
'available_version' => '1.0.0',
"ga" => "bu",
'install' => [
'flag' => 2,
'message' => 'the module is part of the application',
],
'uninstall' => [
'flag' => 3,
'message' => 'the module is part of the application',
],
],
'optional_module' => [
"mandatory" => false,
'installed_version' => '3.3.0',
'available_version' => '6.6.6',
"zo" => "meu",
'install' => [
'flag' => 1,
'message' => '',
],
'uninstall' => [
'flag' => 1,
'message' => '',
],
],
],
],
'dummyfirst installation' => [
'aAvailableModules' => [],
'aInstalledModules' => [],
'expected' => [
'_Root_' => [
'installed_version' => '',
'available_version' => 'ITOP_VERSION_FULL',
'name_code' => 'ITOP_APPLICATION',
],
],
],
'dummy 2nd installation' => [
'aAvailableModules' => [],
'aInstalledModules' => json_decode(file_get_contents(__DIR__.'/ressources/priv_modules2.json'), true),
'expected' => [
'_Root_' => [
'installed_version' => '3.3.0-dev-svn',
'available_version' => 'ITOP_VERSION_FULL',
'name_code' => 'ITOP_APPLICATION',
],
],
],
'real_case' => [
'aAvailableModules' => $aAvailableModules,
'aInstalledModules' => json_decode(file_get_contents(__DIR__.'/ressources/priv_modules2.json'), true),
'expected' => $aAnalyzeInstallationOutput,
],
];
}
/**
* @dataProvider AnalyzeInstallationProvider
*/
public function testAnalyzeInstallation($aAvailableModules, $aInstalledModules, $expected)
{
$sContent = str_replace(['ITOP_VERSION_FULL', 'ITOP_APPLICATION'], [ITOP_VERSION_FULL, ITOP_APPLICATION], json_encode($expected));
$expected = json_decode($sContent, true);
$this->SetNonPublicProperty(AnalyzeInstallation::GetInstance(), "aAvailableModules", $aAvailableModules);
//$aModules = json_decode(file_get_contents(__DIR__.'/ressources/priv_modules2.json'), true);
$this->SetNonPublicProperty(ModuleInstallationRepository::GetInstance(), "aSelectInstall", $aInstalledModules);
$oConfig = $this->createMock(\Config::class);
$modulesPath = [
APPROOT.'extensions',
];
$aModules = AnalyzeInstallation::GetInstance()->AnalyzeInstallation($oConfig, $modulesPath, false, null);
$this->assertEquals($expected, $aModules);
}
}

View File

@@ -0,0 +1,430 @@
<?php
/**
* @copyright Copyright (C) 2010-2025 Combodo SARL
* @license http://opensource.org/licenses/AGPL-3.0
*/
use Combodo\iTop\Test\UnitTest\ItopDataTestCase;
class InstallationChoicesToModuleConverterTest extends ItopDataTestCase
{
protected function setUp(): void
{
parent::setUp();
$this->RequireOnceItopFile('/setup/moduleinstallation/InstallationChoicesToModuleConverter.php');
}
protected function tearDown(): void
{
parent::tearDown();
ModuleDiscovery::ResetCache();
}
//integration test
public function testGetModulesWithXmlInstallationFile_UsualCustomerPackagesWithNonITIL()
{
$aSearchDirs = $this->GivenModuleDiscoveryInit();
$aInstalledModules = InstallationChoicesToModuleConverter::GetInstance()->GetModules(
$this->GivenNonItilChoices(),
$aSearchDirs,
__DIR__.'/ressources/installation.xml'
);
$aExpected = [
'authent-cas/3.3.0',
'authent-external/3.3.0',
'authent-ldap/3.3.0',
'authent-local/3.3.0',
'combodo-backoffice-darkmoon-theme/3.3.0',
'combodo-backoffice-fullmoon-high-contrast-theme/3.3.0',
'combodo-backoffice-fullmoon-protanopia-deuteranopia-theme/3.3.0',
'combodo-backoffice-fullmoon-tritanopia-theme/3.3.0',
'itop-attachments/3.3.0',
'itop-backup/3.3.0',
'itop-config/3.3.0',
'itop-files-information/3.3.0',
'itop-portal-base/3.3.0',
'itop-portal/3.3.0',
'itop-profiles-itil/3.3.0',
'itop-sla-computation/3.3.0',
'itop-structure/3.3.0',
'itop-themes-compat/3.3.0',
'itop-tickets/3.3.0',
'itop-welcome-itil/3.3.0',
'combodo-db-tools/3.3.0',
'itop-config-mgmt/3.3.0',
'itop-core-update/3.3.0',
'itop-datacenter-mgmt/3.3.0',
'itop-endusers-devices/3.3.0',
'itop-faq-light/3.3.0',
'itop-hub-connector/3.3.0',
'itop-knownerror-mgmt/3.3.0',
'itop-oauth-client/3.3.0',
'itop-request-mgmt/3.3.0',
'itop-service-mgmt/3.3.0',
'itop-storage-mgmt/3.3.0',
'itop-virtualization-mgmt/3.3.0',
'itop-bridge-cmdb-services/3.3.0',
'itop-bridge-cmdb-ticket/3.3.0',
'itop-bridge-datacenter-mgmt-services/3.3.0',
'itop-bridge-endusers-devices-services/3.3.0',
'itop-bridge-storage-mgmt-services/3.3.0',
'itop-bridge-virtualization-mgmt-services/3.3.0',
'itop-bridge-virtualization-storage/3.3.0',
'itop-change-mgmt/3.3.0',
];
$this->assertEquals($aExpected, $aInstalledModules);
}
//integration test
public function testGetModulesWithXmlInstallationFile_UsualCustomerPackagesWithITIL()
{
$aSearchDirs = $this->GivenModuleDiscoveryInit();
$aInstalledModules = InstallationChoicesToModuleConverter::GetInstance()->GetModules(
$this->GivenItilChoices(),
$aSearchDirs,
__DIR__.'/ressources/installation.xml'
);
$aExpected = [
'authent-cas/3.3.0',
'authent-external/3.3.0',
'authent-ldap/3.3.0',
'authent-local/3.3.0',
'combodo-backoffice-darkmoon-theme/3.3.0',
'combodo-backoffice-fullmoon-high-contrast-theme/3.3.0',
'combodo-backoffice-fullmoon-protanopia-deuteranopia-theme/3.3.0',
'combodo-backoffice-fullmoon-tritanopia-theme/3.3.0',
'itop-attachments/3.3.0',
'itop-backup/3.3.0',
'itop-config/3.3.0',
'itop-files-information/3.3.0',
'itop-portal-base/3.3.0',
'itop-portal/3.3.0',
'itop-profiles-itil/3.3.0',
'itop-sla-computation/3.3.0',
'itop-structure/3.3.0',
'itop-themes-compat/3.3.0',
'itop-tickets/3.3.0',
'itop-welcome-itil/3.3.0',
'combodo-db-tools/3.3.0',
'itop-config-mgmt/3.3.0',
'itop-core-update/3.3.0',
'itop-datacenter-mgmt/3.3.0',
'itop-endusers-devices/3.3.0',
'itop-hub-connector/3.3.0',
'itop-incident-mgmt-itil/3.3.0',
'itop-oauth-client/3.3.0',
'itop-request-mgmt-itil/3.3.0',
'itop-service-mgmt/3.3.0',
'itop-storage-mgmt/3.3.0',
'itop-virtualization-mgmt/3.3.0',
'itop-bridge-cmdb-services/3.3.0',
'itop-bridge-cmdb-ticket/3.3.0',
'itop-bridge-datacenter-mgmt-services/3.3.0',
'itop-bridge-endusers-devices-services/3.3.0',
'itop-bridge-storage-mgmt-services/3.3.0',
'itop-bridge-virtualization-mgmt-services/3.3.0',
'itop-bridge-virtualization-storage/3.3.0',
'itop-change-mgmt-itil/3.3.0',
'itop-full-itil/3.3.0',
];
$this->assertEquals($aExpected, $aInstalledModules);
}
//integration test
public function testGetModulesWithXmlInstallationFile_LegacyPackages()
{
$aSearchDirs = $this->GivenModuleDiscoveryInit();
//no choices means all default ones...
$aNoInstallationChoices = [];
$aInstalledModules = InstallationChoicesToModuleConverter::GetInstance()->GetModules(
$aNoInstallationChoices,
$aSearchDirs
);
$aExpected = [
'authent-cas/3.3.0',
'authent-external/3.3.0',
'authent-ldap/3.3.0',
'authent-local/3.3.0',
'combodo-backoffice-darkmoon-theme/3.3.0',
'combodo-backoffice-fullmoon-high-contrast-theme/3.3.0',
'combodo-backoffice-fullmoon-protanopia-deuteranopia-theme/3.3.0',
'combodo-backoffice-fullmoon-tritanopia-theme/3.3.0',
'itop-backup/3.3.0',
'itop-config/3.3.0',
'itop-files-information/3.3.0',
'itop-portal-base/3.3.0',
'itop-profiles-itil/3.3.0',
'itop-sla-computation/3.3.0',
'itop-structure/3.3.0',
'itop-welcome-itil/3.3.0',
];
$this->assertEquals($aExpected, $aInstalledModules);
}
public function testIsDefaultModule_RootModuleShouldNeverBeDefault()
{
$sModuleId = ROOT_MODULE;
$aModuleInfo = ['category' => 'authentication', 'visible' => false];
$this->assertFalse($this->CallIsDefault($sModuleId, $aModuleInfo));
}
public function testIsDefaultModule_AutoselectShouldNeverBeDefault()
{
$sModuleId = 'autoselect_module';
$aModuleInfo = ['category' => 'authentication', 'visible' => false, 'auto_select' => true];
$this->assertFalse($this->CallIsDefault($sModuleId, $aModuleInfo));
}
public function testIsDefaultModule_AuthenticationModuleShouldBeDefault()
{
$sModuleId = 'authentication_module';
$aModuleInfo = ['category' => 'authentication', 'visible' => true];
$this->assertTrue($this->CallIsDefault($sModuleId, $aModuleInfo));
}
public function testIsDefaultModule_HiddenModuleShouldBeDefault()
{
$sModuleId = 'hidden_module';
$aModuleInfo = ['category' => 'business', 'visible' => false];
$this->assertTrue($this->CallIsDefault($sModuleId, $aModuleInfo));
}
public function testIsDefaultModule_NonModuleDefaultCase()
{
$sModuleId = 'any_module';
$aModuleInfo = ['category' => 'business', 'visible' => true];
$this->assertFalse($this->CallIsDefault($sModuleId, $aModuleInfo));
}
private function CallIsDefault($sModuleId, $aModuleInfo): bool
{
return $this->InvokeNonPublicMethod(InstallationChoicesToModuleConverter::class, 'IsDefaultModule', InstallationChoicesToModuleConverter::GetInstance(), [$sModuleId, $aModuleInfo]);
}
public function testIsAutoSelectedModule_RootModuleShouldNeverBeAutoSelect()
{
$sModuleId = ROOT_MODULE;
$aModuleInfo = ['auto_select' => true];
$this->assertFalse($this->CallIsAutoSelectedModule([], $sModuleId, $aModuleInfo));
}
public function testIsAutoSelectedModule_NoAutoselectByDefault()
{
$sModuleId = 'autoselect_module';
$aModuleInfo = [];
$this->assertFalse($this->CallIsAutoSelectedModule([], $sModuleId, $aModuleInfo));
}
/**
* @return void
* cf DependencyExpression dedicated tests
*/
public function testIsAutoSelectedModule_UseInstalledModulesForComputation()
{
$sModuleId = "any_module";
$aModuleInfo = ['auto_select' => 'SetupInfo::ModuleIsSelected("a") && SetupInfo::ModuleIsSelected("b")'];
$aInstalledModules = ['a' => true, 'b' => true];
$this->assertTrue($this->CallIsAutoSelectedModule($aInstalledModules, $sModuleId, $aModuleInfo));
}
private function CallIsAutoSelectedModule($aInstalledModules, $sModuleId, $aModuleInfo): bool
{
return $this->InvokeNonPublicMethod(InstallationChoicesToModuleConverter::class, 'IsAutoSelectedModule', InstallationChoicesToModuleConverter::GetInstance(), [$aInstalledModules, $sModuleId, $aModuleInfo]);
}
public function testProcessInstallationChoices_Default()
{
$aRes = [];
$aInstallationDescription = $this->GivenInstallationChoiceDescription();
$this->CallGetModuleNamesFromInstallationChoices([], $aInstallationDescription, $aRes);
$aExpected = [
'combodo-backoffice-darkmoon-theme' => true,
'combodo-backoffice-fullmoon-high-contrast-theme' => true,
'combodo-backoffice-fullmoon-protanopia-deuteranopia-theme' => true,
'combodo-backoffice-fullmoon-tritanopia-theme' => true,
'itop-attachments' => true,
'itop-backup' => true,
'itop-config' => true,
'itop-files-information' => true,
'itop-profiles-itil' => true,
'itop-structure' => true,
'itop-themes-compat' => true,
'itop-tickets' => true,
'itop-welcome-itil' => true,
'combodo-db-tools' => true,
'itop-config-mgmt' => true,
'itop-core-update' => true,
'itop-hub-connector' => true,
'itop-oauth-client' => true,
'combodo-password-expiration' => true,
'combodo-webhook-integration' => true,
'combodo-my-account-user-info' => true,
'authent-token' => true,
];
$this->assertEquals($aExpected, $aRes);
}
public function testProcessInstallationChoices_NonItilChoices()
{
$aRes = [];
$aInstallationDescription = $this->GivenInstallationChoiceDescription();
$this->CallGetModuleNamesFromInstallationChoices($this->GivenNonItilChoices(), $aInstallationDescription, $aRes);
$aExpected = [
'combodo-backoffice-darkmoon-theme' => true,
'combodo-backoffice-fullmoon-high-contrast-theme' => true,
'combodo-backoffice-fullmoon-protanopia-deuteranopia-theme' => true,
'combodo-backoffice-fullmoon-tritanopia-theme' => true,
'itop-attachments' => true,
'itop-backup' => true,
'itop-config' => true,
'itop-files-information' => true,
'itop-profiles-itil' => true,
'itop-structure' => true,
'itop-themes-compat' => true,
'itop-tickets' => true,
'itop-welcome-itil' => true,
'combodo-db-tools' => true,
'itop-config-mgmt' => true,
'itop-core-update' => true,
'itop-hub-connector' => true,
'itop-oauth-client' => true,
'combodo-password-expiration' => true,
'combodo-webhook-integration' => true,
'combodo-my-account-user-info' => true,
'authent-token' => true,
'itop-datacenter-mgmt' => true,
'itop-endusers-devices' => true,
'itop-storage-mgmt' => true,
'itop-virtualization-mgmt' => true,
'itop-service-mgmt' => true,
'itop-request-mgmt' => true,
'itop-portal' => true,
'itop-portal-base' => true,
'itop-change-mgmt' => true,
'itop-faq-light' => true,
'itop-knownerror-mgmt' => true,
];
$this->assertEquals($aExpected, $aRes);
}
public function testProcessInstallationChoices_ItilChoices()
{
$aRes = [];
$aInstallationDescription = $this->GivenInstallationChoiceDescription();
$this->CallGetModuleNamesFromInstallationChoices($this->GivenItilChoices(), $aInstallationDescription, $aRes);
$aExpected = [
'combodo-backoffice-darkmoon-theme' => true,
'combodo-backoffice-fullmoon-high-contrast-theme' => true,
'combodo-backoffice-fullmoon-protanopia-deuteranopia-theme' => true,
'combodo-backoffice-fullmoon-tritanopia-theme' => true,
'itop-attachments' => true,
'itop-backup' => true,
'itop-config' => true,
'itop-files-information' => true,
'itop-profiles-itil' => true,
'itop-structure' => true,
'itop-themes-compat' => true,
'itop-tickets' => true,
'itop-welcome-itil' => true,
'combodo-db-tools' => true,
'itop-config-mgmt' => true,
'itop-core-update' => true,
'itop-hub-connector' => true,
'itop-oauth-client' => true,
'combodo-password-expiration' => true,
'combodo-webhook-integration' => true,
'combodo-my-account-user-info' => true,
'authent-token' => true,
'itop-datacenter-mgmt' => true,
'itop-endusers-devices' => true,
'itop-storage-mgmt' => true,
'itop-virtualization-mgmt' => true,
'itop-service-mgmt' => true,
'itop-portal' => true,
'itop-portal-base' => true,
'itop-request-mgmt-itil' => true,
'itop-incident-mgmt-itil' => true,
'itop-change-mgmt-itil' => true,
];
$this->assertEquals($aExpected, $aRes);
}
private function CallGetModuleNamesFromInstallationChoices(array $aInstallationChoices, array $aInstallationDescription, array &$aModuleNames)
{
$this->InvokeNonPublicMethod(
InstallationChoicesToModuleConverter::class,
'GetModuleNamesFromInstallationChoices',
InstallationChoicesToModuleConverter::GetInstance(),
[$aInstallationChoices, $aInstallationDescription, &$aModuleNames]
);
}
private function GivenInstallationChoiceDescription(): array
{
$oXMLParameters = new XMLParameters(__DIR__."/ressources/installation.xml");
return $oXMLParameters->Get('steps', []);
}
private function GivenAllModules(): array
{
return json_decode(file_get_contents(__DIR__.'/ressources/available_modules.json'), true);
}
private function GivenNonItilChoices(): array
{
return [
'itop-config-mgmt-core',
'itop-config-mgmt-datacenter',
'itop-config-mgmt-end-user',
'itop-config-mgmt-storage',
'itop-config-mgmt-virtualization',
'itop-service-mgmt-enterprise',
'itop-ticket-mgmt-simple-ticket',
'itop-ticket-mgmt-simple-ticket-enhanced-portal',
'itop-change-mgmt-simple',
'itop-kown-error-mgmt',
];
}
private function GivenItilChoices(): array
{
return [
'itop-config-mgmt-datacenter',
'itop-config-mgmt-end-user',
'itop-config-mgmt-storage',
'itop-config-mgmt-virtualization',
'itop-service-mgmt-enterprise',
'itop-ticket-mgmt-itil',
'itop-ticket-mgmt-itil-user-request',
'itop-ticket-mgmt-itil-incident',
'itop-ticket-mgmt-itil-enhanced-portal',
'itop-change-mgmt-itil',
'itop-config-mgmt-core',
];
}
private function GivenModuleDiscoveryInit(): array
{
$aSearchDirs = [APPROOT.'datamodels/2.x'];
$this->SetNonPublicStaticProperty(ModuleDiscovery::class, 'm_aSearchDirs', $aSearchDirs);
$aAllModules = $this->GivenAllModules();
$this->SetNonPublicStaticProperty(ModuleDiscovery::class, 'm_aModules', $aAllModules);
return $aSearchDirs;
}
}

View File

@@ -0,0 +1,230 @@
<?xml version="1.0" encoding="UTF-8"?>
<installation>
<steps type="array">
<step>
<title>Configuration Management options</title>
<description><![CDATA[<h2>The options below allow you to configure the type of elements that are to be managed inside iTop.</h2>]]></description>
<banner>/images/icons/icons8-apps-tab.svg</banner>
<options type="array">
<choice>
<extension_code>itop-config-mgmt-core</extension_code>
<title>Configuration Management Core</title>
<description>All the base objects that are mandatory in the iTop CMDB: Organizations, Locations, Teams, Persons, etc.</description>
<modules type="array">
<module>combodo-backoffice-darkmoon-theme</module>
<module>combodo-backoffice-fullmoon-high-contrast-theme</module>
<module>combodo-backoffice-fullmoon-protanopia-deuteranopia-theme</module>
<module>combodo-backoffice-fullmoon-tritanopia-theme</module>
<module>combodo-db-tools</module>
<module>combodo-password-expiration</module>
<module>combodo-webhook-integration</module>
<module>itop-attachments</module>
<module>itop-backup</module>
<module>itop-config</module>
<module>itop-config-mgmt</module>
<module>itop-core-update</module>
<module>itop-files-information</module>
<module>itop-hub-connector</module>
<module>itop-oauth-client</module>
<module>itop-profiles-itil</module>
<module>itop-structure</module>
<module>itop-themes-compat</module>
<module>itop-tickets</module>
<module>itop-welcome-itil</module>
<module>combodo-my-account-user-info</module>
<module>authent-token</module>
</modules>
<mandatory>true</mandatory>
</choice>
<choice>
<extension_code>itop-config-mgmt-datacenter</extension_code>
<title>Data Center Devices</title>
<description>Manage Data Center devices such as Racks, Enclosures, PDUs, etc.</description>
<modules type="array">
<module>itop-datacenter-mgmt</module>
</modules>
<default>true</default>
</choice>
<choice>
<extension_code>itop-config-mgmt-end-user</extension_code>
<title>End-User Devices</title>
<description>Manage devices related to end-users: PCs, Phones, Tablets, etc.</description>
<modules type="array">
<module>itop-endusers-devices</module>
</modules>
<default>true</default>
</choice>
<choice>
<extension_code>itop-config-mgmt-storage</extension_code>
<title>Storage Devices</title>
<description>Manage storage devices such as NAS, SAN Switches, Tape Libraries and Tapes, etc.</description>
<modules type="array">
<module>itop-storage-mgmt</module>
</modules>
<default>true</default>
</choice>
<choice>
<extension_code>itop-config-mgmt-virtualization</extension_code>
<title>Virtualization</title>
<description>Manage Hypervisors, Virtual Machines and Farms.</description>
<modules type="array">
<module>itop-virtualization-mgmt</module>
</modules>
<default>true</default>
</choice>
</options>
</step>
<step>
<title>Service Management options</title>
<description><![CDATA[<h2>Select the choice that best describes the relationships between the services and the IT infrastructure in your IT environment.</h2>]]></description>
<banner>/images/icons/icons8-services.svg</banner>
<alternatives type="array">
<choice>
<extension_code>itop-service-mgmt-enterprise</extension_code>
<title>Service Management for Enterprises</title>
<description>Select this option if the IT delivers services based on a shared infrastructure. For example if different organizations within your company subscribe to services (like Mail and Print services) delivered by a single shared backend.</description>
<modules type="array">
<module>itop-service-mgmt</module>
</modules>
<default>true</default>
</choice>
<choice>
<extension_code>itop-service-mgmt-service-provider</extension_code>
<title>Service Management for Service Providers</title>
<description>Select this option if the IT manages the infrastructure of independent customers. This is the most flexible model, since the services can be delivered with a mix of shared and customer specific infrastructure devices.</description>
<modules type="array">
<module>itop-service-mgmt-provider</module>
</modules>
</choice>
</alternatives>
</step>
<step>
<title>Tickets Management options</title>
<description><![CDATA[<h2>Select the type of tickets you want to use in order to respond to user requests and incidents.</h2>]]></description>
<banner>/images/icons/icons8-discussion-forum.svg</banner>
<alternatives type="array">
<choice>
<extension_code>itop-ticket-mgmt-simple-ticket</extension_code>
<title>Simple Ticket Management</title>
<description>Select this option to use one single type of tickets for all kind of requests.</description>
<modules type="array">
<module>itop-request-mgmt</module>
</modules>
<default>true</default>
<sub_options>
<options type="array">
<choice>
<extension_code>itop-ticket-mgmt-simple-ticket-enhanced-portal</extension_code>
<title>Customer Portal</title>
<description><![CDATA[Modern & responsive portal for the end-users]]></description>
<modules type="array">
<module>itop-portal</module>
<module>itop-portal-base</module>
</modules>
<default>true</default>
</choice>
</options>
</sub_options>
</choice>
<choice>
<extension_code>itop-ticket-mgmt-itil</extension_code>
<title>ITIL Compliant Tickets Management</title>
<description>Select this option to have different types of ticket for managing user requests and incidents. Each type of ticket has a specific life cycle and specific fields</description>
<sub_options>
<options type="array">
<choice>
<extension_code>itop-ticket-mgmt-itil-user-request</extension_code>
<title>User Request Management</title>
<description>Manage User Request tickets in iTop</description>
<modules type="array">
<module>itop-request-mgmt-itil</module>
</modules>
</choice>
<choice>
<extension_code>itop-ticket-mgmt-itil-incident</extension_code>
<title>Incident Management</title>
<description>Manage Incidents tickets in iTop</description>
<modules type="array">
<module>itop-incident-mgmt-itil</module>
</modules>
</choice>
<choice>
<extension_code>itop-ticket-mgmt-itil-enhanced-portal</extension_code>
<title>Customer Portal</title>
<description><![CDATA[Modern & responsive portal for the end-users]]></description>
<modules type="array">
<module>itop-portal</module>
<module>itop-portal-base</module>
</modules>
<default>true</default>
</choice>
</options>
</sub_options>
</choice>
<choice>
<extension_code>itop-ticket-mgmt-none</extension_code>
<title>No Tickets Management</title>
<description>Don't manage incidents or user requests in iTop</description>
<modules type="array">
</modules>
</choice>
</alternatives>
</step>
<step>
<title>Change Management options</title>
<description><![CDATA[<h2>Select the type of tickets you want to use in order to manage changes to the IT infrastructure.</h2>]]></description>
<banner>/images/icons/icons8-change.svg</banner>
<alternatives type="array">
<choice>
<extension_code>itop-change-mgmt-simple</extension_code>
<title>Simple Change Management</title>
<description>Select this option to use one type of ticket for all kind of changes.</description>
<modules type="array">
<module>itop-change-mgmt</module>
</modules>
<default>true</default>
</choice>
<choice>
<extension_code>itop-change-mgmt-itil</extension_code>
<title>ITIL Change Management</title>
<description>Select this option to use Normal/Routine/Emergency change tickets.</description>
<modules type="array">
<module>itop-change-mgmt-itil</module>
</modules>
</choice>
<choice>
<extension_code>itop-change-mgmt-none</extension_code>
<title>No Change Management</title>
<description>Don't manage changes in iTop</description>
<modules type="array">
</modules>
</choice>
</alternatives>
</step>
<step>
<title>Additional ITIL tickets</title>
<description><![CDATA[<h2>Pick from the list below the additional ITIL processes that are to be implemented in iTop.</h2>]]></description>
<banner>/images/icons/icons8-important-book.svg</banner>
<options type="array">
<choice>
<!-- Extension code has a typo but fixing it would remove that setup option for all existing iTop -->
<extension_code>itop-kown-error-mgmt</extension_code>
<title>Known Errors Management and FAQ</title>
<description>Select this option to track "Known Errors" and FAQs in iTop.</description>
<modules type="array">
<module>itop-faq-light</module>
<module>itop-knownerror-mgmt</module>
</modules>
</choice>
<choice>
<extension_code>itop-problem-mgmt</extension_code>
<title>Problem Management</title>
<description>Select this option track "Problems" in iTop.</description>
<modules type="array">
<module>itop-problem-mgmt</module>
</modules>
</choice>
</options>
</step>
</steps>
</installation>

View File

@@ -0,0 +1 @@
{"itop-config-mgmt":{"label":"Configuration+Management+customized+for+Combodo+IT(CMDB)","value":"2.7.0"},"itop-icalendar-action":{"label":"Calendar+Invitations","value":"1.1.0"},"itop-fence":{"label":"iTop+Fence","value":"1.1.2"},"authent-ldap":{"label":"User+authentication+based+on+LDAP","value":"3.2.1"},"itop-faq-light":{"label":"Frequently+Asked+Questions+Database","value":"3.2.1"},"authent-local":{"label":"User+authentication+based+on+the+local+DB","value":"3.2.1"},"combodo-custom-hyperlinks":{"label":"Hyperlinks+configurator","value":"1.1.3"},"authent-token":{"label":"User+authentication+by+token","value":"2.2.1"},"itop-service-mgmt":{"label":"Service+Management+Customized+for+Combodo+IT(services,+SLAs,+contracts)","value":"2.7.0"},"combodo-impersonate":{"label":"Impersonate+user+for+support","value":"1.2.1"},"combodo-hybridauth":{"label":"oAuth\/OpenID+authentication","value":"1.2.4"},"combodo-login-page":{"label":"Combodo+login+page","value":"2.1.0"},"itop-core-update":{"label":"iTop+Core+Update","value":"3.2.1"},"itop-communications":{"label":"Communications+to+the+Customers","value":"1.3.4"},"itsm-designer-connector":{"label":"ITSM+Designer+Connector","value":"1.8.3"},"authent-external":{"label":"External+user+authentication","value":"3.2.1"},"itop-object-copier":{"label":"Object+copier","value":"1.4.5"},"combodo-backoffice-compact-themes":{"label":"Backoffice:+compact+themes","value":"1.0.1"},"data-localizer":{"label":"Data+localizer","value":"1.3.4"},"combodo-support-portal":{"label":"Combodo+Support+Portal","value":"3.0.1"},"combodo-calendar-view":{"label":"Calendar+View","value":"2.2.1"},"combodo-email-synchro":{"label":"Tickets+synchronization+via+e-mail","value":"3.8.2"},"combodo-webhook-integration":{"label":"Webhook+integrations","value":"1.4.1"},"combodo-notify-on-expiration":{"label":"Notify+on+expiration","value":"1.0.4"},"combodo-db-tools":{"label":"Database+maintenance+tools","value":"3.2.1"},"precanned-replies":{"label":"Helpdesk+Precanned+Replies","value":"1.4.0"},"combodo-dokuwiki-portal-brick":{"label":"Docuwiki+brick+(Portal)","value":"1.2.0"},"itop-rh-mgmt":{"label":"Human+Resource+Management","value":"2.7.0"},"itop-request-mgmt":{"label":"User+request+management+(Service+Desk)","value":"2.7.0"},"customer-survey":{"label":"Customer+Survey","value":"2.5.5"},"itop-standard-email-synchro":{"label":"Ticket+Creation+from+Emails+(Standard)","value":"3.8.2"},"itop-system-information":{"label":"System+information","value":"1.2.6"},"itop-sales-mgmt":{"label":"Sales+Management","value":"2.7.0"},"combodo-password-expiration":{"label":"Password+Expiration+Enforcement","value":"1.0.0"},"combodo-workflow-graphical-view":{"label":"Workflow+graphical+view","value":"1.1.3"},"combodo-itsm-master":{"label":"Data+master+for+the+ITSM+Designer","value":"2.7.0"},"combodo-email-tickets":{"label":"Tickets+Creation+from+Emails+for+Combodo","value":"2.7.0"},"itop-training-mgmt":{"label":"Training+Management","value":"2.7.0"},"precanned-replies-pro":{"label":"Helpdesk+Precanned+Replies+Extension","value":"1.2.0"},"combodo-fulltext-search":{"label":"Enhanced+global+search","value":"2.0.0"},"itop-request-template":{"label":"Customized+Request+Forms","value":"2.3.6"},"itop-rest-data-push":{"label":"Data+push+(based+on+standard+REST+services)","value":"1.0.2"},"combodo-kpi-logger":{"label":"KPI+logger","value":"1.0.3"},"itop-incident-mgmt":{"label":"Incident+Management","value":"2.7.0"},"combodo-my-account-user-info":{"label":"User+info+for+MyAccount+module","value":"1.0.0"},"email-reply":{"label":"Send+Ticket+Log+Updates+by+Email","value":"1.4.5"},"itop-attachments":{"label":"Tickets+Attachments","value":"3.2.1"},"itop-log-mgmt":{"label":"iTop+Log+management","value":"2.0.8"},"itop-ui-copypaste":{"label":"CopyPaste+UI+Component","value":"1.0.0"}}

View File

@@ -0,0 +1,642 @@
[
{
"0": "330",
"id": "330",
"1": "iTop",
"name": "iTop",
"2": "3.3.0-dev-svn",
"version": "3.3.0-dev-svn",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nBuilt on $WCNOW$",
"comment": "Done by the setup program\nBuilt on $WCNOW$",
"5": "0",
"parent_id": "0",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "331",
"id": "331",
"1": "authent-cas",
"name": "authent-cas",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nMandatory\nVisible (during the setup)",
"comment": "Done by the setup program\nMandatory\nVisible (during the setup)",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "332",
"id": "332",
"1": "authent-external",
"name": "authent-external",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nOptional\nVisible (during the setup)",
"comment": "Done by the setup program\nOptional\nVisible (during the setup)",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "333",
"id": "333",
"1": "authent-ldap",
"name": "authent-ldap",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nOptional\nVisible (during the setup)",
"comment": "Done by the setup program\nOptional\nVisible (during the setup)",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "334",
"id": "334",
"1": "authent-local",
"name": "authent-local",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nMandatory\nVisible (during the setup)",
"comment": "Done by the setup program\nMandatory\nVisible (during the setup)",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "335",
"id": "335",
"1": "combodo-backoffice-darkmoon-theme",
"name": "combodo-backoffice-darkmoon-theme",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nMandatory\nHidden (selected automatically)",
"comment": "Done by the setup program\nMandatory\nHidden (selected automatically)",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "336",
"id": "336",
"1": "combodo-backoffice-fullmoon-high-contrast-theme",
"name": "combodo-backoffice-fullmoon-high-contrast-theme",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nMandatory\nHidden (selected automatically)",
"comment": "Done by the setup program\nMandatory\nHidden (selected automatically)",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "337",
"id": "337",
"1": "combodo-backoffice-fullmoon-protanopia-deuteranopia-theme",
"name": "combodo-backoffice-fullmoon-protanopia-deuteranopia-theme",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nMandatory\nHidden (selected automatically)",
"comment": "Done by the setup program\nMandatory\nHidden (selected automatically)",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "338",
"id": "338",
"1": "combodo-backoffice-fullmoon-tritanopia-theme",
"name": "combodo-backoffice-fullmoon-tritanopia-theme",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nMandatory\nHidden (selected automatically)",
"comment": "Done by the setup program\nMandatory\nHidden (selected automatically)",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "339",
"id": "339",
"1": "itop-backup",
"name": "itop-backup",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nMandatory\nHidden (selected automatically)",
"comment": "Done by the setup program\nMandatory\nHidden (selected automatically)",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "340",
"id": "340",
"1": "itop-config",
"name": "itop-config",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nMandatory\nHidden (selected automatically)",
"comment": "Done by the setup program\nMandatory\nHidden (selected automatically)",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "341",
"id": "341",
"1": "itop-files-information",
"name": "itop-files-information",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nOptional\nHidden (selected automatically)",
"comment": "Done by the setup program\nOptional\nHidden (selected automatically)",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "342",
"id": "342",
"1": "itop-portal-base",
"name": "itop-portal-base",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nMandatory\nHidden (selected automatically)",
"comment": "Done by the setup program\nMandatory\nHidden (selected automatically)",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "343",
"id": "343",
"1": "itop-profiles-itil",
"name": "itop-profiles-itil",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nMandatory\nHidden (selected automatically)",
"comment": "Done by the setup program\nMandatory\nHidden (selected automatically)",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "344",
"id": "344",
"1": "itop-sla-computation",
"name": "itop-sla-computation",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nMandatory\nHidden (selected automatically)",
"comment": "Done by the setup program\nMandatory\nHidden (selected automatically)",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "345",
"id": "345",
"1": "itop-structure",
"name": "itop-structure",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nMandatory\nHidden (selected automatically)",
"comment": "Done by the setup program\nMandatory\nHidden (selected automatically)",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "346",
"id": "346",
"1": "itop-welcome-itil",
"name": "itop-welcome-itil",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nMandatory\nHidden (selected automatically)",
"comment": "Done by the setup program\nMandatory\nHidden (selected automatically)",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "347",
"id": "347",
"1": "itop-config-mgmt",
"name": "itop-config-mgmt",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nOptional\nVisible (during the setup)\nDepends on module: itop-structure\/2.7.1",
"comment": "Done by the setup program\nOptional\nVisible (during the setup)\nDepends on module: itop-structure\/2.7.1",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "348",
"id": "348",
"1": "itop-attachments",
"name": "itop-attachments",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nOptional\nVisible (during the setup)",
"comment": "Done by the setup program\nOptional\nVisible (during the setup)",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "349",
"id": "349",
"1": "itop-tickets",
"name": "itop-tickets",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nOptional\nVisible (during the setup)\nDepends on module: itop-structure\/2.7.1",
"comment": "Done by the setup program\nOptional\nVisible (during the setup)\nDepends on module: itop-structure\/2.7.1",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "350",
"id": "350",
"1": "combodo-db-tools",
"name": "combodo-db-tools",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nOptional\nVisible (during the setup)\nDepends on module: itop-structure\/3.0.0",
"comment": "Done by the setup program\nOptional\nVisible (during the setup)\nDepends on module: itop-structure\/3.0.0",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "351",
"id": "351",
"1": "itop-core-update",
"name": "itop-core-update",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nOptional\nVisible (during the setup)\nDepends on module: itop-files-information\/2.7.0\nDepends on module: combodo-db-tools\/2.7.0",
"comment": "Done by the setup program\nOptional\nVisible (during the setup)\nDepends on module: itop-files-information\/2.7.0\nDepends on module: combodo-db-tools\/2.7.0",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "352",
"id": "352",
"1": "itop-hub-connector",
"name": "itop-hub-connector",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nOptional\nVisible (during the setup)\nDepends on module: itop-config-mgmt\/2.4.0",
"comment": "Done by the setup program\nOptional\nVisible (during the setup)\nDepends on module: itop-config-mgmt\/2.4.0",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "353",
"id": "353",
"1": "itop-oauth-client",
"name": "itop-oauth-client",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nOptional\nVisible (during the setup)\nDepends on module: itop-welcome-itil\/3.1.0,",
"comment": "Done by the setup program\nOptional\nVisible (during the setup)\nDepends on module: itop-welcome-itil\/3.1.0,",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "354",
"id": "354",
"1": "itop-themes-compat",
"name": "itop-themes-compat",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nOptional\nVisible (during the setup)\nDepends on module: itop-structure\/3.1.0",
"comment": "Done by the setup program\nOptional\nVisible (during the setup)\nDepends on module: itop-structure\/3.1.0",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "355",
"id": "355",
"1": "itop-datacenter-mgmt",
"name": "itop-datacenter-mgmt",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nOptional\nVisible (during the setup)\nDepends on module: itop-config-mgmt\/2.2.0",
"comment": "Done by the setup program\nOptional\nVisible (during the setup)\nDepends on module: itop-config-mgmt\/2.2.0",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "356",
"id": "356",
"1": "itop-endusers-devices",
"name": "itop-endusers-devices",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nOptional\nVisible (during the setup)\nDepends on module: itop-config-mgmt\/2.2.0",
"comment": "Done by the setup program\nOptional\nVisible (during the setup)\nDepends on module: itop-config-mgmt\/2.2.0",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "357",
"id": "357",
"1": "itop-storage-mgmt",
"name": "itop-storage-mgmt",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nOptional\nVisible (during the setup)\nDepends on module: itop-config-mgmt\/2.4.0",
"comment": "Done by the setup program\nOptional\nVisible (during the setup)\nDepends on module: itop-config-mgmt\/2.4.0",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "358",
"id": "358",
"1": "itop-virtualization-mgmt",
"name": "itop-virtualization-mgmt",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nOptional\nVisible (during the setup)\nDepends on module: itop-config-mgmt\/2.4.0",
"comment": "Done by the setup program\nOptional\nVisible (during the setup)\nDepends on module: itop-config-mgmt\/2.4.0",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "359",
"id": "359",
"1": "itop-bridge-cmdb-ticket",
"name": "itop-bridge-cmdb-ticket",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nOptional\nHidden (selected automatically)\nDepends on module: itop-config-mgmt\/2.7.1\nDepends on module: itop-tickets\/2.7.0",
"comment": "Done by the setup program\nOptional\nHidden (selected automatically)\nDepends on module: itop-config-mgmt\/2.7.1\nDepends on module: itop-tickets\/2.7.0",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "360",
"id": "360",
"1": "itop-bridge-virtualization-storage",
"name": "itop-bridge-virtualization-storage",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nOptional\nHidden (selected automatically)\nDepends on module: itop-storage-mgmt\/2.2.0\nDepends on module: itop-virtualization-mgmt\/2.2.0",
"comment": "Done by the setup program\nOptional\nHidden (selected automatically)\nDepends on module: itop-storage-mgmt\/2.2.0\nDepends on module: itop-virtualization-mgmt\/2.2.0",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "361",
"id": "361",
"1": "itop-service-mgmt",
"name": "itop-service-mgmt",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nOptional\nVisible (during the setup)\nDepends on module: itop-tickets\/2.0.0",
"comment": "Done by the setup program\nOptional\nVisible (during the setup)\nDepends on module: itop-tickets\/2.0.0",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "362",
"id": "362",
"1": "itop-bridge-cmdb-services",
"name": "itop-bridge-cmdb-services",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nOptional\nHidden (selected automatically)\nDepends on module: itop-config-mgmt\/2.7.1\nDepends on module: itop-service-mgmt\/2.7.1 || itop-service-mgmt-provider\/2.7.1",
"comment": "Done by the setup program\nOptional\nHidden (selected automatically)\nDepends on module: itop-config-mgmt\/2.7.1\nDepends on module: itop-service-mgmt\/2.7.1 || itop-service-mgmt-provider\/2.7.1",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "363",
"id": "363",
"1": "itop-bridge-datacenter-mgmt-services",
"name": "itop-bridge-datacenter-mgmt-services",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nOptional\nHidden (selected automatically)\nDepends on module: itop-config-mgmt\/2.7.1\nDepends on module: itop-service-mgmt\/2.7.1 || itop-service-mgmt-provider\/2.7.1\nDepends on module: itop-datacenter-mgmt\/3.1.0",
"comment": "Done by the setup program\nOptional\nHidden (selected automatically)\nDepends on module: itop-config-mgmt\/2.7.1\nDepends on module: itop-service-mgmt\/2.7.1 || itop-service-mgmt-provider\/2.7.1\nDepends on module: itop-datacenter-mgmt\/3.1.0",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "364",
"id": "364",
"1": "itop-bridge-endusers-devices-services",
"name": "itop-bridge-endusers-devices-services",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nOptional\nHidden (selected automatically)\nDepends on module: itop-config-mgmt\/2.7.1\nDepends on module: itop-service-mgmt\/2.7.1 || itop-service-mgmt-provider\/2.7.1\nDepends on module: itop-endusers-devices\/3.1.0",
"comment": "Done by the setup program\nOptional\nHidden (selected automatically)\nDepends on module: itop-config-mgmt\/2.7.1\nDepends on module: itop-service-mgmt\/2.7.1 || itop-service-mgmt-provider\/2.7.1\nDepends on module: itop-endusers-devices\/3.1.0",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "365",
"id": "365",
"1": "itop-bridge-storage-mgmt-services",
"name": "itop-bridge-storage-mgmt-services",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nOptional\nHidden (selected automatically)\nDepends on module: itop-config-mgmt\/2.7.1\nDepends on module: itop-service-mgmt\/2.7.1 || itop-service-mgmt-provider\/2.7.1\nDepends on module: itop-storage-mgmt\/3.1.0",
"comment": "Done by the setup program\nOptional\nHidden (selected automatically)\nDepends on module: itop-config-mgmt\/2.7.1\nDepends on module: itop-service-mgmt\/2.7.1 || itop-service-mgmt-provider\/2.7.1\nDepends on module: itop-storage-mgmt\/3.1.0",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "366",
"id": "366",
"1": "itop-bridge-virtualization-mgmt-services",
"name": "itop-bridge-virtualization-mgmt-services",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nOptional\nHidden (selected automatically)\nDepends on module: itop-config-mgmt\/2.7.1\nDepends on module: itop-service-mgmt\/2.7.1 || itop-service-mgmt-provider\/2.7.1\nDepends on module: itop-virtualization-mgmt\/3.1.0",
"comment": "Done by the setup program\nOptional\nHidden (selected automatically)\nDepends on module: itop-config-mgmt\/2.7.1\nDepends on module: itop-service-mgmt\/2.7.1 || itop-service-mgmt-provider\/2.7.1\nDepends on module: itop-virtualization-mgmt\/3.1.0",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "367",
"id": "367",
"1": "itop-request-mgmt",
"name": "itop-request-mgmt",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nOptional\nVisible (during the setup)\nDepends on module: itop-tickets\/2.4.0",
"comment": "Done by the setup program\nOptional\nVisible (during the setup)\nDepends on module: itop-tickets\/2.4.0",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "368",
"id": "368",
"1": "itop-portal",
"name": "itop-portal",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nOptional\nVisible (during the setup)\nDepends on module: itop-portal-base\/2.7.0",
"comment": "Done by the setup program\nOptional\nVisible (during the setup)\nDepends on module: itop-portal-base\/2.7.0",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "369",
"id": "369",
"1": "itop-change-mgmt",
"name": "itop-change-mgmt",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nOptional\nVisible (during the setup)\nDepends on module: itop-config-mgmt\/2.2.0\nDepends on module: itop-tickets\/2.0.0",
"comment": "Done by the setup program\nOptional\nVisible (during the setup)\nDepends on module: itop-config-mgmt\/2.2.0\nDepends on module: itop-tickets\/2.0.0",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
}
]

View File

@@ -0,0 +1,50 @@
[
{
"0": "330",
"id": "330",
"1": "iTop",
"name": "iTop",
"2": "3.3.0-dev-svn",
"version": "3.3.0-dev-svn",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nBuilt on $WCNOW$",
"comment": "Done by the setup program\nBuilt on $WCNOW$",
"5": "0",
"parent_id": "0",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "331",
"id": "331",
"1": "mandatory_module",
"name": "mandatory_module",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nMandatory\nVisible (during the setup)",
"comment": "Done by the setup program\nMandatory\nVisible (during the setup)",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "yes"
},
{
"0": "332",
"id": "332",
"1": "optional_module",
"name": "optional_module",
"2": "3.3.0",
"version": "3.3.0",
"3": "2025-11-10 11:50:12",
"installed": "2025-11-10 11:50:12",
"4": "Done by the setup program\nOptional\nVisible (during the setup)",
"comment": "Done by the setup program\nOptional\nVisible (during the setup)",
"5": "330",
"parent_id": "330",
"6": "yes",
"uninstallable": "no"
}
]