فهرست منبع

Fixed #618 and #621
+ renamed a few classes/enums/attributes to improve the classes naming consistency and ease the writing of OQLs
+ fixed errors in the profiles

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@2434 a333f486-631f-4898-b8df-5754b55c2be0

romainq 12 سال پیش
والد
کامیت
83732ab4f0
36فایلهای تغییر یافته به همراه748 افزوده شده و 403 حذف شده
  1. 5 0
      core/cmdbsource.class.inc.php
  2. 1 1
      datamodels/2.x/installation.xml
  3. 2 2
      datamodels/2.x/itop-config-mgmt/data.sample.dbserver.xml
  4. 3 3
      datamodels/2.x/itop-config-mgmt/data.sample.model.xml
  5. 4 4
      datamodels/2.x/itop-config-mgmt/data.sample.osfamily.xml
  6. 4 4
      datamodels/2.x/itop-config-mgmt/data.sample.osversion.xml
  7. 2 2
      datamodels/2.x/itop-config-mgmt/data.sample.software.xml
  8. 2 2
      datamodels/2.x/itop-config-mgmt/data.sample.webserver.xml
  9. 41 41
      datamodels/2.x/itop-config-mgmt/datamodel.itop-config-mgmt.xml
  10. 1 1
      datamodels/2.x/itop-config-mgmt/de.dict.itop-config-mgmt.php
  11. 142 142
      datamodels/2.x/itop-config-mgmt/en.dict.itop-config-mgmt.php
  12. 134 134
      datamodels/2.x/itop-config-mgmt/fr.dict.itop-config-mgmt.php
  13. 53 1
      datamodels/2.x/itop-config-mgmt/module.itop-config-mgmt.php
  14. 5 5
      datamodels/2.x/itop-endusers-devices/datamodel.itop-enduser-devices.xml
  15. 39 0
      datamodels/2.x/itop-endusers-devices/module.itop-endusers-devices.php
  16. 2 2
      datamodels/2.x/itop-incident-mgmt-itil/en.dict.itop-incident-mgmt-itil.php
  17. 3 3
      datamodels/2.x/itop-knownerror-mgmt/datamodel.itop-knownerror-mgmt.xml
  18. 7 7
      datamodels/2.x/itop-knownerror-mgmt/en.dict.itop-knownerror-mgmt.php
  19. 7 7
      datamodels/2.x/itop-knownerror-mgmt/fr.dict.itop-knownerror-mgmt.php
  20. 40 0
      datamodels/2.x/itop-knownerror-mgmt/module.itop-knownerror-mgmt.php
  21. 2 2
      datamodels/2.x/itop-problem-mgmt/en.dict.itop-problem-mgmt.php
  22. 5 5
      datamodels/2.x/itop-profiles-itil/datamodel.itop-profiles-itil.xml
  23. 2 2
      datamodels/2.x/itop-request-mgmt-itil/en.dict.itop-request-mgmt-itil.php
  24. 2 2
      datamodels/2.x/itop-request-mgmt/en.dict.itop-request-mgmt.php
  25. 1 1
      datamodels/2.x/itop-service-mgmt-provider/datamodel.itop-service-mgmt-provider.xml
  26. 6 6
      datamodels/2.x/itop-service-mgmt-provider/en.dict.itop-service-mgmt-provider.php
  27. 5 5
      datamodels/2.x/itop-service-mgmt-provider/fr.dict.itop-service-mgmt-provider.php
  28. 40 0
      datamodels/2.x/itop-service-mgmt-provider/module.itop-service-mgmt-provider.php
  29. 2 2
      datamodels/2.x/itop-service-mgmt/en.dict.itop-service-mgmt.php
  30. 3 3
      datamodels/2.x/itop-storage-mgmt/datamodel.itop-storage-mgmt.xml
  31. 39 0
      datamodels/2.x/itop-storage-mgmt/module.itop-storage-mgmt.php
  32. 4 4
      datamodels/2.x/itop-virtualization-mgmt/data.sample.dbserver.xml
  33. 2 2
      datamodels/2.x/itop-virtualization-mgmt/data.sample.webserver.xml
  34. 6 6
      datamodels/2.x/itop-virtualization-mgmt/datamodel.itop-virtualization-mgmt.xml
  35. 18 2
      setup/applicationinstaller.class.inc.php
  36. 114 0
      setup/moduleinstaller.class.inc.php

+ 5 - 0
core/cmdbsource.class.inc.php

@@ -375,6 +375,11 @@ class CMDBSource
 		return mysqli_num_rows($result);
 	}
 
+	public static function AffectedRows()
+	{
+		return mysqli_affected_rows(self::$m_resDBLink);
+	}
+
 	public static function FetchArray($result)
 	{
 		return mysqli_fetch_array($result, MYSQLI_ASSOC);

+ 1 - 1
datamodels/2.x/installation.xml

@@ -147,7 +147,7 @@
     </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>
+      <description><![CDATA[<h2>Pick from the list below the additional ITIL processes that are to be implemented in iTop.</h2>]]></description>
       <banner>./itop-knownerror-mgmt/images/known-error.png</banner>
       <options type="array">
         <choice>

+ 2 - 2
datamodels/2.x/itop-config-mgmt/data.sample.dbserver.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Set>
-<DBserver alias="DBserver" id="17">
+<DBServer alias="DBServer" id="17">
 <name>Oracle</name>
 <description></description>
 <org_id>2</org_id>
@@ -11,5 +11,5 @@
 <softwarelicence_id>0</softwarelicence_id>
 <path></path>
 <status></status>
-</DBserver>
+</DBServer>
 </Set>

+ 3 - 3
datamodels/2.x/itop-config-mgmt/data.sample.model.xml

@@ -3,16 +3,16 @@
 <Model alias="Model" id="11">
 <name>Cisco 6500</name>
 <brand_id>10</brand_id>
-<Type>NetworkDevice</Type>
+<type>NetworkDevice</type>
 </Model>
 <Model alias="Model" id="4">
 <name>DL380</name>
 <brand_id>1</brand_id>
-<Type>Server</Type>
+<type>Server</type>
 </Model>
 <Model alias="Model" id="5">
 <name>Procurve 2450</name>
 <brand_id>1</brand_id>
-<Type>NetworkDevice</Type>
+<type>NetworkDevice</type>
 </Model>
 </Set>

+ 4 - 4
datamodels/2.x/itop-config-mgmt/data.sample.osfamily.xml

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Set>
-<OSfamily alias="OSfamily" id="7">
+<OSFamily alias="OSFamily" id="7">
 <name>Linux</name>
-</OSfamily>
-<OSfamily alias="OSfamily" id="3">
+</OSFamily>
+<OSFamily alias="OSFamily" id="3">
 <name>Windows</name>
-</OSfamily>
+</OSFamily>
 </Set>

+ 4 - 4
datamodels/2.x/itop-config-mgmt/data.sample.osversion.xml

@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Set>
-<OSversion alias="OSversion" id="8">
+<OSVersion alias="OSVersion" id="8">
 <name>Unbuntu 11.10</name>
 <osfamily_id>7</osfamily_id>
-</OSversion>
-<OSversion alias="OSversion" id="4">
+</OSVersion>
+<OSVersion alias="OSVersion" id="4">
 <name>Windows 2008 Server</name>
 <osfamily_id>3</osfamily_id>
-</OSversion>
+</OSVersion>
 </Set>

+ 2 - 2
datamodels/2.x/itop-config-mgmt/data.sample.software.xml

@@ -4,12 +4,12 @@
 <name>MySql</name>
 <vendor>Oracle</vendor>
 <version>5.3</version>
-<type>DBserver</type>
+<type>DBServer</type>
 </Software>
 <Software alias="Software" id="1">
 <name>Oracle DB engine</name>
 <vendor>Oracle</vendor>
 <version>11i</version>
-<type>DBserver</type>
+<type>DBServer</type>
 </Software>
 </Set>

+ 2 - 2
datamodels/2.x/itop-config-mgmt/data.sample.webserver.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Set>
-<Webserver alias="Webserver" id="23">
+<WebServer alias="WebServer" id="23">
 <name>IIS</name>
 <description></description>
 <org_id>2</org_id>
@@ -11,5 +11,5 @@
 <softwarelicence_id>0</softwarelicence_id>
 <path></path>
 <status>active</status>
-</Webserver>
+</WebServer>
 </Set>

+ 41 - 41
datamodels/2.x/itop-config-mgmt/datamodel.itop-config-mgmt.xml

@@ -1523,7 +1523,7 @@
           <target_attcode>name</target_attcode>
         </field>
         <field id="model_id" xsi:type="AttributeExternalKey">
-          <filter><![CDATA[SELECT Model WHERE brand_id=:this->brand_id AND Type=:this->finalclass]]></filter>
+          <filter><![CDATA[SELECT Model WHERE brand_id=:this->brand_id AND type=:this->finalclass]]></filter>
           <dependencies>
             <attribute id="brand_id"/>
           </dependencies>
@@ -2201,7 +2201,7 @@
         </field>
         <field id="iosversion_id" xsi:type="AttributeExternalKey">
           <sql>iosversion_id</sql>
-          <target_class>IOSversion</target_class>
+          <target_class>IOSVersion</target_class>
           <is_null_allowed>true</is_null_allowed>
           <on_target_delete>DEL_MANUAL</on_target_delete>
         </field>
@@ -2466,7 +2466,7 @@
       <fields>
         <field id="osfamily_id" xsi:type="AttributeExternalKey">
           <sql>osfamily_id</sql>
-          <target_class>OSfamily</target_class>
+          <target_class>OSFamily</target_class>
           <is_null_allowed>true</is_null_allowed>
           <on_target_delete>DEL_MANUAL</on_target_delete>
         </field>
@@ -2475,12 +2475,12 @@
           <target_attcode>name</target_attcode>
         </field>
         <field id="osversion_id" xsi:type="AttributeExternalKey">
-          <filter><![CDATA[SELECT OSversion WHERE osfamily_id = :this->osfamily_id]]></filter>
+          <filter><![CDATA[SELECT OSVersion WHERE osfamily_id = :this->osfamily_id]]></filter>
           <dependencies>
             <attribute id="osfamily_id"/>
           </dependencies>
           <sql>osversion_id</sql>
-          <target_class>OSversion</target_class>
+          <target_class>OSVersion</target_class>
           <is_null_allowed>true</is_null_allowed>
           <on_target_delete>DEL_MANUAL</on_target_delete>
         </field>
@@ -2489,12 +2489,12 @@
           <target_attcode>name</target_attcode>
         </field>
         <field id="oslicence_id" xsi:type="AttributeExternalKey">
-          <filter><![CDATA[SELECT OsLicence WHERE osversion_id = :this->osversion_id]]></filter>
+          <filter><![CDATA[SELECT OSLicence WHERE osversion_id = :this->osversion_id]]></filter>
           <dependencies>
             <attribute id="osversion_id"/>
           </dependencies>
           <sql>oslicence_id</sql>
-          <target_class>OsLicence</target_class>
+          <target_class>OSLicence</target_class>
           <is_null_allowed>true</is_null_allowed>
           <on_target_delete>DEL_MANUAL</on_target_delete>
         </field>
@@ -3404,7 +3404,7 @@
         </list>
       </presentation>
     </class>
-    <class id="DBserver" _delta="define">
+    <class id="DBServer" _delta="define">
       <parent>SoftwareInstance</parent>
       <properties>
         <category>bizmodel,searchable</category>
@@ -3560,7 +3560,7 @@
         </list>
       </presentation>
     </class>
-    <class id="Webserver" _delta="define">
+    <class id="WebServer" _delta="define">
       <parent>SoftwareInstance</parent>
       <properties>
         <category>bizmodel,searchable</category>
@@ -4118,7 +4118,7 @@
       <fields>
         <field id="dbserver_id" xsi:type="AttributeExternalKey">
           <sql>dbserver_id</sql>
-          <target_class>DBserver</target_class>
+          <target_class>DBServer</target_class>
           <is_null_allowed>false</is_null_allowed>
           <on_target_delete>DEL_MANUAL</on_target_delete>
         </field>
@@ -4144,7 +4144,7 @@
 			
 			case 'depends on':
 			$aRels = array(
-				"DBserver" => array("sQuery"=>"SELECT DBserver WHERE id = :this->dbserver_id", "bPropagate"=>true, "iDistance"=>10),
+				"DBServer" => array("sQuery"=>"SELECT DBServer WHERE id = :this->dbserver_id", "bPropagate"=>true, "iDistance"=>10),
 			
 			);
 			return array_merge($aRels, parent::GetRelationQueries($sRelCode));
@@ -4256,7 +4256,7 @@
       <fields>
         <field id="webserver_id" xsi:type="AttributeExternalKey">
           <sql>webserver_id</sql>
-          <target_class>Webserver</target_class>
+          <target_class>WebServer</target_class>
           <is_null_allowed>false</is_null_allowed>
           <on_target_delete>DEL_MANUAL</on_target_delete>
         </field>
@@ -4288,7 +4288,7 @@
 			
 			case 'depends on':
 			$aRels = array(
-				"Webserver" => array("sQuery"=>"SELECT Webserver WHERE id = :this->webserver_id", "bPropagate"=>true, "iDistance"=>10),
+				"WebServer" => array("sQuery"=>"SELECT WebServer WHERE id = :this->webserver_id", "bPropagate"=>true, "iDistance"=>10),
 			
 			);
 			return array_merge($aRels, parent::GetRelationQueries($sRelCode));
@@ -4426,10 +4426,10 @@
         <field id="type" xsi:type="AttributeEnum">
           <values>
             <value>Middleware</value>
-            <value>DBserver</value>
+            <value>DBServer</value>
             <value>PCSoftware</value>
             <value>OtherSoftware</value>
-            <value>Webserver</value>
+            <value>WebServer</value>
           </values>
           <sql>type</sql>
           <default_value/>
@@ -4596,7 +4596,7 @@
         </list>
       </presentation>
     </class>
-    <class id="OSpatch" _delta="define">
+    <class id="OSPatch" _delta="define">
       <parent>Patch</parent>
       <properties>
         <category>bizmodel,searchable</category>
@@ -4621,7 +4621,7 @@
       </properties>
       <fields>
         <field id="functionalcis_list" xsi:type="AttributeLinkedSetIndirect">
-          <linked_class>lnkFunctionalCIToOSpatch</linked_class>
+          <linked_class>lnkFunctionalCIToOSPatch</linked_class>
           <ext_key_to_me>ospatch_id</ext_key_to_me>
           <count_min>0</count_min>
           <count_max>0</count_max>
@@ -4630,7 +4630,7 @@
         </field>
         <field id="osversion_id" xsi:type="AttributeExternalKey">
           <sql>osversion_id</sql>
-          <target_class>OSversion</target_class>
+          <target_class>OSVersion</target_class>
           <is_null_allowed>false</is_null_allowed>
           <on_target_delete>DEL_MANUAL</on_target_delete>
         </field>
@@ -4922,7 +4922,7 @@
         </list>
       </presentation>
     </class>
-    <class id="OsLicence" _delta="define">
+    <class id="OSLicence" _delta="define">
       <parent>Licence</parent>
       <properties>
         <category>bizmodel,searchable</category>
@@ -4950,7 +4950,7 @@
       <fields>
         <field id="osversion_id" xsi:type="AttributeExternalKey">
           <sql>osversion_id</sql>
-          <target_class>OSversion</target_class>
+          <target_class>OSVersion</target_class>
           <is_null_allowed>false</is_null_allowed>
           <on_target_delete>DEL_MANUAL</on_target_delete>
         </field>
@@ -5317,7 +5317,7 @@
         </list>
       </presentation>
     </class>
-    <class id="OSversion" _delta="define">
+    <class id="OSVersion" _delta="define">
       <parent>Typology</parent>
       <properties>
         <category>bizmodel,searchable</category>
@@ -5345,7 +5345,7 @@
       <fields>
         <field id="osfamily_id" xsi:type="AttributeExternalKey">
           <sql>osfamily_id</sql>
-          <target_class>OSfamily</target_class>
+          <target_class>OSFamily</target_class>
           <is_null_allowed>false</is_null_allowed>
           <on_target_delete>DEL_MANUAL</on_target_delete>
         </field>
@@ -5385,7 +5385,7 @@
         </list>
       </presentation>
     </class>
-    <class id="OSfamily" _delta="define">
+    <class id="OSFamily" _delta="define">
       <parent>Typology</parent>
       <properties>
         <category>bizmodel,searchable</category>
@@ -5615,7 +5615,7 @@
             <attribute id="name"/>
             <attribute id="brand_id"/>
             <attribute id="brand_name"/>
-            <attribute id="Type"/>
+            <attribute id="type"/>
           </attributes>
         </reconciliation>
       </properties>
@@ -5630,11 +5630,11 @@
           <extkey_attcode>brand_id</extkey_attcode>
           <target_attcode>name</target_attcode>
         </field>
-        <field id="Type" xsi:type="AttributeEnum">
+        <field id="type" xsi:type="AttributeEnum">
           <values>
             <value>NetworkDevice</value>
             <value>Server</value>
-            <value>SANswitch</value>
+            <value>SANSwitch</value>
             <value>StorageSystem</value>
             <value>Rack</value>
             <value>Enclosure</value>
@@ -5646,7 +5646,7 @@
             <value>DiskArray</value>
             <value>NAS</value>
             <value>TapeLibrary</value>
-            <value>IpPhone</value>
+            <value>IPPhone</value>
             <value>Peripheral</value>
             <value>PowerSource</value>
             <value>PDU</value>
@@ -5675,7 +5675,7 @@
             <item id="brand_id">
               <rank>20</rank>
             </item>
-            <item id="Type">
+            <item id="type">
               <rank>30</rank>
             </item>
             <item id="physicaldevices_list">
@@ -5688,7 +5688,7 @@
             <item id="name">
               <rank>10</rank>
             </item>
-            <item id="Type">
+            <item id="type">
               <rank>20</rank>
             </item>
           </items>
@@ -5701,7 +5701,7 @@
             <item id="brand_id">
               <rank>20</rank>
             </item>
-            <item id="Type">
+            <item id="type">
               <rank>30</rank>
             </item>
           </items>
@@ -5769,7 +5769,7 @@
         </list>
       </presentation>
     </class>
-    <class id="IOSversion" _delta="define">
+    <class id="IOSVersion" _delta="define">
       <parent>Typology</parent>
       <properties>
         <category>bizmodel,searchable</category>
@@ -6002,7 +6002,7 @@
         </list>
       </presentation>
     </class>
-    <class id="lnkFunctionalCIToOSpatch" _delta="define">
+    <class id="lnkFunctionalCIToOSPatch" _delta="define">
       <parent>cmdbAbstractObject</parent>
       <properties>
         <is_link>1</is_link>
@@ -6031,7 +6031,7 @@
       <fields>
         <field id="ospatch_id" xsi:type="AttributeExternalKey">
           <sql>ospatch_id</sql>
-          <target_class>OSpatch</target_class>
+          <target_class>OSPatch</target_class>
           <is_null_allowed>false</is_null_allowed>
           <on_target_delete>DEL_AUTO</on_target_delete>
         </field>
@@ -6408,7 +6408,7 @@
 	
 			$oPage->p(Dict::Format('Class:Subnet/Tab:IPUsage-explain', $sIPMin, $sIPMax));
 			
-			$oIfFilter = DBObjectSearch::FromOQL("SELECT IPinterface AS if WHERE INET_ATON(if.ipaddress) >= INET_ATON('$sIPMin') AND INET_ATON(if.ipaddress) <= INET_ATON('$sIPMax')");
+			$oIfFilter = DBObjectSearch::FromOQL("SELECT IPInterface AS if WHERE INET_ATON(if.ipaddress) >= INET_ATON('$sIPMin') AND INET_ATON(if.ipaddress) <= INET_ATON('$sIPMax')");
 			$oIfSet = new CMDBObjectSet($oIfFilter);
 			$oBlock = new DisplayBlock($oIfFilter, 'list', false);
 			$oBlock->Display($oPage, 'nwif', array('menu' => false));
@@ -6547,7 +6547,7 @@
         </list>
       </presentation>
     </class>
-    <class id="IPinterface" _delta="define">
+    <class id="IPInterface" _delta="define">
       <parent>NetworkInterface</parent>
       <properties>
         <category>bizmodel,searchable</category>
@@ -6678,7 +6678,7 @@
       </presentation>
     </class>
     <class id="PhysicalInterface" _delta="define">
-      <parent>IPinterface</parent>
+      <parent>IPInterface</parent>
       <properties>
         <category>bizmodel,searchable</category>
         <abstract>false</abstract>
@@ -7659,11 +7659,11 @@
         </dashlet>
         <dashlet id="6" xsi:type="DashletBadge">
           <rank>2</rank>
-          <class>DBserver</class>
+          <class>DBServer</class>
         </dashlet>
         <dashlet id="7" xsi:type="DashletBadge">
           <rank>3</rank>
-          <class>Webserver</class>
+          <class>WebServer</class>
         </dashlet>
         <dashlet id="8" xsi:type="DashletBadge">
           <rank>4</rank>
@@ -7825,15 +7825,15 @@
             </dashlet>
             <dashlet id="4" xsi:type="DashletBadge">
               <rank>3</rank>
-              <class>OSfamily</class>
+              <class>OSFamily</class>
             </dashlet>
             <dashlet id="5" xsi:type="DashletBadge">
               <rank>4</rank>
-              <class>OSversion</class>
+              <class>OSVersion</class>
             </dashlet>
             <dashlet id="6" xsi:type="DashletBadge">
               <rank>5</rank>
-              <class>IOSversion</class>
+              <class>IOSVersion</class>
             </dashlet>
             <dashlet id="7" xsi:type="DashletBadge">
               <rank>6</rank>

+ 1 - 1
datamodels/2.x/itop-config-mgmt/de.dict.itop-config-mgmt.php

@@ -327,7 +327,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array(
 
 Dict::Add('DE DE', 'German', 'Deutsch', array(
 	'Class:ExternalDoc' => 'Externes Dokument',
-	'Class:ExternalDoc+' => 'Das Dokument ist auf einem anderen Webserver verfügbar',
+	'Class:ExternalDoc+' => 'Das Dokument ist auf einem anderen WebServer verfügbar',
 	'Class:ExternalDoc/Attribute:url' => 'URL',
 	'Class:ExternalDoc/Attribute:url+' => '',
 ));

+ 142 - 142
datamodels/2.x/itop-config-mgmt/en.dict.itop-config-mgmt.php

@@ -415,12 +415,12 @@ Dict::Add('EN US', 'English', 'English', array(
 ));
 
 //
-// Class: IpPhone
+// Class: IPPhone
 //
 
 Dict::Add('EN US', 'English', 'English', array(
-	'Class:IpPhone' => 'IP Phone',
-	'Class:IpPhone+' => '',
+	'Class:IPPhone' => 'IP Phone',
+	'Class:IPPhone+' => '',
 ));
 
 //
@@ -746,25 +746,25 @@ Dict::Add('EN US', 'English', 'English', array(
 ));
 
 //
-// Class: DBserver
+// Class: DBServer
 //
 
 Dict::Add('EN US', 'English', 'English', array(
-	'Class:DBserver' => 'DB server',
-	'Class:DBserver+' => '',
-	'Class:DBserver/Attribute:dbschema_list' => 'DB schemas',
-	'Class:DBserver/Attribute:dbschema_list+' => '',
+	'Class:DBServer' => 'DB Server',
+	'Class:DBServer+' => '',
+	'Class:DBServer/Attribute:dbschema_list' => 'DB schemas',
+	'Class:DBServer/Attribute:dbschema_list+' => '',
 ));
 
 //
-// Class: Webserver
+// Class: WebServer
 //
 
 Dict::Add('EN US', 'English', 'English', array(
-	'Class:Webserver' => 'Web server',
-	'Class:Webserver+' => '',
-	'Class:Webserver/Attribute:webapp_list' => 'Web applications',
-	'Class:Webserver/Attribute:webapp_list+' => '',
+	'Class:WebServer' => 'Web server',
+	'Class:WebServer+' => '',
+	'Class:WebServer/Attribute:webapp_list' => 'Web applications',
+	'Class:WebServer/Attribute:webapp_list+' => '',
 ));
 
 //
@@ -772,7 +772,7 @@ Dict::Add('EN US', 'English', 'English', array(
 //
 
 Dict::Add('EN US', 'English', 'English', array(
-	'Class:PCSoftware' => 'PC software',
+	'Class:PCSoftware' => 'PC Software',
 	'Class:PCSoftware+' => '',
 ));
 
@@ -987,7 +987,7 @@ Dict::Add('EN US', 'English', 'English', array(
 //
 
 Dict::Add('EN US', 'English', 'English', array(
-	'Class:lnkSanToDatacenterDevice' => 'Link San/ Datacenter Device',
+	'Class:lnkSanToDatacenterDevice' => 'Link SAN / Datacenter Device',
 	'Class:lnkSanToDatacenterDevice+' => '',
 	'Class:lnkSanToDatacenterDevice/Attribute:san_id' => 'SAN switch',
 	'Class:lnkSanToDatacenterDevice/Attribute:san_id+' => '',
@@ -1023,24 +1023,24 @@ Dict::Add('EN US', 'English', 'English', array(
 ));
 
 //
-// Class: NasFileSystem
+// Class: NASFileSystem
 //
 
 Dict::Add('EN US', 'English', 'English', array(
-	'Class:NasFileSystem' => 'NAS FileSystem',
-	'Class:NasFileSystem+' => '',
-	'Class:NasFileSystem/Attribute:name' => 'Name',
-	'Class:NasFileSystem/Attribute:name+' => '',
-	'Class:NasFileSystem/Attribute:description' => 'Description',
-	'Class:NasFileSystem/Attribute:description+' => '',
-	'Class:NasFileSystem/Attribute:raid_level' => 'Raid level',
-	'Class:NasFileSystem/Attribute:raid_level+' => '',
-	'Class:NasFileSystem/Attribute:size' => 'Size',
-	'Class:NasFileSystem/Attribute:size+' => '',
-	'Class:NasFileSystem/Attribute:nas_id' => 'NAS',
-	'Class:NasFileSystem/Attribute:nas_id+' => '',
-	'Class:NasFileSystem/Attribute:nas_name' => 'NAS name',
-	'Class:NasFileSystem/Attribute:nas_name+' => '',
+	'Class:NASFileSystem' => 'NAS File System',
+	'Class:NASFileSystem+' => '',
+	'Class:NASFileSystem/Attribute:name' => 'Name',
+	'Class:NASFileSystem/Attribute:name+' => '',
+	'Class:NASFileSystem/Attribute:description' => 'Description',
+	'Class:NASFileSystem/Attribute:description+' => '',
+	'Class:NASFileSystem/Attribute:raid_level' => 'Raid level',
+	'Class:NASFileSystem/Attribute:raid_level+' => '',
+	'Class:NASFileSystem/Attribute:size' => 'Size',
+	'Class:NASFileSystem/Attribute:size+' => '',
+	'Class:NASFileSystem/Attribute:nas_id' => 'NAS',
+	'Class:NASFileSystem/Attribute:nas_id+' => '',
+	'Class:NASFileSystem/Attribute:nas_name' => 'NAS name',
+	'Class:NASFileSystem/Attribute:nas_name+' => '',
 ));
 
 //
@@ -1060,21 +1060,21 @@ Dict::Add('EN US', 'English', 'English', array(
 	'Class:Software/Attribute:documents_list+' => '',
 	'Class:Software/Attribute:type' => 'Type',
 	'Class:Software/Attribute:type+' => '',
-	'Class:Software/Attribute:type/Value:DBserver' => 'DB server',
-	'Class:Software/Attribute:type/Value:DBserver+' => 'DB server',
+	'Class:Software/Attribute:type/Value:DBServer' => 'DB Server',
+	'Class:Software/Attribute:type/Value:DBServer+' => 'DB Server',
 	'Class:Software/Attribute:type/Value:Middleware' => 'Middleware',
 	'Class:Software/Attribute:type/Value:Middleware+' => 'Middleware',
 	'Class:Software/Attribute:type/Value:OtherSoftware' => 'Other Software',
 	'Class:Software/Attribute:type/Value:OtherSoftware+' => 'Other Software',
-	'Class:Software/Attribute:type/Value:PCSoftware' => 'PC software',
-	'Class:Software/Attribute:type/Value:PCSoftware+' => 'PC software',
-	'Class:Software/Attribute:type/Value:Webserver' => 'Web server',
-	'Class:Software/Attribute:type/Value:Webserver+' => 'Web server',
-	'Class:Software/Attribute:softwareinstance_list' => 'Software instances',
+	'Class:Software/Attribute:type/Value:PCSoftware' => 'PC Software',
+	'Class:Software/Attribute:type/Value:PCSoftware+' => 'PC Software',
+	'Class:Software/Attribute:type/Value:WebServer' => 'Web Server',
+	'Class:Software/Attribute:type/Value:WebServer+' => 'Web Server',
+	'Class:Software/Attribute:softwareinstance_list' => 'Software Instances',
 	'Class:Software/Attribute:softwareinstance_list+' => '',
-	'Class:Software/Attribute:softwarepatch_list' => 'Software patches',
+	'Class:Software/Attribute:softwarepatch_list' => 'Software Patches',
 	'Class:Software/Attribute:softwarepatch_list+' => '',
-	'Class:Software/Attribute:softwarelicence_list' => 'Software licences',
+	'Class:Software/Attribute:softwarelicence_list' => 'Software Licences',
 	'Class:Software/Attribute:softwarelicence_list+' => '',
 ));
 
@@ -1096,18 +1096,18 @@ Dict::Add('EN US', 'English', 'English', array(
 ));
 
 //
-// Class: OSpatch
+// Class: OSPatch
 //
 
 Dict::Add('EN US', 'English', 'English', array(
-	'Class:OSpatch' => 'OS patch',
-	'Class:OSpatch+' => '',
-	'Class:OSpatch/Attribute:functionalcis_list' => 'Devices',
-	'Class:OSpatch/Attribute:functionalcis_list+' => '',
-	'Class:OSpatch/Attribute:osversion_id' => 'OS version',
-	'Class:OSpatch/Attribute:osversion_id+' => '',
-	'Class:OSpatch/Attribute:osversion_name' => 'OS version name',
-	'Class:OSpatch/Attribute:osversion_name+' => '',
+	'Class:OSPatch' => 'OS Patch',
+	'Class:OSPatch+' => '',
+	'Class:OSPatch/Attribute:functionalcis_list' => 'Devices',
+	'Class:OSPatch/Attribute:functionalcis_list+' => '',
+	'Class:OSPatch/Attribute:osversion_id' => 'OS version',
+	'Class:OSPatch/Attribute:osversion_id+' => '',
+	'Class:OSPatch/Attribute:osversion_name' => 'OS version name',
+	'Class:OSPatch/Attribute:osversion_name+' => '',
 ));
 
 //
@@ -1155,20 +1155,20 @@ Dict::Add('EN US', 'English', 'English', array(
 ));
 
 //
-// Class: OsLicence
+// Class: OSLicence
 //
 
 Dict::Add('EN US', 'English', 'English', array(
-	'Class:OsLicence' => 'OS Licence',
-	'Class:OsLicence+' => '',
-	'Class:OsLicence/Attribute:osversion_id' => 'OS version',
-	'Class:OsLicence/Attribute:osversion_id+' => '',
-	'Class:OsLicence/Attribute:osversion_name' => 'OS version name',
-	'Class:OsLicence/Attribute:osversion_name+' => '',
-	'Class:OsLicence/Attribute:virtualmachines_list' => 'Virtual machines',
-	'Class:OsLicence/Attribute:virtualmachines_list+' => '',
-	'Class:OsLicence/Attribute:servers_list' => 'servers',
-	'Class:OsLicence/Attribute:servers_list+' => '',
+	'Class:OSLicence' => 'OS Licence',
+	'Class:OSLicence+' => '',
+	'Class:OSLicence/Attribute:osversion_id' => 'OS version',
+	'Class:OSLicence/Attribute:osversion_id+' => '',
+	'Class:OSLicence/Attribute:osversion_name' => 'OS version name',
+	'Class:OSLicence/Attribute:osversion_name+' => '',
+	'Class:OSLicence/Attribute:virtualmachines_list' => 'Virtual machines',
+	'Class:OSLicence/Attribute:virtualmachines_list+' => '',
+	'Class:OSLicence/Attribute:servers_list' => 'servers',
+	'Class:OSLicence/Attribute:servers_list+' => '',
 ));
 
 //
@@ -1217,25 +1217,25 @@ Dict::Add('EN US', 'English', 'English', array(
 ));
 
 //
-// Class: OSversion
+// Class: OSVersion
 //
 
 Dict::Add('EN US', 'English', 'English', array(
-	'Class:OSversion' => 'OS version',
-	'Class:OSversion+' => '',
-	'Class:OSversion/Attribute:osfamily_id' => 'OS family',
-	'Class:OSversion/Attribute:osfamily_id+' => '',
-	'Class:OSversion/Attribute:osfamily_name' => 'OS family name',
-	'Class:OSversion/Attribute:osfamily_name+' => '',
+	'Class:OSVersion' => 'OS Version',
+	'Class:OSVersion+' => '',
+	'Class:OSVersion/Attribute:osfamily_id' => 'OS family',
+	'Class:OSVersion/Attribute:osfamily_id+' => '',
+	'Class:OSVersion/Attribute:osfamily_name' => 'OS family name',
+	'Class:OSVersion/Attribute:osfamily_name+' => '',
 ));
 
 //
-// Class: OSfamily
+// Class: OSFamily
 //
 
 Dict::Add('EN US', 'English', 'English', array(
-	'Class:OSfamily' => 'OS family',
-	'Class:OSfamily+' => '',
+	'Class:OSFamily' => 'OS Family',
+	'Class:OSFamily+' => '',
 ));
 
 //
@@ -1278,44 +1278,44 @@ Dict::Add('EN US', 'English', 'English', array(
 	'Class:Model/Attribute:brand_id+' => '',
 	'Class:Model/Attribute:brand_name' => 'Brand name',
 	'Class:Model/Attribute:brand_name+' => '',
-	'Class:Model/Attribute:Type' => 'Device type',
-	'Class:Model/Attribute:Type+' => '',
-	'Class:Model/Attribute:Type/Value:PowerSource' => 'Power Source',
-	'Class:Model/Attribute:Type/Value:PowerSource+' => 'Power Source',
-	'Class:Model/Attribute:Type/Value:DiskArray' => 'Disk Array',
-	'Class:Model/Attribute:Type/Value:DiskArray+' => 'Disk Array',
-	'Class:Model/Attribute:Type/Value:Enclosure' => 'Enclosure',
-	'Class:Model/Attribute:Type/Value:Enclosure+' => 'Enclosure',
-	'Class:Model/Attribute:Type/Value:IpPhone' => 'Ip Phone',
-	'Class:Model/Attribute:Type/Value:IpPhone+' => 'Ip Phone',
-	'Class:Model/Attribute:Type/Value:MobilePhone' => 'Mobile Phone',
-	'Class:Model/Attribute:Type/Value:MobilePhone+' => 'Mobile Phone',
-	'Class:Model/Attribute:Type/Value:NAS' => 'NAS',
-	'Class:Model/Attribute:Type/Value:NAS+' => 'NAS',
-	'Class:Model/Attribute:Type/Value:NetworkDevice' => 'Network Device',
-	'Class:Model/Attribute:Type/Value:NetworkDevice+' => 'Network Device',
-	'Class:Model/Attribute:Type/Value:PC' => 'PC',
-	'Class:Model/Attribute:Type/Value:PC+' => 'PC',
-	'Class:Model/Attribute:Type/Value:PDU' => 'PDU',
-	'Class:Model/Attribute:Type/Value:PDU+' => 'PDU',
-	'Class:Model/Attribute:Type/Value:Peripheral' => 'Peripheral',
-	'Class:Model/Attribute:Type/Value:Peripheral+' => 'Peripheral',
-	'Class:Model/Attribute:Type/Value:Printer' => 'Printer',
-	'Class:Model/Attribute:Type/Value:Printer+' => 'Printer',
-	'Class:Model/Attribute:Type/Value:Rack' => 'Rack',
-	'Class:Model/Attribute:Type/Value:Rack+' => 'Rack',
-	'Class:Model/Attribute:Type/Value:SANswitch' => 'SAN switch',
-	'Class:Model/Attribute:Type/Value:SANswitch+' => 'SAN switch',
-	'Class:Model/Attribute:Type/Value:Server' => 'Server',
-	'Class:Model/Attribute:Type/Value:Server+' => 'Server',
-	'Class:Model/Attribute:Type/Value:StorageSystem' => 'Storage System',
-	'Class:Model/Attribute:Type/Value:StorageSystem+' => 'Storage System',
-	'Class:Model/Attribute:Type/Value:Tablet' => 'Tablet',
-	'Class:Model/Attribute:Type/Value:Tablet+' => 'Tablet',
-	'Class:Model/Attribute:Type/Value:TapeLibrary' => 'Tape Library',
-	'Class:Model/Attribute:Type/Value:TapeLibrary+' => 'Tape Library',
-	'Class:Model/Attribute:Type/Value:Telephone' => 'Telephone',
-	'Class:Model/Attribute:Type/Value:Telephone+' => 'Telephone',
+	'Class:Model/Attribute:type' => 'Device type',
+	'Class:Model/Attribute:type+' => '',
+	'Class:Model/Attribute:type/Value:PowerSource' => 'Power Source',
+	'Class:Model/Attribute:type/Value:PowerSource+' => 'Power Source',
+	'Class:Model/Attribute:type/Value:DiskArray' => 'Disk Array',
+	'Class:Model/Attribute:type/Value:DiskArray+' => 'Disk Array',
+	'Class:Model/Attribute:type/Value:Enclosure' => 'Enclosure',
+	'Class:Model/Attribute:type/Value:Enclosure+' => 'Enclosure',
+	'Class:Model/Attribute:type/Value:IPPhone' => 'IP Phone',
+	'Class:Model/Attribute:type/Value:IPPhone+' => 'IP Phone',
+	'Class:Model/Attribute:type/Value:MobilePhone' => 'Mobile Phone',
+	'Class:Model/Attribute:type/Value:MobilePhone+' => 'Mobile Phone',
+	'Class:Model/Attribute:type/Value:NAS' => 'NAS',
+	'Class:Model/Attribute:type/Value:NAS+' => 'NAS',
+	'Class:Model/Attribute:type/Value:NetworkDevice' => 'Network Device',
+	'Class:Model/Attribute:type/Value:NetworkDevice+' => 'Network Device',
+	'Class:Model/Attribute:type/Value:PC' => 'PC',
+	'Class:Model/Attribute:type/Value:PC+' => 'PC',
+	'Class:Model/Attribute:type/Value:PDU' => 'PDU',
+	'Class:Model/Attribute:type/Value:PDU+' => 'PDU',
+	'Class:Model/Attribute:type/Value:Peripheral' => 'Peripheral',
+	'Class:Model/Attribute:type/Value:Peripheral+' => 'Peripheral',
+	'Class:Model/Attribute:type/Value:Printer' => 'Printer',
+	'Class:Model/Attribute:type/Value:Printer+' => 'Printer',
+	'Class:Model/Attribute:type/Value:Rack' => 'Rack',
+	'Class:Model/Attribute:type/Value:Rack+' => 'Rack',
+	'Class:Model/Attribute:type/Value:SANSwitch' => 'SAN switch',
+	'Class:Model/Attribute:type/Value:SANSwitch+' => 'SAN switch',
+	'Class:Model/Attribute:type/Value:Server' => 'Server',
+	'Class:Model/Attribute:type/Value:Server+' => 'Server',
+	'Class:Model/Attribute:type/Value:StorageSystem' => 'Storage System',
+	'Class:Model/Attribute:type/Value:StorageSystem+' => 'Storage System',
+	'Class:Model/Attribute:type/Value:Tablet' => 'Tablet',
+	'Class:Model/Attribute:type/Value:Tablet+' => 'Tablet',
+	'Class:Model/Attribute:type/Value:TapeLibrary' => 'Tape Library',
+	'Class:Model/Attribute:type/Value:TapeLibrary+' => 'Tape Library',
+	'Class:Model/Attribute:type/Value:Telephone' => 'Telephone',
+	'Class:Model/Attribute:type/Value:Telephone+' => 'Telephone',
 	'Class:Model/Attribute:physicaldevices_list' => 'Physical devices',
 	'Class:Model/Attribute:physicaldevices_list+' => '',
 ));
@@ -1332,16 +1332,16 @@ Dict::Add('EN US', 'English', 'English', array(
 ));
 
 //
-// Class: IOSversion
+// Class: IOSVersion
 //
 
 Dict::Add('EN US', 'English', 'English', array(
-	'Class:IOSversion' => 'IOS version',
-	'Class:IOSversion+' => '',
-	'Class:IOSversion/Attribute:brand_id' => 'Brand',
-	'Class:IOSversion/Attribute:brand_id+' => '',
-	'Class:IOSversion/Attribute:brand_name' => 'Brand name',
-	'Class:IOSversion/Attribute:brand_name+' => '',
+	'Class:IOSVersion' => 'IOS Version',
+	'Class:IOSVersion+' => '',
+	'Class:IOSVersion/Attribute:brand_id' => 'Brand',
+	'Class:IOSVersion/Attribute:brand_id+' => '',
+	'Class:IOSVersion/Attribute:brand_name' => 'Brand name',
+	'Class:IOSVersion/Attribute:brand_name+' => '',
 ));
 
 //
@@ -1379,20 +1379,20 @@ Dict::Add('EN US', 'English', 'English', array(
 ));
 
 //
-// Class: lnkFunctionalCIToOSpatch
+// Class: lnkFunctionalCIToOSPatch
 //
 
 Dict::Add('EN US', 'English', 'English', array(
-	'Class:lnkFunctionalCIToOSpatch' => 'Link FunctionalCI / OS patch',
-	'Class:lnkFunctionalCIToOSpatch+' => '',
-	'Class:lnkFunctionalCIToOSpatch/Attribute:ospatch_id' => 'OS patch',
-	'Class:lnkFunctionalCIToOSpatch/Attribute:ospatch_id+' => '',
-	'Class:lnkFunctionalCIToOSpatch/Attribute:ospatch_name' => 'OS patch name',
-	'Class:lnkFunctionalCIToOSpatch/Attribute:ospatch_name+' => '',
-	'Class:lnkFunctionalCIToOSpatch/Attribute:functionalci_id' => 'Functionalci',
-	'Class:lnkFunctionalCIToOSpatch/Attribute:functionalci_id+' => '',
-	'Class:lnkFunctionalCIToOSpatch/Attribute:functionalci_name' => 'Functionalci name',
-	'Class:lnkFunctionalCIToOSpatch/Attribute:functionalci_name+' => '',
+	'Class:lnkFunctionalCIToOSPatch' => 'Link FunctionalCI / OS patch',
+	'Class:lnkFunctionalCIToOSPatch+' => '',
+	'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_id' => 'OS patch',
+	'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_id+' => '',
+	'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_name' => 'OS patch name',
+	'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_name+' => '',
+	'Class:lnkFunctionalCIToOSPatch/Attribute:functionalci_id' => 'Functionalci',
+	'Class:lnkFunctionalCIToOSPatch/Attribute:functionalci_id+' => '',
+	'Class:lnkFunctionalCIToOSPatch/Attribute:functionalci_name' => 'Functionalci name',
+	'Class:lnkFunctionalCIToOSPatch/Attribute:functionalci_name+' => '',
 ));
 
 //
@@ -1479,24 +1479,24 @@ Dict::Add('EN US', 'English', 'English', array(
 ));
 
 //
-// Class: IPinterface
+// Class: IPInterface
 //
 
 Dict::Add('EN US', 'English', 'English', array(
-	'Class:IPinterface' => 'IP interface',
-	'Class:IPinterface+' => '',
-	'Class:IPinterface/Attribute:ipaddress' => 'IP address',
-	'Class:IPinterface/Attribute:ipaddress+' => '',
-	'Class:IPinterface/Attribute:macaddress' => 'MAC address',
-	'Class:IPinterface/Attribute:macaddress+' => '',
-	'Class:IPinterface/Attribute:comment' => 'Comment',
-	'Class:IPinterface/Attribute:coment+' => '',
-	'Class:IPinterface/Attribute:ipgateway' => 'IP gateway',
-	'Class:IPinterface/Attribute:ipgateway+' => '',
-	'Class:IPinterface/Attribute:ipmask' => 'IP mask',
-	'Class:IPinterface/Attribute:ipmask+' => '',
-	'Class:IPinterface/Attribute:speed' => 'Speed',
-	'Class:IPinterface/Attribute:speed+' => '',
+	'Class:IPInterface' => 'IP Interface',
+	'Class:IPInterface+' => '',
+	'Class:IPInterface/Attribute:ipaddress' => 'IP address',
+	'Class:IPInterface/Attribute:ipaddress+' => '',
+	'Class:IPInterface/Attribute:macaddress' => 'MAC address',
+	'Class:IPInterface/Attribute:macaddress+' => '',
+	'Class:IPInterface/Attribute:comment' => 'Comment',
+	'Class:IPInterface/Attribute:coment+' => '',
+	'Class:IPInterface/Attribute:ipgateway' => 'IP gateway',
+	'Class:IPInterface/Attribute:ipgateway+' => '',
+	'Class:IPInterface/Attribute:ipmask' => 'IP mask',
+	'Class:IPInterface/Attribute:ipmask+' => '',
+	'Class:IPInterface/Attribute:speed' => 'Speed',
+	'Class:IPInterface/Attribute:speed+' => '',
 ));
 
 //
@@ -1757,8 +1757,8 @@ Dict::Add('EN US', 'English', 'English', array(
 'Menu:ConfigManagement:AllContacts' => 'All contacts: %1$d',
 'Menu:Typology' => 'Typology configuration',
 'Menu:Typology+' => 'Typology configuration',
-'Menu:OSversion' => 'OS Versions',
-'Menu:OSversion+' => '',
+'Menu:OSVersion' => 'OS Versions',
+'Menu:OSVersion+' => '',
 'Menu:Software' => 'Software catalog',
 'Menu:Software+' => 'Software catalog',
 'UI_WelcomeMenu_AllConfigItems' => 'Summary',

+ 134 - 134
datamodels/2.x/itop-config-mgmt/fr.dict.itop-config-mgmt.php

@@ -366,12 +366,12 @@ Dict::Add('FR FR', 'French', 'Français', array(
 ));
 
 //
-// Class: IpPhone
+// Class: IPPhone
 //
 
 Dict::Add('FR FR', 'French', 'Français', array(
-	'Class:IpPhone' => 'Téléphone IP',
-	'Class:IpPhone+' => '',
+	'Class:IPPhone' => 'Téléphone IP',
+	'Class:IPPhone+' => '',
 ));
 
 //
@@ -697,25 +697,25 @@ Dict::Add('FR FR', 'French', 'Français', array(
 ));
 
 //
-// Class: DBserver
+// Class: DBServer
 //
 
 Dict::Add('FR FR', 'French', 'Français', array(
-	'Class:DBserver' => 'Serveur de base de données',
-	'Class:DBserver+' => '',
-	'Class:DBserver/Attribute:dbschema_list' => 'Instances de base de données',
-	'Class:DBserver/Attribute:dbschema_list+' => '',
+	'Class:DBServer' => 'Serveur de base de données',
+	'Class:DBServer+' => '',
+	'Class:DBServer/Attribute:dbschema_list' => 'Instances de base de données',
+	'Class:DBServer/Attribute:dbschema_list+' => '',
 ));
 
 //
-// Class: Webserver
+// Class: WebServer
 //
 
 Dict::Add('FR FR', 'French', 'Français', array(
-	'Class:Webserver' => 'Serveur Web',
-	'Class:Webserver+' => '',
-	'Class:Webserver/Attribute:webapp_list' => 'Application Web',
-	'Class:Webserver/Attribute:webapp_list+' => '',
+	'Class:WebServer' => 'Serveur Web',
+	'Class:WebServer+' => '',
+	'Class:WebServer/Attribute:webapp_list' => 'Application Web',
+	'Class:WebServer/Attribute:webapp_list+' => '',
 ));
 
 //
@@ -723,7 +723,7 @@ Dict::Add('FR FR', 'French', 'Français', array(
 //
 
 Dict::Add('FR FR', 'French', 'Français', array(
-	'Class:PCSoftware' => 'Logicel PC',
+	'Class:PCSoftware' => 'Logiciel PC',
 	'Class:PCsoftware+' => '',
 ));
 
@@ -974,24 +974,24 @@ Dict::Add('FR FR', 'French', 'Français', array(
 ));
 
 //
-// Class: NasFileSystem
+// Class: NASFileSystem
 //
 
 Dict::Add('FR FR', 'French', 'Français', array(
-	'Class:NasFileSystem' => 'Système de fichier NAS',
-	'Class:NasFileSystem+' => '',
-	'Class:NasFileSystem/Attribute:name' => 'Nom',
-	'Class:NasFileSystem/Attribute:name+' => '',
-	'Class:NasFileSystem/Attribute:description' => 'Description',
-	'Class:NasFileSystem/Attribute:description+' => '',
-	'Class:NasFileSystem/Attribute:raid_level' => 'Niveau RAID',
-	'Class:NasFileSystem/Attribute:raid_level+' => '',
-	'Class:NasFileSystem/Attribute:size' => 'Taille',
-	'Class:NasFileSystem/Attribute:size+' => '',
-	'Class:NasFileSystem/Attribute:nas_id' => 'NAS',
-	'Class:NasFileSystem/Attribute:nas_id+' => '',
-	'Class:NasFileSystem/Attribute:nas_name' => 'Nom NAS',
-	'Class:NasFileSystem/Attribute:nas_name+' => '',
+	'Class:NASFileSystem' => 'Système de fichier NAS',
+	'Class:NASFileSystem+' => '',
+	'Class:NASFileSystem/Attribute:name' => 'Nom',
+	'Class:NASFileSystem/Attribute:name+' => '',
+	'Class:NASFileSystem/Attribute:description' => 'Description',
+	'Class:NASFileSystem/Attribute:description+' => '',
+	'Class:NASFileSystem/Attribute:raid_level' => 'Niveau RAID',
+	'Class:NASFileSystem/Attribute:raid_level+' => '',
+	'Class:NASFileSystem/Attribute:size' => 'Taille',
+	'Class:NASFileSystem/Attribute:size+' => '',
+	'Class:NASFileSystem/Attribute:nas_id' => 'NAS',
+	'Class:NASFileSystem/Attribute:nas_id+' => '',
+	'Class:NASFileSystem/Attribute:nas_name' => 'Nom NAS',
+	'Class:NASFileSystem/Attribute:nas_name+' => '',
 ));
 
 //
@@ -1011,16 +1011,16 @@ Dict::Add('FR FR', 'French', 'Français', array(
 	'Class:Software/Attribute:documents_list+' => '',
 	'Class:Software/Attribute:type' => 'Type',
 	'Class:Software/Attribute:type+' => '',
-	'Class:Software/Attribute:type/Value:DBserver' => 'Serveur de base de données',
-	'Class:Software/Attribute:type/Value:DBserver+' => 'Serveur de base de données',
+	'Class:Software/Attribute:type/Value:DBServer' => 'Serveur de base de données',
+	'Class:Software/Attribute:type/Value:DBServer+' => 'Serveur de base de données',
 	'Class:Software/Attribute:type/Value:Middleware' => 'Middleware',
 	'Class:Software/Attribute:type/Value:Middleware+' => 'Middleware',
 	'Class:Software/Attribute:type/Value:OtherSoftware' => 'Autre logiciel',
 	'Class:Software/Attribute:type/Value:OtherSoftware+' => 'Autre logiciel',
 	'Class:Software/Attribute:type/Value:PCSoftware' => 'Logiciel PC',
 	'Class:Software/Attribute:type/Value:PCSoftware+' => 'Logiciel PC',
-	'Class:Software/Attribute:type/Value:Webserver' => 'Serveur Web',
-	'Class:Software/Attribute:type/Value:Webserver+' => 'Serveur Web',
+	'Class:Software/Attribute:type/Value:WebServer' => 'Serveur Web',
+	'Class:Software/Attribute:type/Value:WebServer+' => 'Serveur Web',
 	'Class:Software/Attribute:softwareinstance_list' => 'Instances logiciels',
 	'Class:Software/Attribute:softwareinstance_list+' => '',
 	'Class:Software/Attribute:softwarepatch_list' => 'Patchs logiciels',
@@ -1047,18 +1047,18 @@ Dict::Add('FR FR', 'French', 'Français', array(
 ));
 
 //
-// Class: OSpatch
+// Class: OSPatch
 //
 
 Dict::Add('FR FR', 'French', 'Français', array(
-	'Class:OSpatch' => 'Patch OS',
-	'Class:OSpatch+' => '',
-	'Class:OSpatch/Attribute:functionalcis_list' => 'Systèmes',
-	'Class:OSpatch/Attribute:functionalcis_list+' => '',
-	'Class:OSpatch/Attribute:osversion_id' => 'Version OS',
-	'Class:OSpatch/Attribute:osversion_id+' => '',
-	'Class:OSpatch/Attribute:osversion_name' => 'Nom Version OS',
-	'Class:OSpatch/Attribute:osversion_name+' => '',
+	'Class:OSPatch' => 'Patch OS',
+	'Class:OSPatch+' => '',
+	'Class:OSPatch/Attribute:functionalcis_list' => 'Systèmes',
+	'Class:OSPatch/Attribute:functionalcis_list+' => '',
+	'Class:OSPatch/Attribute:osversion_id' => 'Version OS',
+	'Class:OSPatch/Attribute:osversion_id+' => '',
+	'Class:OSPatch/Attribute:osversion_name' => 'Nom Version OS',
+	'Class:OSPatch/Attribute:osversion_name+' => '',
 ));
 
 //
@@ -1106,20 +1106,20 @@ Dict::Add('FR FR', 'French', 'Français', array(
 ));
 
 //
-// Class: OsLicence
+// Class: OSLicence
 //
 
 Dict::Add('FR FR', 'French', 'Français', array(
-	'Class:OsLicence' => 'Licence OS',
-	'Class:OsLicence+' => '',
-	'Class:OsLicence/Attribute:osversion_id' => 'Version OS',
-	'Class:OsLicence/Attribute:osversion_id+' => '',
-	'Class:OsLicence/Attribute:osversion_name' => 'Nom Version OS',
-	'Class:OsLicence/Attribute:osversion_name+' => '',
-	'Class:OsLicence/Attribute:virtualmachines_list' => 'Machines virtuelles',
-	'Class:OsLicence/Attribute:virtualmachines_list+' => '',
-	'Class:OsLicence/Attribute:servers_list' => 'Serveurs',
-	'Class:OsLicence/Attribute:servers_list+' => '',
+	'Class:OSLicence' => 'Licence OS',
+	'Class:OSLicence+' => '',
+	'Class:OSLicence/Attribute:osversion_id' => 'Version OS',
+	'Class:OSLicence/Attribute:osversion_id+' => '',
+	'Class:OSLicence/Attribute:osversion_name' => 'Nom Version OS',
+	'Class:OSLicence/Attribute:osversion_name+' => '',
+	'Class:OSLicence/Attribute:virtualmachines_list' => 'Machines virtuelles',
+	'Class:OSLicence/Attribute:virtualmachines_list+' => '',
+	'Class:OSLicence/Attribute:servers_list' => 'Serveurs',
+	'Class:OSLicence/Attribute:servers_list+' => '',
 ));
 
 //
@@ -1168,25 +1168,25 @@ Dict::Add('FR FR', 'French', 'Français', array(
 ));
 
 //
-// Class: OSversion
+// Class: OSVersion
 //
 
 Dict::Add('FR FR', 'French', 'Français', array(
-	'Class:OSversion' => 'Version OS',
-	'Class:OSversion+' => '',
-	'Class:OSversion/Attribute:osfamily_id' => 'Famille OS',
-	'Class:OSversion/Attribute:osfamily_id+' => '',
-	'Class:OSversion/Attribute:osfamily_name' => 'Nom Famille OS',
-	'Class:OSversion/Attribute:osfamily_name+' => '',
+	'Class:OSVersion' => 'Version OS',
+	'Class:OSVersion+' => '',
+	'Class:OSVersion/Attribute:osfamily_id' => 'Famille OS',
+	'Class:OSVersion/Attribute:osfamily_id+' => '',
+	'Class:OSVersion/Attribute:osfamily_name' => 'Nom Famille OS',
+	'Class:OSVersion/Attribute:osfamily_name+' => '',
 ));
 
 //
-// Class: OSfamily
+// Class: OSFamily
 //
 
 Dict::Add('FR FR', 'French', 'Français', array(
-	'Class:OSfamily' => 'Famille OS',
-	'Class:OSfamily+' => '',
+	'Class:OSFamily' => 'Famille OS',
+	'Class:OSFamily+' => '',
 ));
 
 //
@@ -1229,42 +1229,42 @@ Dict::Add('FR FR', 'French', 'Français', array(
 	'Class:Model/Attribute:brand_id+' => '',
 	'Class:Model/Attribute:brand_name' => 'Nom marque',
 	'Class:Model/Attribute:brand_name+' => '',
-	'Class:Model/Attribute:Type' => 'Type de matériel',
-	'Class:Model/Attribute:Type+' => '',
-	'Class:Model/Attribute:Type/Value:PowerSource' => 'Arrivée électrique',
-	'Class:Model/Attribute:Type/Value:PowerSource+' => 'Arrivée électrique',
-	'Class:Model/Attribute:Type/Value:Enclosure' => 'Chassis',
-	'Class:Model/Attribute:Type/Value:Enclosure+' => 'Chassis',
-	'Class:Model/Attribute:Type/Value:IpPhone' => 'Téléphone IP',
-	'Class:Model/Attribute:Type/Value:IpPhone+' => 'Téléphone IP',
-	'Class:Model/Attribute:Type/Value:MobilePhone' => 'Téléphone mobile',
-	'Class:Model/Attribute:Type/Value:MobilePhone+' => 'Téléphone mobile',
-	'Class:Model/Attribute:Type/Value:NAS' => 'NAS',
-	'Class:Model/Attribute:Type/Value:NAS+' => 'NAS',
-	'Class:Model/Attribute:Type/Value:NetworkDevice' => 'Equipement réseau',
-	'Class:Model/Attribute:Type/Value:NetworkDevice+' => 'Equipement réseau',
-	'Class:Model/Attribute:Type/Value:PC' => 'PC',
-	'Class:Model/Attribute:Type/Value:PC+' => 'PC',
-	'Class:Model/Attribute:Type/Value:PDU' => 'PDU',
-	'Class:Model/Attribute:Type/Value:PDU+' => 'PDU',
-	'Class:Model/Attribute:Type/Value:Peripheral' => 'Périphérique',
-	'Class:Model/Attribute:Type/Value:Peripheral+' => 'Périphérique',
-	'Class:Model/Attribute:Type/Value:Printer' => 'Imprimante',
-	'Class:Model/Attribute:Type/Value:Printer+' => 'Imprimante',
-	'Class:Model/Attribute:Type/Value:Rack' => 'Rack',
-	'Class:Model/Attribute:Type/Value:Rack+' => 'Rack',
-	'Class:Model/Attribute:Type/Value:SANswitch' => 'Switch SAN',
-	'Class:Model/Attribute:Type/Value:SANswitch+' => 'Switch SAN',
-	'Class:Model/Attribute:Type/Value:Server' => 'Serveur',
-	'Class:Model/Attribute:Type/Value:Server+' => 'Serveur',
-	'Class:Model/Attribute:Type/Value:StorageSystem' => 'Système de stockage',
-	'Class:Model/Attribute:Type/Value:StorageSystem+' => 'SSystème de stockage',
-	'Class:Model/Attribute:Type/Value:Tablet' => 'Tablette',
-	'Class:Model/Attribute:Type/Value:Tablet+' => 'Tablette',
-	'Class:Model/Attribute:Type/Value:TapeLibrary' => 'Bandothèque',
-	'Class:Model/Attribute:Type/Value:TapeLibrary+' => 'Bandothèque',
-	'Class:Model/Attribute:Type/Value:Telephone' => 'Téléphone',
-	'Class:Model/Attribute:Type/Value:Telephone+' => 'Téléphone',
+	'Class:Model/Attribute:type' => 'Type de matériel',
+	'Class:Model/Attribute:type+' => '',
+	'Class:Model/Attribute:type/Value:PowerSource' => 'Arrivée électrique',
+	'Class:Model/Attribute:type/Value:PowerSource+' => 'Arrivée électrique',
+	'Class:Model/Attribute:type/Value:Enclosure' => 'Chassis',
+	'Class:Model/Attribute:type/Value:Enclosure+' => 'Chassis',
+	'Class:Model/Attribute:type/Value:IPPhone' => 'Téléphone IP',
+	'Class:Model/Attribute:type/Value:IPPhone+' => 'Téléphone IP',
+	'Class:Model/Attribute:type/Value:MobilePhone' => 'Téléphone mobile',
+	'Class:Model/Attribute:type/Value:MobilePhone+' => 'Téléphone mobile',
+	'Class:Model/Attribute:type/Value:NAS' => 'NAS',
+	'Class:Model/Attribute:type/Value:NAS+' => 'NAS',
+	'Class:Model/Attribute:type/Value:NetworkDevice' => 'Equipement réseau',
+	'Class:Model/Attribute:type/Value:NetworkDevice+' => 'Equipement réseau',
+	'Class:Model/Attribute:type/Value:PC' => 'PC',
+	'Class:Model/Attribute:type/Value:PC+' => 'PC',
+	'Class:Model/Attribute:type/Value:PDU' => 'PDU',
+	'Class:Model/Attribute:type/Value:PDU+' => 'PDU',
+	'Class:Model/Attribute:type/Value:Peripheral' => 'Périphérique',
+	'Class:Model/Attribute:type/Value:Peripheral+' => 'Périphérique',
+	'Class:Model/Attribute:type/Value:Printer' => 'Imprimante',
+	'Class:Model/Attribute:type/Value:Printer+' => 'Imprimante',
+	'Class:Model/Attribute:type/Value:Rack' => 'Rack',
+	'Class:Model/Attribute:type/Value:Rack+' => 'Rack',
+	'Class:Model/Attribute:type/Value:SANSwitch' => 'Switch SAN',
+	'Class:Model/Attribute:type/Value:SANSwitch+' => 'Switch SAN',
+	'Class:Model/Attribute:type/Value:Server' => 'Serveur',
+	'Class:Model/Attribute:type/Value:Server+' => 'Serveur',
+	'Class:Model/Attribute:type/Value:StorageSystem' => 'Système de stockage',
+	'Class:Model/Attribute:type/Value:StorageSystem+' => 'SSystème de stockage',
+	'Class:Model/Attribute:type/Value:Tablet' => 'Tablette',
+	'Class:Model/Attribute:type/Value:Tablet+' => 'Tablette',
+	'Class:Model/Attribute:type/Value:TapeLibrary' => 'Bandothèque',
+	'Class:Model/Attribute:type/Value:TapeLibrary+' => 'Bandothèque',
+	'Class:Model/Attribute:type/Value:Telephone' => 'Téléphone',
+	'Class:Model/Attribute:type/Value:Telephone+' => 'Téléphone',
 	'Class:Model/Attribute:physicaldevices_list' => 'Matériels',
 	'Class:Model/Attribute:physicaldevices_list+' => '',
 ));
@@ -1281,16 +1281,16 @@ Dict::Add('FR FR', 'French', 'Français', array(
 ));
 
 //
-// Class: IOSversion
+// Class: IOSVersion
 //
 
 Dict::Add('FR FR', 'French', 'Français', array(
-	'Class:IOSversion' => 'Version IOS',
-	'Class:IOSversion+' => '',
-	'Class:IOSversion/Attribute:brand_id' => 'Marque',
-	'Class:IOSversion/Attribute:brand_id+' => '',
-	'Class:IOSversion/Attribute:brand_name' => 'Nom Marque',
-	'Class:IOSversion/Attribute:brand_name+' => '',
+	'Class:IOSVersion' => 'Version IOS',
+	'Class:IOSVersion+' => '',
+	'Class:IOSVersion/Attribute:brand_id' => 'Marque',
+	'Class:IOSVersion/Attribute:brand_id+' => '',
+	'Class:IOSVersion/Attribute:brand_name' => 'Nom Marque',
+	'Class:IOSVersion/Attribute:brand_name+' => '',
 ));
 
 //
@@ -1328,20 +1328,20 @@ Dict::Add('FR FR', 'French', 'Français', array(
 ));
 
 //
-// Class: lnkFunctionalCIToOSpatch
+// Class: lnkFunctionalCIToOSPatch
 //
 
 Dict::Add('FR FR', 'French', 'Français', array(
-	'Class:lnkFunctionalCIToOSpatch' => 'Lien CI Fonctionel / Patch OS',
-	'Class:lnkFunctionalCIToOSpatch+' => '',
-	'Class:lnkFunctionalCIToOSpatch/Attribute:ospatch_id' => 'Patch OS',
-	'Class:lnkFunctionalCIToOSpatch/Attribute:ospatch_id+' => '',
-	'Class:lnkFunctionalCIToOSpatch/Attribute:ospatch_name' => 'Nom Patch OS',
-	'Class:lnkFunctionalCIToOSpatch/Attribute:ospatch_name+' => '',
-	'Class:lnkFunctionalCIToOSpatch/Attribute:functionalci_id' => 'CI',
-	'Class:lnkFunctionalCIToOSpatch/Attribute:functionalci_id+' => '',
-	'Class:lnkFunctionalCIToOSpatch/Attribute:functionalci_name' => 'Nom CI',
-	'Class:lnkFunctionalCIToOSpatch/Attribute:functionalci_name+' => '',
+	'Class:lnkFunctionalCIToOSPatch' => 'Lien CI Fonctionel / Patch OS',
+	'Class:lnkFunctionalCIToOSPatch+' => '',
+	'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_id' => 'Patch OS',
+	'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_id+' => '',
+	'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_name' => 'Nom Patch OS',
+	'Class:lnkFunctionalCIToOSPatch/Attribute:ospatch_name+' => '',
+	'Class:lnkFunctionalCIToOSPatch/Attribute:functionalci_id' => 'CI',
+	'Class:lnkFunctionalCIToOSPatch/Attribute:functionalci_id+' => '',
+	'Class:lnkFunctionalCIToOSPatch/Attribute:functionalci_name' => 'Nom CI',
+	'Class:lnkFunctionalCIToOSPatch/Attribute:functionalci_name+' => '',
 ));
 
 //
@@ -1428,24 +1428,24 @@ Dict::Add('FR FR', 'French', 'Français', array(
 ));
 
 //
-// Class: IPinterface
+// Class: IPInterface
 //
 
 Dict::Add('FR FR', 'French', 'Français', array(
-	'Class:IPinterface' => 'Interface IP',
-	'Class:IPinterface+' => '',
-	'Class:IPinterface/Attribute:ipaddress' => 'Adresse IP',
-	'Class:IPinterface/Attribute:ipaddress+' => '',
-	'Class:IPinterface/Attribute:macaddress' => 'Adresse MAC',
-	'Class:IPinterface/Attribute:macaddress+' => '',
-	'Class:IPinterface/Attribute:coment' => 'Commentaire',
-	'Class:IPinterface/Attribute:coment+' => '',
-	'Class:IPinterface/Attribute:ipgateway' => 'Passerelle',
-	'Class:IPinterface/Attribute:ipgateway+' => '',
-	'Class:IPinterface/Attribute:ipmask' => 'Masque de sous réseau',
-	'Class:IPinterface/Attribute:ipmask+' => '',
-	'Class:IPinterface/Attribute:speed' => 'Vitesse',
-	'Class:IPinterface/Attribute:speed+' => '',
+	'Class:IPInterface' => 'Interface IP',
+	'Class:IPInterface+' => '',
+	'Class:IPInterface/Attribute:ipaddress' => 'Adresse IP',
+	'Class:IPInterface/Attribute:ipaddress+' => '',
+	'Class:IPInterface/Attribute:macaddress' => 'Adresse MAC',
+	'Class:IPInterface/Attribute:macaddress+' => '',
+	'Class:IPInterface/Attribute:coment' => 'Commentaire',
+	'Class:IPInterface/Attribute:coment+' => '',
+	'Class:IPInterface/Attribute:ipgateway' => 'Passerelle',
+	'Class:IPInterface/Attribute:ipgateway+' => '',
+	'Class:IPInterface/Attribute:ipmask' => 'Masque de sous réseau',
+	'Class:IPInterface/Attribute:ipmask+' => '',
+	'Class:IPInterface/Attribute:speed' => 'Vitesse',
+	'Class:IPInterface/Attribute:speed+' => '',
 ));
 
 //
@@ -1728,8 +1728,8 @@ Dict::Add('FR FR', 'French', 'Français', array(
 	'Menu:NetworkType+' => '',
 	'Menu:Typology' => 'Typologie configuration',
 	'Menu:Typology+' => 'Typologie configuration',
-	'Menu:OSversion' => 'Versions d\'OS',
-	'Menu:OSversion+' => '',
+	'Menu:OSVersion' => 'Versions d\'OS',
+	'Menu:OSVersion+' => '',
 	'Menu:ContactType' => 'Types de contact',
 	'Menu:ContactType+' => '',
 	'Menu:LicenceType' => 'Types de licence',

+ 53 - 1
datamodels/2.x/itop-config-mgmt/module.itop-config-mgmt.php

@@ -16,6 +16,7 @@ SetupWebPage::AddModule(
 		),
 		'mandatory' => true,
 		'visible' => true,
+		'installer' => 'ConfigMgmtInstaller',
 
 		// Components
 		//
@@ -61,4 +62,55 @@ SetupWebPage::AddModule(
 	)
 );
 
-?>
+if (!class_exists('ConfigMgmtInstaller'))
+{
+	// Module installation handler
+	//
+	class ConfigMgmtInstaller extends ModuleInstallerAPI
+	{
+		public static function BeforeWritingConfig(Config $oConfiguration)
+		{
+			// If you want to override/force some configuration values, do it here
+			return $oConfiguration;
+		}
+
+		/**
+		 * Handler called before creating or upgrading the database schema
+		 * @param $oConfiguration Config The new configuration of the application
+		 * @param $sPreviousVersion string PRevious version number of the module (empty string in case of first install)
+		 * @param $sCurrentVersion string Current version number of the module
+		 */
+		public static function BeforeDatabaseCreation(Config $oConfiguration, $sPreviousVersion, $sCurrentVersion)
+		{
+			if (strlen($sPreviousVersion) > 0)
+			{
+				// If you want to migrate data from one format to another, do it here
+				self::RenameEnumValueInDB('Software', 'type', 'DBserver', 'DBServer');
+				self::RenameEnumValueInDB('Software', 'type', 'Webserver', 'WebServer');
+				self::RenameEnumValueInDB('Model', 'type', 'SANswitch', 'SANSwitch');
+				self::RenameEnumValueInDB('Model', 'type', 'IpPhone', 'IPPhone');
+				self::RenameClassInDB('DBserver', 'DBServer');
+				self::RenameClassInDB('OSfamily', 'OSFamily');
+				self::RenameClassInDB('OSversion', 'OSVersion');
+				self::RenameClassInDB('Webserver', 'WebServer');
+				self::RenameClassInDB('OSpatch', 'OSPatch');
+				self::RenameClassInDB('lnkFunctionalCIToOSpatch', 'lnkFunctionalCIToOSPatch');
+				self::RenameClassInDB('OsLicence', 'OSLicence');
+				self::RenameClassInDB('IOSversion', 'IOSVersion');
+				self::RenameClassInDB('IPinterface', 'IPInterface');
+			}
+		}
+	
+		/**
+		 * Handler called after the creation/update of the database schema
+		 * @param $oConfiguration Config The new configuration of the application
+		 * @param $sPreviousVersion string PRevious version number of the module (empty string in case of first install)
+		 * @param $sCurrentVersion string Current version number of the module
+		 */
+		public static function AfterDatabaseCreation(Config $oConfiguration, $sPreviousVersion, $sCurrentVersion)
+		{
+		}
+	}
+}
+
+?>

+ 5 - 5
datamodels/2.x/itop-endusers-devices/datamodel.itop-enduser-devices.xml

@@ -489,7 +489,7 @@
         </list>
       </presentation>
     </class>
-    <class id="IpPhone" _delta="define">
+    <class id="IPPhone" _delta="define">
       <parent>TelephonyCI</parent>
       <properties>
         <category>bizmodel,searchable</category>
@@ -826,7 +826,7 @@
       <fields>
         <field id="osfamily_id" xsi:type="AttributeExternalKey">
           <sql>osfamily_id</sql>
-          <target_class>OSfamily</target_class>
+          <target_class>OSFamily</target_class>
           <is_null_allowed>true</is_null_allowed>
           <on_target_delete>DEL_MANUAL</on_target_delete>
         </field>
@@ -835,12 +835,12 @@
           <target_attcode>name</target_attcode>
         </field>
         <field id="osversion_id" xsi:type="AttributeExternalKey">
-          <filter><![CDATA[SELECT OSversion WHERE osfamily_id = :this->osfamily_id]]></filter>
+          <filter><![CDATA[SELECT OSVersion WHERE osfamily_id = :this->osfamily_id]]></filter>
           <dependencies>
             <attribute id="osfamily_id"/>
           </dependencies>
           <sql>osversion_id</sql>
-          <target_class>OSversion</target_class>
+          <target_class>OSVersion</target_class>
           <is_null_allowed>true</is_null_allowed>
           <on_target_delete>DEL_MANUAL</on_target_delete>
         </field>
@@ -1416,7 +1416,7 @@
             </dashlet>
             <dashlet id="28" xsi:type="DashletBadge">
               <rank>3</rank>
-              <class>IpPhone</class>
+              <class>IPPhone</class>
             </dashlet>
             <dashlet id="29" xsi:type="DashletBadge">
               <rank>4</rank>

+ 39 - 0
datamodels/2.x/itop-endusers-devices/module.itop-endusers-devices.php

@@ -30,6 +30,7 @@ SetupWebPage::AddModule(
 		),
 		'mandatory' => false,
 		'visible' => true,
+		'installer' => 'EndUserMgmtInstaller',
 
 		// Components
 		//
@@ -59,5 +60,43 @@ SetupWebPage::AddModule(
 	)
 );
 
+if (!class_exists('EndUserMgmtInstaller'))
+{
+	// Module installation handler
+	//
+	class EndUserMgmtInstaller extends ModuleInstallerAPI
+	{
+		public static function BeforeWritingConfig(Config $oConfiguration)
+		{
+			// If you want to override/force some configuration values, do it here
+			return $oConfiguration;
+		}
+
+		/**
+		 * Handler called before creating or upgrading the database schema
+		 * @param $oConfiguration Config The new configuration of the application
+		 * @param $sPreviousVersion string PRevious version number of the module (empty string in case of first install)
+		 * @param $sCurrentVersion string Current version number of the module
+		 */
+		public static function BeforeDatabaseCreation(Config $oConfiguration, $sPreviousVersion, $sCurrentVersion)
+		{
+			if (strlen($sPreviousVersion) > 0)
+			{
+				// If you want to migrate data from one format to another, do it here
+				self::RenameClassInDB('IpPhone', 'IPPhone');
+			}
+		}
+	
+		/**
+		 * Handler called after the creation/update of the database schema
+		 * @param $oConfiguration Config The new configuration of the application
+		 * @param $sPreviousVersion string PRevious version number of the module (empty string in case of first install)
+		 * @param $sCurrentVersion string Current version number of the module
+		 */
+		public static function AfterDatabaseCreation(Config $oConfiguration, $sPreviousVersion, $sCurrentVersion)
+		{
+		}
+	}
+}
 
 ?>

+ 2 - 2
datamodels/2.x/itop-incident-mgmt-itil/en.dict.itop-incident-mgmt-itil.php

@@ -132,9 +132,9 @@ Dict::Add('EN US', 'English', 'English', array(
 	'Class:Incident/Attribute:service_id+' => '',
 	'Class:Incident/Attribute:service_name' => 'Service name',
 	'Class:Incident/Attribute:service_name+' => '',
-	'Class:Incident/Attribute:servicesubcategory_id' => 'Service sub category',
+	'Class:Incident/Attribute:servicesubcategory_id' => 'Service subcategory',
 	'Class:Incident/Attribute:servicesubcategory_id+' => '',
-	'Class:Incident/Attribute:servicesubcategory_name' => 'Service sub category name',
+	'Class:Incident/Attribute:servicesubcategory_name' => 'Service subcategory name',
 	'Class:Incident/Attribute:servicesubcategory_name+' => '',
 	'Class:Incident/Attribute:escalation_flag' => 'Hot Flag',
 	'Class:Incident/Attribute:escalation_flag+' => '',

+ 3 - 3
datamodels/2.x/itop-knownerror-mgmt/datamodel.itop-knownerror-mgmt.xml

@@ -430,7 +430,7 @@
         </field>
         <field id="category_id" xsi:type="AttributeExternalKey">
           <sql>category_id</sql>
-          <target_class>FAQcategory</target_class>
+          <target_class>FAQCategory</target_class>
           <is_null_allowed>false</is_null_allowed>
           <on_target_delete>DEL_MANUAL</on_target_delete>
         </field>
@@ -507,7 +507,7 @@
         </list>
       </presentation>
     </class>
-    <class id="FAQcategory" _delta="define">
+    <class id="FAQCategory" _delta="define">
       <parent>cmdbAbstractObject</parent>
       <properties>
         <category>bizmodel,searchable,knownerrormgmt</category>
@@ -594,7 +594,7 @@
     <menu id="FAQCategory" xsi:type="OQLMenuNode" _delta="define">
       <rank>4.5</rank>
       <parent>Problem:Shortcuts</parent>
-      <oql>SELECT FAQcategory</oql>
+      <oql>SELECT FAQCategory</oql>
       <do_search>1</do_search>
     </menu>
     <menu id="FAQ" xsi:type="OQLMenuNode" _delta="define">

+ 7 - 7
datamodels/2.x/itop-knownerror-mgmt/en.dict.itop-knownerror-mgmt.php

@@ -160,16 +160,16 @@ Dict::Add('EN US', 'English', 'English', array(
 ));
 
 //
-// Class: FAQcategory
+// Class: FAQCategory
 //
 
 Dict::Add('EN US', 'English', 'English', array(
-	'Class:FAQcategory' => 'FAQ Category',
-	'Class:FAQcategory+' => 'Category for FAQ',
-	'Class:FAQcategory/Attribute:name' => 'Name',
-	'Class:FAQcategory/Attribute:name+' => '',
-	'Class:FAQcategory/Attribute:faq_list' => 'FAQs',
-	'Class:FAQcategory/Attribute:faq_list+' => '',
+	'Class:FAQCategory' => 'FAQ Category',
+	'Class:FAQCategory+' => 'Category for FAQ',
+	'Class:FAQCategory/Attribute:name' => 'Name',
+	'Class:FAQCategory/Attribute:name+' => '',
+	'Class:FAQCategory/Attribute:faq_list' => 'FAQs',
+	'Class:FAQCategory/Attribute:faq_list+' => '',
 ));
 Dict::Add('EN US', 'English', 'English', array(
 	'Menu:NewError' => 'New Known Error',

+ 7 - 7
datamodels/2.x/itop-knownerror-mgmt/fr.dict.itop-knownerror-mgmt.php

@@ -132,16 +132,16 @@ Dict::Add('FR FR', 'French', 'Français', array(
 ));
 
 //
-// Class: FAQcategory
+// Class: FAQCategory
 //
 
 Dict::Add('FR FR', 'French', 'Français', array(
-	'Class:FAQcategory' => 'Catégorie de FAQ',
-	'Class:FAQcategory+' => 'Catégorie de FAQ',
-	'Class:FAQcategory/Attribute:name' => 'Nom',
-	'Class:FAQcategory/Attribute:name+' => '',
-	'Class:FAQcategory/Attribute:faq_list' => 'FAQs',
-	'Class:FAQcategory/Attribute:faq_list+' => '',
+	'Class:FAQCategory' => 'Catégorie de FAQ',
+	'Class:FAQCategory+' => 'Catégorie de FAQ',
+	'Class:FAQCategory/Attribute:name' => 'Nom',
+	'Class:FAQCategory/Attribute:name+' => '',
+	'Class:FAQCategory/Attribute:faq_list' => 'FAQs',
+	'Class:FAQCategory/Attribute:faq_list+' => '',
 ));
 
 Dict::Add('EN US', 'English', 'English', array(

+ 40 - 0
datamodels/2.x/itop-knownerror-mgmt/module.itop-knownerror-mgmt.php

@@ -18,6 +18,7 @@ SetupWebPage::AddModule(
 		),
 		'mandatory' => false,
 		'visible' => true,
+		'installer' => 'KnownErrorMgmtInstaller',
 
 		// Components
 		//
@@ -43,4 +44,43 @@ SetupWebPage::AddModule(
 	)
 );
 
+if (!class_exists('KnownErrorMgmtInstaller'))
+{
+	// Module installation handler
+	//
+	class KnownErrorMgmtInstaller extends ModuleInstallerAPI
+	{
+		public static function BeforeWritingConfig(Config $oConfiguration)
+		{
+			// If you want to override/force some configuration values, do it here
+			return $oConfiguration;
+		}
+
+		/**
+		 * Handler called before creating or upgrading the database schema
+		 * @param $oConfiguration Config The new configuration of the application
+		 * @param $sPreviousVersion string PRevious version number of the module (empty string in case of first install)
+		 * @param $sCurrentVersion string Current version number of the module
+		 */
+		public static function BeforeDatabaseCreation(Config $oConfiguration, $sPreviousVersion, $sCurrentVersion)
+		{
+			if (strlen($sPreviousVersion) > 0)
+			{
+				// If you want to migrate data from one format to another, do it here
+				self::RenameClassInDB('FAQcategory', 'FAQCategory');
+			}
+		}
+	
+		/**
+		 * Handler called after the creation/update of the database schema
+		 * @param $oConfiguration Config The new configuration of the application
+		 * @param $sPreviousVersion string PRevious version number of the module (empty string in case of first install)
+		 * @param $sCurrentVersion string Current version number of the module
+		 */
+		public static function AfterDatabaseCreation(Config $oConfiguration, $sPreviousVersion, $sCurrentVersion)
+		{
+		}
+	}
+}
+
 ?>

+ 2 - 2
datamodels/2.x/itop-problem-mgmt/en.dict.itop-problem-mgmt.php

@@ -97,9 +97,9 @@ Dict::Add('EN US', 'English', 'English', array(
 	'Class:Problem/Attribute:service_id+' => '',
 	'Class:Problem/Attribute:service_name' => 'Service name',
 	'Class:Problem/Attribute:service_name+' => '',
-	'Class:Problem/Attribute:servicesubcategory_id' => 'Service sub category',
+	'Class:Problem/Attribute:servicesubcategory_id' => 'Service subcategory',
 	'Class:Problem/Attribute:servicesubcategory_id+' => '',
-	'Class:Problem/Attribute:servicesubcategory_name' => 'Service sub category',
+	'Class:Problem/Attribute:servicesubcategory_name' => 'Service subcategory',
 	'Class:Problem/Attribute:servicesubcategory_name+' => '',
 	'Class:Problem/Attribute:product' => 'Product',
 	'Class:Problem/Attribute:product+' => '',

+ 5 - 5
datamodels/2.x/itop-profiles-itil/datamodel.itop-profiles-itil.xml

@@ -50,7 +50,7 @@
           <class id="Group"/>
           <class id="lnkDocumentToLicence"/>
           <class id="Typology"/>
-          <class id="NasFileSystem"/>
+          <class id="NASFileSystem"/>
           <class id="LogicalVolume"/>
           <class id="Tape"/>
           <class id="lnkApplicationSolutionToBusinessProcess"/>
@@ -61,7 +61,7 @@
           <class id="lnkDocumentToLicence"/>
           <class id="lnkDocumentToPatch"/>
           <class id="lnkDocumentToSoftware"/>
-          <class id="lnkFunctionalCIToOSpatch"/>
+          <class id="lnkFunctionalCIToOSPatch"/>
           <class id="lnkGroupToCI"/>
           <class id="lnkSanToDatacenterDevice"/>
           <class id="lnkServerToVolume"/>
@@ -130,10 +130,10 @@
       <group id="KnownError" _delta="define">
         <classes>
           <class id="KnownError"/>
-          <class id="lnkInfraError"/>
+          <class id="lnkErrorToFunctionalCI"/>
           <class id="lnkDocumentError"/>
           <class id="FAQ"/>
-         <class id="FAQcategory"/>
+         <class id="FAQCategory"/>
         </classes>
       </group>
       <group id="LnkTickets" _delta="define">
@@ -159,7 +159,7 @@
       </group>
       <group id="LnkKnownErrors" _delta="define">
         <classes>
-          <class id="lnkInfraError"/>
+          <class id="lnkErrorToFunctionalCI"/>
           <class id="lnkDocumentError"/>
         </classes>
       </group>

+ 2 - 2
datamodels/2.x/itop-request-mgmt-itil/en.dict.itop-request-mgmt-itil.php

@@ -148,9 +148,9 @@ Dict::Add('EN US', 'English', 'English', array(
 	'Class:UserRequest/Attribute:service_id+' => '',
 	'Class:UserRequest/Attribute:service_name' => 'Service name',
 	'Class:UserRequest/Attribute:service_name+' => '',
-	'Class:UserRequest/Attribute:servicesubcategory_id' => 'Service sub category',
+	'Class:UserRequest/Attribute:servicesubcategory_id' => 'Service subcategory',
 	'Class:UserRequest/Attribute:servicesubcategory_id+' => '',
-	'Class:UserRequest/Attribute:servicesubcategory_name' => 'Service sub category name',
+	'Class:UserRequest/Attribute:servicesubcategory_name' => 'Service subcategory name',
 	'Class:UserRequest/Attribute:servicesubcategory_name+' => '',
 	'Class:UserRequest/Attribute:escalation_flag' => 'Hot Flag',
 	'Class:UserRequest/Attribute:escalation_flag+' => '',

+ 2 - 2
datamodels/2.x/itop-request-mgmt/en.dict.itop-request-mgmt.php

@@ -153,9 +153,9 @@ Dict::Add('EN US', 'English', 'English', array(
 	'Class:UserRequest/Attribute:service_id+' => '',
 	'Class:UserRequest/Attribute:service_name' => 'Service name',
 	'Class:UserRequest/Attribute:service_name+' => '',
-	'Class:UserRequest/Attribute:servicesubcategory_id' => 'Service sub category',
+	'Class:UserRequest/Attribute:servicesubcategory_id' => 'Service subcategory',
 	'Class:UserRequest/Attribute:servicesubcategory_id+' => '',
-	'Class:UserRequest/Attribute:servicesubcategory_name' => 'Service sub category name',
+	'Class:UserRequest/Attribute:servicesubcategory_name' => 'Service subcategory name',
 	'Class:UserRequest/Attribute:servicesubcategory_name+' => '',
 	'Class:UserRequest/Attribute:escalation_flag' => 'Hot Flag',
 	'Class:UserRequest/Attribute:escalation_flag+' => '',

+ 1 - 1
datamodels/2.x/itop-service-mgmt-provider/datamodel.itop-service-mgmt-provider.xml

@@ -890,7 +890,7 @@
         </list>
       </presentation>
     </class>
-    <class id="ServiceFamilly" _delta="define">
+    <class id="ServiceFamily" _delta="define">
       <parent>cmdbAbstractObject</parent>
       <properties>
         <category>bizmodel,searchable</category>

+ 6 - 6
datamodels/2.x/itop-service-mgmt-provider/en.dict.itop-service-mgmt-provider.php

@@ -223,14 +223,14 @@ Dict::Add('EN US', 'English', 'English', array(
 ));
 
 //
-// Class: ServiceFamilly
+// Class: ServiceFamily
 //
 
 Dict::Add('EN US', 'English', 'English', array(
-	'Class:ServiceFamilly' => 'Service Familly',
-	'Class:ServiceFamilly+' => '',
-	'Class:ServiceFamilly/Attribute:name' => 'Name',
-	'Class:ServiceFamilly/Attribute:name+' => '',
+	'Class:ServiceFamily' => 'Service Family',
+	'Class:ServiceFamily+' => '',
+	'Class:ServiceFamily/Attribute:name' => 'Name',
+	'Class:ServiceFamily/Attribute:name+' => '',
 	'Class:ServiceFamily/Attribute:services_list' => 'Services',
 	'Class:ServiceFamily/Attribute:services_list+' => '',
 ));
@@ -307,7 +307,7 @@ Dict::Add('EN US', 'English', 'English', array(
 //
 
 Dict::Add('EN US', 'English', 'English', array(
-	'Class:ServiceSubcategory' => 'Service Sub category',
+	'Class:ServiceSubcategory' => 'Service Subcategory',
 	'Class:ServiceSubcategory+' => '',
 	'Class:ServiceSubcategory/Attribute:name' => 'Name',
 	'Class:ServiceSubcategory/Attribute:name+' => '',

+ 5 - 5
datamodels/2.x/itop-service-mgmt-provider/fr.dict.itop-service-mgmt-provider.php

@@ -167,14 +167,14 @@ Dict::Add('FR FR', 'French', 'Français', array(
 ));
 
 //
-// Class: ServiceFamilly
+// Class: ServiceFamily
 //
 
 Dict::Add('FR FR', 'French', 'Français', array(
-	'Class:ServiceFamilly' => 'Famille de service',
-	'Class:ServiceFamilly+' => '',
-	'Class:ServiceFamilly/Attribute:name' => 'Nom',
-	'Class:ServiceFamilly/Attribute:name+' => '',
+	'Class:ServiceFamily' => 'Famille de service',
+	'Class:ServiceFamily+' => '',
+	'Class:ServiceFamily/Attribute:name' => 'Nom',
+	'Class:ServiceFamily/Attribute:name+' => '',
 	'Class:ServiceFamily/Attribute:services_list' => 'Services',
 	'Class:ServiceFamily/Attribute:services_list+' => '',
 ));

+ 40 - 0
datamodels/2.x/itop-service-mgmt-provider/module.itop-service-mgmt-provider.php

@@ -17,6 +17,7 @@ SetupWebPage::AddModule(
 		),
 		'mandatory' => false,
 		'visible' => true,
+		'installer' => 'ServiceMgmtInstaller',
 
 		// Components
 		//
@@ -51,4 +52,43 @@ SetupWebPage::AddModule(
 	)
 );
 
+if (!class_exists('ServiceMgmtInstaller'))
+{
+	// Module installation handler
+	//
+	class ServiceMgmtInstaller extends ModuleInstallerAPI
+	{
+		public static function BeforeWritingConfig(Config $oConfiguration)
+		{
+			// If you want to override/force some configuration values, do it here
+			return $oConfiguration;
+		}
+
+		/**
+		 * Handler called before creating or upgrading the database schema
+		 * @param $oConfiguration Config The new configuration of the application
+		 * @param $sPreviousVersion string PRevious version number of the module (empty string in case of first install)
+		 * @param $sCurrentVersion string Current version number of the module
+		 */
+		public static function BeforeDatabaseCreation(Config $oConfiguration, $sPreviousVersion, $sCurrentVersion)
+		{
+			if (strlen($sPreviousVersion) > 0)
+			{
+				// If you want to migrate data from one format to another, do it here
+				self::RenameClassInDB('ServiceFamilly', 'ServiceFamily');
+			}
+		}
+	
+		/**
+		 * Handler called after the creation/update of the database schema
+		 * @param $oConfiguration Config The new configuration of the application
+		 * @param $sPreviousVersion string PRevious version number of the module (empty string in case of first install)
+		 * @param $sCurrentVersion string Current version number of the module
+		 */
+		public static function AfterDatabaseCreation(Config $oConfiguration, $sPreviousVersion, $sCurrentVersion)
+		{
+		}
+	}
+}
+
 ?>

+ 2 - 2
datamodels/2.x/itop-service-mgmt/en.dict.itop-service-mgmt.php

@@ -223,7 +223,7 @@ Dict::Add('EN US', 'English', 'English', array(
 //
 
 Dict::Add('EN US', 'English', 'English', array(
-	'Class:ServiceFamily' => 'Service Familly',
+	'Class:ServiceFamily' => 'Service Family',
 	'Class:ServiceFamily+' => '',
 	'Class:ServiceFamily/Attribute:name' => 'Name',
 	'Class:ServiceFamily/Attribute:name+' => '',
@@ -311,7 +311,7 @@ Dict::Add('EN US', 'English', 'English', array(
 //
 
 Dict::Add('EN US', 'English', 'English', array(
-	'Class:ServiceSubcategory' => 'Service Sub category',
+	'Class:ServiceSubcategory' => 'Service Subcategory',
 	'Class:ServiceSubcategory+' => '',
 	'Class:ServiceSubcategory/Attribute:name' => 'Name',
 	'Class:ServiceSubcategory/Attribute:name+' => '',

+ 3 - 3
datamodels/2.x/itop-storage-mgmt/datamodel.itop-storage-mgmt.xml

@@ -766,7 +766,7 @@
       </properties>
       <fields>
         <field id="nasfilesystem_list" xsi:type="AttributeLinkedSet">
-          <linked_class>NasFileSystem</linked_class>
+          <linked_class>NASFileSystem</linked_class>
           <ext_key_to_me>nas_id</ext_key_to_me>
           <edit_mode>in_place</edit_mode>
           <count_min>0</count_min>
@@ -784,7 +784,7 @@
     {
     case "impacts":
       $aRels = array(
-        "nasfilesystem" => array("sQuery"=>"SELECT NasFileSystem WHERE nas_id = :this->id", "bPropagate"=>true, "iDistance"=>10),
+        "nasfilesystem" => array("sQuery"=>"SELECT NASFileSystem WHERE nas_id = :this->id", "bPropagate"=>true, "iDistance"=>10),
 
       );
       return array_merge($aRels, parent::GetRelationQueries($sRelCode));
@@ -1103,7 +1103,7 @@
         </list>
       </presentation>
     </class>
-    <class id="NasFileSystem" _delta="define">
+    <class id="NASFileSystem" _delta="define">
       <parent>cmdbAbstractObject</parent>
       <properties>
         <category>bizmodel,searchable,configmgmt</category>

+ 39 - 0
datamodels/2.x/itop-storage-mgmt/module.itop-storage-mgmt.php

@@ -30,6 +30,7 @@ SetupWebPage::AddModule(
 		),
 		'mandatory' => false,
 		'visible' => true,
+		'installer' => 'StorageMgmtInstaller',
 
 		// Components
 		//
@@ -59,5 +60,43 @@ SetupWebPage::AddModule(
 	)
 );
 
+if (!class_exists('StorageMgmtInstaller'))
+{
+	// Module installation handler
+	//
+	class StorageMgmtInstaller extends ModuleInstallerAPI
+	{
+		public static function BeforeWritingConfig(Config $oConfiguration)
+		{
+			// If you want to override/force some configuration values, do it here
+			return $oConfiguration;
+		}
+
+		/**
+		 * Handler called before creating or upgrading the database schema
+		 * @param $oConfiguration Config The new configuration of the application
+		 * @param $sPreviousVersion string PRevious version number of the module (empty string in case of first install)
+		 * @param $sCurrentVersion string Current version number of the module
+		 */
+		public static function BeforeDatabaseCreation(Config $oConfiguration, $sPreviousVersion, $sCurrentVersion)
+		{
+			if (strlen($sPreviousVersion) > 0)
+			{
+				// If you want to migrate data from one format to another, do it here
+				self::RenameClassInDB('NasFileSystem', 'NASFileSystem');
+			}
+		}
+	
+		/**
+		 * Handler called after the creation/update of the database schema
+		 * @param $oConfiguration Config The new configuration of the application
+		 * @param $sPreviousVersion string PRevious version number of the module (empty string in case of first install)
+		 * @param $sCurrentVersion string Current version number of the module
+		 */
+		public static function AfterDatabaseCreation(Config $oConfiguration, $sPreviousVersion, $sCurrentVersion)
+		{
+		}
+	}
+}
 
 ?>

+ 4 - 4
datamodels/2.x/itop-virtualization-mgmt/data.sample.dbserver.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Set>
-<DBserver alias="DBserver" id="16">
+<DBServer alias="DBServer" id="16">
 <name>MySQL</name>
 <description></description>
 <org_id>2</org_id>
@@ -11,8 +11,8 @@
 <softwarelicence_id>0</softwarelicence_id>
 <path></path>
 <status></status>
-</DBserver>
-<DBserver alias="DBserver" id="18">
+</DBServer>
+<DBServer alias="DBServer" id="18">
 <name>Oracle</name>
 <description></description>
 <org_id>2</org_id>
@@ -23,5 +23,5 @@
 <softwarelicence_id>0</softwarelicence_id>
 <path></path>
 <status></status>
-</DBserver>
+</DBServer>
 </Set>

+ 2 - 2
datamodels/2.x/itop-virtualization-mgmt/data.sample.webserver.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Set>
-<Webserver alias="Webserver" id="22">
+<WebServer alias="WebServer" id="22">
 <name>Apache</name>
 <description></description>
 <org_id>2</org_id>
@@ -11,5 +11,5 @@
 <softwarelicence_id>0</softwarelicence_id>
 <path></path>
 <status></status>
-</Webserver>
+</WebServer>
 </Set>

+ 6 - 6
datamodels/2.x/itop-virtualization-mgmt/datamodel.itop-virtualization-mgmt.xml

@@ -593,7 +593,7 @@
         </field>
         <field id="osfamily_id" xsi:type="AttributeExternalKey">
           <sql>osfamily_id</sql>
-          <target_class>OSfamily</target_class>
+          <target_class>OSFamily</target_class>
           <is_null_allowed>true</is_null_allowed>
           <on_target_delete>DEL_MANUAL</on_target_delete>
         </field>
@@ -602,12 +602,12 @@
           <target_attcode>name</target_attcode>
         </field>
         <field id="osversion_id" xsi:type="AttributeExternalKey">
-          <filter><![CDATA[SELECT OSversion WHERE osfamily_id = :this->osfamily_id]]></filter>
+          <filter><![CDATA[SELECT OSVersion WHERE osfamily_id = :this->osfamily_id]]></filter>
           <dependencies>
             <attribute id="osfamily_id"/>
           </dependencies>
           <sql>osversion_id</sql>
-          <target_class>OSversion</target_class>
+          <target_class>OSVersion</target_class>
           <is_null_allowed>true</is_null_allowed>
           <on_target_delete>DEL_MANUAL</on_target_delete>
         </field>
@@ -616,12 +616,12 @@
           <target_attcode>name</target_attcode>
         </field>
         <field id="oslicence_id" xsi:type="AttributeExternalKey">
-          <filter><![CDATA[SELECT OsLicence WHERE osversion_id = :this->osversion_id]]></filter>
+          <filter><![CDATA[SELECT OSLicence WHERE osversion_id = :this->osversion_id]]></filter>
           <dependencies>
             <attribute id="osversion_id"/>
           </dependencies>
           <sql>oslicence_id</sql>
-          <target_class>OsLicence</target_class>
+          <target_class>OSLicence</target_class>
           <is_null_allowed>true</is_null_allowed>
           <on_target_delete>DEL_MANUAL</on_target_delete>
         </field>
@@ -802,7 +802,7 @@
       </presentation>
     </class>
     <class id="LogicalInterface" _delta="define">
-      <parent>IPinterface</parent>
+      <parent>IPInterface</parent>
       <properties>
         <category>bizmodel,searchable</category>
         <abstract>false</abstract>

+ 18 - 2
setup/applicationinstaller.class.inc.php

@@ -227,6 +227,7 @@ class ApplicationInstaller
 				
 				case 'db-schema':
 				$sMode = $this->oParams->Get('mode');
+				$aSelectedModules = $this->oParams->Get('selected_modules', array());
 				$sTargetEnvironment = $this->oParams->Get('target_env', '');
 				if ($sTargetEnvironment == '')
 				{
@@ -241,7 +242,7 @@ class ApplicationInstaller
 				$sDBPrefix = $aDBParams['prefix'];
 				$bOldAddon = $this->oParams->Get('old_addon', false);
 				
-				self::DoUpdateDBSchema($sMode, $sTargetDir, $sDBServer, $sDBUser, $sDBPwd, $sDBName, $sDBPrefix, $sTargetEnvironment, $bOldAddon);
+				self::DoUpdateDBSchema($sMode, $aSelectedModules, $sTargetDir, $sDBServer, $sDBUser, $sDBPwd, $sDBName, $sDBPrefix, $sTargetEnvironment, $bOldAddon);
 				
 				$aResult = array(
 					'status' => self::OK,
@@ -506,7 +507,7 @@ class ApplicationInstaller
 		}
 	}
 	
-	protected static function DoUpdateDBSchema($sMode, $sModulesDir, $sDBServer, $sDBUser, $sDBPwd, $sDBName, $sDBPrefix, $sTargetEnvironment  = '', $bOldAddon = false)
+	protected static function DoUpdateDBSchema($sMode, $aSelectedModules, $sModulesDir, $sDBServer, $sDBUser, $sDBPwd, $sDBName, $sDBPrefix, $sTargetEnvironment  = '', $bOldAddon = false)
 	{
 		SetupPage::log_info("Update Database Schema for environment '$sTargetEnvironment'.");
 
@@ -531,6 +532,21 @@ class ApplicationInstaller
 		$oProductionEnv = new RunTimeEnvironment($sTargetEnvironment);
 		$oProductionEnv->InitDataModel($oConfig, true);  // load data model only
 
+		// Module specific actions (migrate the data)
+		//
+		$aAvailableModules = $oProductionEnv->AnalyzeInstallation(MetaModel::GetConfig(), APPROOT.$sModulesDir);
+		foreach($aAvailableModules as $sModuleId => $aModule)
+		{
+			if (($sModuleId != ROOT_MODULE) && in_array($sModuleId, $aSelectedModules) &&
+				isset($aAvailableModules[$sModuleId]['installer']) )
+			{
+				$sModuleInstallerClass = $aAvailableModules[$sModuleId]['installer'];
+				SetupPage::log_info("Calling Module Handler: $sModuleInstallerClass::BeforeDatabaseCreation(oConfig, {$aModule['version_db']}, {$aModule['version_code']})");
+				$aCallSpec = array($sModuleInstallerClass, 'BeforeDatabaseCreation');
+				call_user_func_array($aCallSpec, array(MetaModel::GetConfig(), $aModule['version_db'], $aModule['version_code']));								
+			}
+		}
+
 		if(!$oProductionEnv->CreateDatabaseStructure(MetaModel::GetConfig(), $sMode))
 		{
 			throw new Exception("Failed to create/upgrade the database structure for environment '$sTargetEnvironment'");		

+ 114 - 0
setup/moduleinstaller.class.inc.php

@@ -17,6 +17,8 @@
 //   along with iTop. If not, see <http://www.gnu.org/licenses/>
 
 
+require_once(APPROOT.'setup/setuppage.class.inc.php');
+
 /**
  * Class ModuleInstaller
  * Defines the API to implement module specific actions during the setup 
@@ -32,12 +34,124 @@ abstract class ModuleInstallerAPI
 		return $oConfiguration;
 	}
 
+	/**
+	 * Handler called before creating or upgrading the database schema
+	 * @param $oConfiguration Config The new configuration of the application
+	 * @param $sPreviousVersion string Previous version number of the module (empty string in case of first install)
+	 * @param $sCurrentVersion string Current version number of the module
+	 */
 	public static function BeforeDatabaseCreation(Config $oConfiguration, $sPreviousVersion, $sCurrentVersion)
 	{
 	}
 	
+	/**
+	 * Handler called after the creation/update of the database schema
+	 * @param $oConfiguration Config The new configuration of the application
+	 * @param $sPreviousVersion string Previous version number of the module (empty string in case of first install)
+	 * @param $sCurrentVersion string Current version number of the module
+	 */
 	public static function AfterDatabaseCreation(Config $oConfiguration, $sPreviousVersion, $sCurrentVersion)
 	{
 	}
+
+	/**
+	 * Helper to complete the renaming of a class
+	 * The renaming is made in the datamodel definition, but the name has to be changed in the DB as well	 	 
+	 * Must be called after DB update, i.e within an implementation of AfterDatabaseCreation()
+	 * 	 
+	 * @param string $sFrom Original name (already INVALID in the current datamodel)	 	
+	 * @param string $sTo New name (valid in the current datamodel)
+	 * @return void	 	 	
+	 */
+	public static function RenameClassInDB($sFrom, $sTo)
+	{
+		if (!MetaModel::IsStandaloneClass($sTo))
+		{
+			$sRootClass = MetaModel::GetRootClass($sTo);
+			$sTableName = MetaModel::DBGetTable($sRootClass);
+			$sFinalClassCol = MetaModel::DBGetClassField($sRootClass);
+			$sRepair = "UPDATE `$sTableName` SET `$sFinalClassCol` = '$sTo' WHERE `$sFinalClassCol` = BINARY '$sFrom'";
+			CMDBSource::Query($sRepair);
+			$iAffectedRows = CMDBSource::AffectedRows();
+			SetupPage::log_info("Renaming class in DB - final class from '$sFrom' to '$sTo': $iAffectedRows rows affected"); 
+		}
+	}
+
+	/**
+	 * Helper to modify an enum value	
+	 * The change is made in the datamodel definition, but the value has to be changed in the DB as well	 	 
+	 * Must be called BEFORE DB update, i.e within an implementation of BeforeDatabaseCreation()
+	 * 	 
+	 * @param string $sClass A valid class name
+	 * @param string $sAttCode The enum attribute code
+	 * @param string $sFrom Original value (already INVALID in the current datamodel)	 	
+	 * @param string $sTo New value (valid in the current datamodel)
+	 * @return void	 	 	
+	 */
+	public static function RenameEnumValueInDB($sClass, $sAttCode, $sFrom, $sTo)
+	{
+		$sOriginClass = MetaModel::GetAttributeOrigin($sClass, $sAttCode);
+		$sTableName = MetaModel::DBGetTable($sOriginClass);
+
+		$oAttDef = MetaModel::GetAttributeDef($sOriginClass, $sAttCode);
+		if ($oAttDef instanceof AttributeEnum)
+		{
+			$oValDef = $oAttDef->GetValuesDef();
+			if ($oValDef)
+			{
+				$aNewValues = array_keys($oValDef->GetValues(array(), ""));
+				if (in_array($sTo, $aNewValues))
+				{
+					$aAllValues = $aNewValues;
+					$aAllValues[] = $sFrom;
+					if (!in_array($sFrom, $aNewValues))
+					{
+						$sEnumCol = $oAttDef->Get("sql");
+						$sNullSpec = $oAttDef->IsNullAllowed() ? 'NULL' : 'NOT NULL';
+
+						if (strtolower($sTo) == strtolower($sFrom))
+						{
+							SetupPage::log_info("Changing enum in DB - $sClass::$sAttCode from '$sFrom' to '$sTo' (just a change in the case)"); 
+							$sColumnDefinition = "ENUM(".implode(",", CMDBSource::Quote($aNewValues)).") $sNullSpec";
+							$sRepair = "ALTER TABLE `$sTableName` MODIFY `$sEnumCol` $sColumnDefinition";
+							CMDBSource::Query($sRepair);
+						}
+						else
+						{
+							// 1st - Allow both values in the column definition
+							//
+							SetupPage::log_info("Changing enum in DB - $sClass::$sAttCode from '$sFrom' to '$sTo'"); 
+							$sColumnDefinition = "ENUM(".implode(",", CMDBSource::Quote($aAllValues)).") $sNullSpec";
+							$sRepair = "ALTER TABLE `$sTableName` MODIFY `$sEnumCol` $sColumnDefinition";
+							CMDBSource::Query($sRepair);
+			
+							// 2nd - Change the old value into the new value
+							//
+							$sRepair = "UPDATE `$sTableName` SET `$sEnumCol` = '$sTo' WHERE `$sEnumCol` = BINARY '$sFrom'";
+							CMDBSource::Query($sRepair);
+							$iAffectedRows = CMDBSource::AffectedRows();
+							SetupPage::log_info("Changing enum in DB - $iAffectedRows rows updated"); 
+			
+							// 3rd - Remove the useless value from the column definition
+							//
+							$sColumnDefinition = "ENUM(".implode(",", CMDBSource::Quote($aNewValues)).") $sNullSpec";
+							$sRepair = "ALTER TABLE `$sTableName` MODIFY `$sEnumCol` $sColumnDefinition";
+							CMDBSource::Query($sRepair);
+							SetupPage::log_info("Changing enum in DB - removed useless value '$sFrom'");
+						}
+					}
+					else
+					{
+						SetupPage::log_warning("Changing enum in DB - $sClass::$sAttCode - '$sFrom' is still a valid value (".implode(', ', $aNewValues).")"); 
+					}
+				}
+				else
+				{
+					SetupPage::log_warning("Changing enum in DB - $sClass::$sAttCode - '$sTo' is not a known value (".implode(', ', $aNewValues).")"); 
+				}
+			}
+		}
+	}
+
 }
 ?>