Selaa lähdekoodia

Made some progress on config management

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@561 a333f486-631f-4898-b8df-5754b55c2be0
romainq 15 vuotta sitten
vanhempi
commit
9d4769c1a4

+ 3 - 1
core/metamodel.class.php

@@ -3028,7 +3028,9 @@ abstract class MetaModel
 	public static function Startup($sConfigFile, $bAllowMissingDB = false)
 	{
 		self::LoadConfig($sConfigFile);
-		if (self::DBExists())
+		//if (self::DBExists())
+// !!!! #@# 
+		if (true)
 		{
 			CMDBSource::SelectDB(self::$m_sDBName);
 

+ 29 - 8
modules/itop-change-mgmt-1.0.0/model.itop-change-mgmt.php

@@ -71,6 +71,7 @@ abstract class Change extends Ticket
 		MetaModel::Init_AddAttribute(new AttributeExternalKey("manager_id", array("targetclass"=>"Person", "jointype"=>null, "allowed_values"=>null, "sql"=>"manager_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeExternalField("manager_email", array("allowed_values"=>null, "extkey_attcode"=>"manager_id", "target_attcode"=>"email", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeBoolean("outage", array("allowed_values"=>null, "sql"=>"outage", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
+//		MetaModel::Init_AddAttribute(new AttributeEnum("outage", array("allowed_values"=>new ValueSetEnum('yes,no'), "sql"=>"outage", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeText("change_request", array("allowed_values"=>null, "sql"=>"change_request", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeText("change_log", array("allowed_values"=>null, "sql"=>"change_log", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeText("fallback", array("allowed_values"=>null, "sql"=>"fallback", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
@@ -86,7 +87,13 @@ abstract class Change extends Ticket
 			array(
 				"attribute_inherit" => null,
 				"attribute_list" => array(
+					'start_date' => OPT_ATT_HIDDEN,
+					'ticket_log' => OPT_ATT_HIDDEN,
+					'impact' => OPT_ATT_HIDDEN,
+					'outage' => OPT_ATT_HIDDEN,
+					'fallback' => OPT_ATT_HIDDEN,
 					'ref' => OPT_ATT_READONLY,
+					'requestor_id' => OPT_ATT_MANDATORY,
 					'title' => OPT_ATT_MANDATORY,
 					'reason' => OPT_ATT_MANDATORY,
 					'workgroup_id' => OPT_ATT_HIDDEN,
@@ -109,7 +116,9 @@ abstract class Change extends Ticket
 				"attribute_list" => array(
 					'title' => OPT_ATT_READONLY,
 					'reason' => OPT_ATT_READONLY,
-					'workgroup_id' => OPT_ATT_MUSTCHANGE,
+					'workgroup_id' => OPT_ATT_MANDATORY,
+					'supervisor_group_id' => OPT_ATT_MANDATORY,
+					'manager_group_id' => OPT_ATT_MANDATORY,
 					'change_request' => OPT_ATT_READONLY,
 				),
 			)
@@ -129,9 +138,7 @@ abstract class Change extends Ticket
 				"attribute_list" => array(
 					'workgroup_id' => OPT_ATT_MANDATORY,
 					'agent_id' => OPT_ATT_MUSTCHANGE,
-					'supervisor_group_id' => OPT_ATT_MUSTCHANGE,
 					'supervisor_id' => OPT_ATT_MUSTCHANGE,
-					'manager_group_id' => OPT_ATT_MUSTCHANGE,
 					'manager_id' => OPT_ATT_MUSTCHANGE,
 				),
 			)
@@ -141,6 +148,7 @@ abstract class Change extends Ticket
 			array(
 				"attribute_inherit" => 'assigned',
 				"attribute_list" => array(
+					'ticket_log' => OPT_ATT_MANDATORY,
 					'requestor_id' => OPT_ATT_READONLY,
 					'customer_id' => OPT_ATT_READONLY,
 					'workgroup_id' => OPT_ATT_READONLY,
@@ -208,8 +216,9 @@ abstract class Change extends Ticket
 		MetaModel::Init_DefineState(
 			"closed",
 			array(
-				"attribute_inherit" => 'implemented',
+				"attribute_inherit" => 'monitored',
 				"attribute_list" => array(
+					'ticket_log' => OPT_ATT_READONLY,
 					'close_date' => OPT_ATT_READONLY,
 				),
 			)
@@ -319,11 +328,15 @@ abstract class ApprovedChange extends Change
 		MetaModel::Init_OverloadStateAttribute('new', 'approval_date', OPT_ATT_HIDDEN);
 		MetaModel::Init_OverloadStateAttribute('new', 'approval_comment', OPT_ATT_HIDDEN);
 
-		MetaModel::Init_OverloadStateAttribute('approved', 'approval_date', OPT_ATT_MUSTCHANGE);
-		MetaModel::Init_OverloadStateAttribute('approved', 'approval_comment', OPT_ATT_MUSTCHANGE);
+		MetaModel::Init_OverloadStateAttribute('approved', 'approval_date', OPT_ATT_MANDATORY);
+		MetaModel::Init_OverloadStateAttribute('approved', 'approval_comment', OPT_ATT_MANDATORY);
 
 		MetaModel::Init_OverloadStateAttribute('implemented', 'approval_date', OPT_ATT_READONLY);
 		MetaModel::Init_OverloadStateAttribute('implemented', 'approval_comment', OPT_ATT_READONLY);
+		MetaModel::Init_OverloadStateAttribute('monitored', 'approval_date', OPT_ATT_READONLY);
+		MetaModel::Init_OverloadStateAttribute('monitored', 'approval_comment', OPT_ATT_READONLY);
+		MetaModel::Init_OverloadStateAttribute('closed', 'approval_date', OPT_ATT_READONLY);
+		MetaModel::Init_OverloadStateAttribute('closed', 'approval_comment', OPT_ATT_READONLY);
 	}
 }
 
@@ -358,11 +371,19 @@ class NormalChange extends ApprovedChange
 		MetaModel::Init_OverloadStateAttribute('new', 'acceptance_date', OPT_ATT_HIDDEN);
 		MetaModel::Init_OverloadStateAttribute('new', 'acceptance_comment', OPT_ATT_HIDDEN);
 
-		MetaModel::Init_OverloadStateAttribute('validated', 'acceptance_date', OPT_ATT_MUSTCHANGE);
-		MetaModel::Init_OverloadStateAttribute('validated', 'acceptance_comment', OPT_ATT_MUSTCHANGE);
+		MetaModel::Init_OverloadStateAttribute('validated', 'acceptance_date', OPT_ATT_MANDATORY);
+		MetaModel::Init_OverloadStateAttribute('validated', 'acceptance_comment', OPT_ATT_MANDATORY);
 
 		MetaModel::Init_OverloadStateAttribute('plannedschedule', 'acceptance_date', OPT_ATT_READONLY);
 		MetaModel::Init_OverloadStateAttribute('plannedschedule', 'acceptance_comment', OPT_ATT_READONLY);
+		MetaModel::Init_OverloadStateAttribute('approved', 'acceptance_date', OPT_ATT_READONLY);
+		MetaModel::Init_OverloadStateAttribute('approved', 'acceptance_comment', OPT_ATT_READONLY);
+		MetaModel::Init_OverloadStateAttribute('implemented', 'acceptance_date', OPT_ATT_READONLY);
+		MetaModel::Init_OverloadStateAttribute('implemented', 'acceptance_comment', OPT_ATT_READONLY);
+		MetaModel::Init_OverloadStateAttribute('monitored', 'acceptance_date', OPT_ATT_READONLY);
+		MetaModel::Init_OverloadStateAttribute('monitored', 'acceptance_comment', OPT_ATT_READONLY);
+		MetaModel::Init_OverloadStateAttribute('closed', 'acceptance_date', OPT_ATT_READONLY);
+		MetaModel::Init_OverloadStateAttribute('closed', 'acceptance_comment', OPT_ATT_READONLY);
 
 		MetaModel::Init_DefineTransition("new", "ev_validate", array("target_state"=>"validated", "actions"=>array('SetLastUpDate'), "user_restriction"=>null));
 		MetaModel::Init_DefineTransition("new", "ev_reject", array("target_state"=>"rejected", "actions"=>array('SetLastUpDate'), "user_restriction"=>null));

+ 7 - 9
modules/itop-config-mgmt-1.0.0/data.sample.application.xml

@@ -11,39 +11,37 @@
 <ApplicationInstance alias="ApplicationInstance" id="5">
 <name>Apache Web Server</name>
 <status>production</status>
-<owner_id>2</owner_id>
+<org_id>2</org_id>
 <importance>medium</importance>
 <device_id>4</device_id>
 <licence_id>0</licence_id>
-<application_id>2</application_id>
+<software_id>2</software_id>
 <version>2.2</version>
 <description>Apache 2.2 with PHP 5.3.4</description>
 </ApplicationInstance>
 <ApplicationInstance alias="ApplicationInstance" id="2">
 <name>MySQL 5 prod</name>
 <status>production</status>
-<owner_id>2</owner_id>
+<org_id>2</org_id>
 <importance>medium</importance>
 <device_id>1</device_id>
 <licence_id>0</licence_id>
-<application_id>1</application_id>
+<software_id>1</software_id>
 <version>5.0.27</version>
 <description></description>
 </ApplicationInstance>
 <DatabaseInstance alias="DatabaseInstance" id="3">
 <name>itop_beta</name>
 <status>implementation</status>
-<owner_id>2</owner_id>
+<org_id>2</org_id>
 <importance>medium</importance>
 <db_server_instance_id>2</db_server_instance_id>
-<admin_login>root</admin_login>
-<admin_password></admin_password>
 <description>iTop beta test instance</description>
 </DatabaseInstance>
 <ApplicationSolution alias="ApplicationSolution" id="6">
 <name>iTop demo</name>
 <status>production</status>
-<owner_id>2</owner_id>
+<org_id>2</org_id>
 <importance>high</importance>
 <description>Demo instance of iTop</description>
 </ApplicationSolution>
@@ -57,4 +55,4 @@
 <ci_id>3</ci_id>
 <utility>itop beta instance</utility>
 </lnkSolutionToCI>
-</Set>
+</Set>

+ 2 - 2
modules/itop-config-mgmt-1.0.0/data.sample.business.xml

@@ -3,7 +3,7 @@
 <BusinessProcess alias="BusinessProcess" id="7">
 <name>iTop demonstration</name>
 <status>production</status>
-<owner_id>2</owner_id>
+<org_id>2</org_id>
 <importance>medium</importance>
 <description>Demonstrating iTop on line</description>
 </BusinessProcess>
@@ -22,4 +22,4 @@
 <contact_id>4</contact_id>
 <role>Support Specialist</role>
 </lnkCIToContact>
-</Set>
+</Set>

+ 3 - 3
modules/itop-config-mgmt-1.0.0/data.sample.server.xml

@@ -3,7 +3,7 @@
 <Server alias="Server" id="1">
 <name>dbserver1.demo.net</name>
 <status>implementation</status>
-<owner_id>2</owner_id>
+<org_id>2</org_id>
 <importance>medium</importance>
 <brand>Hewlett-Packard</brand>
 <model>Proliant DL380 G5</model>
@@ -23,7 +23,7 @@
 <Server alias="Server" id="4">
 <name>itop.demo.net</name>
 <status>production</status>
-<owner_id>2</owner_id>
+<org_id>2</org_id>
 <importance>high</importance>
 <brand>Hewlet-Packard</brand>
 <model>Proliant DL380 G5</model>
@@ -40,4 +40,4 @@
 <os_family>Linux</os_family>
 <os_version>Debian 5 (Lenny)</os_version>
 </Server>
-</Set>
+</Set>

+ 84 - 52
modules/itop-config-mgmt-1.0.0/en.dict.itop-config-mgmt.php

@@ -123,6 +123,10 @@ Dict::Add('EN US', 'English', 'English', array(
 	'Class:Location/Attribute:parent_id+' => '',
 	'Class:Location/Attribute:parent_name' => 'Parent name',
 	'Class:Location/Attribute:parent_name+' => '',
+	'Class:Location/Attribute:contact_list' => 'Contacts',
+	'Class:Location/Attribute:contact_list+' => 'Contacts located on this site',
+	'Class:Location/Attribute:infra_list' => 'Infrastructure',
+	'Class:Location/Attribute:infra_list+' => 'CIs located on this site',
 ));
 
 //
@@ -199,10 +203,12 @@ Dict::Add('EN US', 'English', 'English', array(
 	'Class:lnkTeamToContact/Attribute:contact_id+' => '',
 	'Class:lnkTeamToContact/Attribute:contact_location_id' => 'Location',
 	'Class:lnkTeamToContact/Attribute:contact_location_id+' => '',
-	'Class:lnkTeamToContact/Attribute:contact_email' => 'eMail',
+	'Class:lnkTeamToContact/Attribute:contact_email' => 'Email',
 	'Class:lnkTeamToContact/Attribute:contact_email+' => '',
 	'Class:lnkTeamToContact/Attribute:contact_phone' => 'Phone',
 	'Class:lnkTeamToContact/Attribute:contact_phone+' => '',
+	'Class:lnkTeamToContact/Attribute:role' => 'Role',
+	'Class:lnkTeamToContact/Attribute:role+' => '',
 ));
 
 //
@@ -297,10 +303,14 @@ Dict::Add('EN US', 'English', 'English', array(
 	'Class:Licence/Attribute:start+' => '',
 	'Class:Licence/Attribute:end' => 'End date',
 	'Class:Licence/Attribute:end+' => '',
-	'Class:Licence/Attribute:key' => 'Key',
-	'Class:Licence/Attribute:key+' => '',
+	'Class:Licence/Attribute:licence_key' => 'Key',
+	'Class:Licence/Attribute:licence_key+' => '',
 	'Class:Licence/Attribute:scope' => 'Scope',
 	'Class:Licence/Attribute:scope+' => '',
+	'Class:Licence/Attribute:usage_limit' => 'Usage limit',
+	'Class:Licence/Attribute:usage_limit+' => '',
+	'Class:Licence/Attribute:usage_list' => 'Usage',
+	'Class:Licence/Attribute:usage_list+' => 'Application instances using this licence',
 ));
 
 //
@@ -310,8 +320,10 @@ Dict::Add('EN US', 'English', 'English', array(
 Dict::Add('EN US', 'English', 'English', array(
 	'Class:Subnet' => 'Subnet',
 	'Class:Subnet+' => '',
-	'Class:Subnet/Attribute:name' => 'Name',
-	'Class:Subnet/Attribute:name+' => '',
+	//'Class:Subnet/Attribute:name' => 'Name',
+	//'Class:Subnet/Attribute:name+' => '',
+	'Class:Subnet/Attribute:org_id' => 'Owner organization',
+	'Class:Subnet/Attribute:org_id+' => '',
 	'Class:Subnet/Attribute:description' => 'Description',
 	'Class:Subnet/Attribute:description+' => '',
 	'Class:Subnet/Attribute:ip' => 'IP',
@@ -329,14 +341,18 @@ Dict::Add('EN US', 'English', 'English', array(
 	'Class:Patch+' => '',
 	'Class:Patch/Attribute:name' => 'Name',
 	'Class:Patch/Attribute:name+' => '',
+	'Class:Patch/Attribute:description' => 'Description',
+	'Class:Patch/Attribute:description+' => '',
 	'Class:Patch/Attribute:target_sw' => 'Application scope',
 	'Class:Patch/Attribute:target_sw+' => 'Target software (OS or application)',
 	'Class:Patch/Attribute:version' => 'Version',
 	'Class:Patch/Attribute:version+' => '',
 	'Class:Patch/Attribute:type' => 'Type',
 	'Class:Patch/Attribute:type+' => '',
-	'Class:Patch/Attribute:type/Value:fix' => 'Fix',
-	'Class:Patch/Attribute:type/Value:fix+' => '',
+	'Class:Patch/Attribute:type/Value:application' => 'Application',
+	'Class:Patch/Attribute:type/Value:application+' => '',
+	'Class:Patch/Attribute:type/Value:os' => 'OS',
+	'Class:Patch/Attribute:type/Value:os+' => '',
 	'Class:Patch/Attribute:type/Value:security' => 'Security',
 	'Class:Patch/Attribute:type/Value:security+' => '',
 	'Class:Patch/Attribute:type/Value:servicepack' => 'Service Pack',
@@ -383,7 +399,7 @@ Dict::Add('EN US', 'English', 'English', array(
 //
 
 Dict::Add('EN US', 'English', 'English', array(
-	'Class:lnkPatchToCI' => 'lnkPatchToCI',
+	'Class:lnkPatchToCI' => 'Patch usage',
 	'Class:lnkPatchToCI+' => '',
 	'Class:lnkPatchToCI/Attribute:patch_id' => 'Patch',
 	'Class:lnkPatchToCI/Attribute:patch_id+' => '',
@@ -414,11 +430,11 @@ Dict::Add('EN US', 'English', 'English', array(
 	'Class:FunctionalCI/Attribute:status/Value:obsolete+' => '',
 	'Class:FunctionalCI/Attribute:status/Value:production' => 'Production',
 	'Class:FunctionalCI/Attribute:status/Value:production+' => '',
-	'Class:FunctionalCI/Attribute:owner_id' => 'Owner organization',
-	'Class:FunctionalCI/Attribute:owner_id+' => '',
+	'Class:FunctionalCI/Attribute:org_id' => 'Owner organization',
+	'Class:FunctionalCI/Attribute:org_id+' => '',
 	'Class:FunctionalCI/Attribute:owner_name' => 'Owner organization',
 	'Class:FunctionalCI/Attribute:owner_name+' => '',
-	'Class:FunctionalCI/Attribute:importance' => 'Importance',
+	'Class:FunctionalCI/Attribute:importance' => 'Business criticity',
 	'Class:FunctionalCI/Attribute:importance+' => '',
 	'Class:FunctionalCI/Attribute:importance/Value:high' => 'High',
 	'Class:FunctionalCI/Attribute:importance/Value:high+' => '',
@@ -430,35 +446,57 @@ Dict::Add('EN US', 'English', 'English', array(
 	'Class:FunctionalCI/Attribute:contact_list+' => 'Contacts for this CI',
 	'Class:FunctionalCI/Attribute:document_list' => 'Documents',
 	'Class:FunctionalCI/Attribute:document_list+' => 'Documentation for this CI',
-	'Class:FunctionalCI/Attribute:solution_list' => 'Solutions',
-	'Class:FunctionalCI/Attribute:solution_list+' => 'Solutions using this CI',
+	'Class:FunctionalCI/Attribute:solution_list' => 'Application solutions',
+	'Class:FunctionalCI/Attribute:solution_list+' => 'Application solutions using this CI',
+	'Class:FunctionalCI/Attribute:contract_list' => 'Contracts',
+	'Class:FunctionalCI/Attribute:contract_list+' => 'Contracts supporting this CI',
+	'Class:FunctionalCI/Attribute:ticket_list' => 'Tickets',
+	'Class:FunctionalCI/Attribute:ticket_list+' => 'Tickets related to the CI',
 	'Class:FunctionalCI/Attribute:finalclass' => 'finalclass',
 	'Class:FunctionalCI/Attribute:finalclass+' => '',
 ));
 
 //
+// Class: SoftwareInstance
+//
+
+Dict::Add('EN US', 'English', 'English', array(
+	'Class:SoftwareInstance' => 'Software Instance',
+	'Class:SoftwareInstance+' => '',
+	'Class:SoftwareInstance/Attribute:device_id' => 'Device',
+	'Class:SoftwareInstance/Attribute:device_id+' => '',
+	'Class:SoftwareInstance/Attribute:device_name' => 'Device',
+	'Class:SoftwareInstance/Attribute:device_name+' => '',
+	'Class:SoftwareInstance/Attribute:licence_id' => 'Licence',
+	'Class:SoftwareInstance/Attribute:licence_id+' => '',
+	'Class:SoftwareInstance/Attribute:licence_name' => 'Licence',
+	'Class:SoftwareInstance/Attribute:licence_name+' => '',
+	'Class:SoftwareInstance/Attribute:software_id' => 'Software',
+	'Class:SoftwareInstance/Attribute:software_id+' => '',
+	'Class:SoftwareInstance/Attribute:software_name' => 'Software',
+	'Class:SoftwareInstance/Attribute:software_name+' => '',
+	'Class:SoftwareInstance/Attribute:version' => 'Version',
+	'Class:SoftwareInstance/Attribute:version+' => '',
+	'Class:SoftwareInstance/Attribute:description' => 'Description',
+	'Class:SoftwareInstance/Attribute:description+' => '',
+));
+
+//
 // Class: ApplicationInstance
 //
 
 Dict::Add('EN US', 'English', 'English', array(
-	'Class:ApplicationInstance' => 'Application Instance',
+	'Class:ApplicationInstance' => 'Application instance',
 	'Class:ApplicationInstance+' => '',
-	'Class:ApplicationInstance/Attribute:device_id' => 'Device',
-	'Class:ApplicationInstance/Attribute:device_id+' => '',
-	'Class:ApplicationInstance/Attribute:device_name' => 'Device',
-	'Class:ApplicationInstance/Attribute:device_name+' => '',
-	'Class:ApplicationInstance/Attribute:licence_id' => 'Licence',
-	'Class:ApplicationInstance/Attribute:licence_id+' => '',
-	'Class:ApplicationInstance/Attribute:licence_name' => 'Licence',
-	'Class:ApplicationInstance/Attribute:licence_name+' => '',
-	'Class:ApplicationInstance/Attribute:application_id' => 'Application',
-	'Class:ApplicationInstance/Attribute:application_id+' => '',
-	'Class:ApplicationInstance/Attribute:application_name' => 'Application',
-	'Class:ApplicationInstance/Attribute:application_name+' => '',
-	'Class:ApplicationInstance/Attribute:version' => 'Version',
-	'Class:ApplicationInstance/Attribute:version+' => '',
-	'Class:ApplicationInstance/Attribute:description' => 'Description',
-	'Class:ApplicationInstance/Attribute:description+' => '',
+));
+
+//
+// Class: DBServerInstance
+//
+
+Dict::Add('EN US', 'English', 'English', array(
+	'Class:DBServerInstance' => 'DB Server instance',
+	'Class:DBServerInstance+' => '',
 ));
 
 //
@@ -472,12 +510,6 @@ Dict::Add('EN US', 'English', 'English', array(
 	'Class:DatabaseInstance/Attribute:db_server_instance_id+' => '',
 	'Class:DatabaseInstance/Attribute:db_server_instance_version' => 'Database version',
 	'Class:DatabaseInstance/Attribute:db_server_instance_version+' => '',
-	'Class:DatabaseInstance/Attribute:application_name' => 'Database software',
-	'Class:DatabaseInstance/Attribute:application_name+' => '',
-	'Class:DatabaseInstance/Attribute:admin_login' => 'Admin login',
-	'Class:DatabaseInstance/Attribute:admin_login+' => '',
-	'Class:DatabaseInstance/Attribute:admin_password' => 'Admin password',
-	'Class:DatabaseInstance/Attribute:admin_password+' => '',
 	'Class:DatabaseInstance/Attribute:description' => 'Description',
 	'Class:DatabaseInstance/Attribute:description+' => '',
 ));
@@ -493,7 +525,7 @@ Dict::Add('EN US', 'English', 'English', array(
 	'Class:ApplicationSolution/Attribute:description+' => '',
 	'Class:ApplicationSolution/Attribute:ci_list' => 'CIs',
 	'Class:ApplicationSolution/Attribute:ci_list+' => 'CIs composing the solution',
-	'Class:ApplicationSolution/Attribute:process_list' => 'Processes',
+	'Class:ApplicationSolution/Attribute:process_list' => 'Business processes',
 	'Class:ApplicationSolution/Attribute:process_list+' => 'Business processes relying on the solution',
 ));
 
@@ -504,8 +536,8 @@ Dict::Add('EN US', 'English', 'English', array(
 Dict::Add('EN US', 'English', 'English', array(
 	'Class:BusinessProcess' => 'Business Process',
 	'Class:BusinessProcess+' => '',
-	'Class:BusinessProcess/Attribute:solution_list' => 'Solutions',
-	'Class:BusinessProcess/Attribute:solution_list+' => 'Solutions the process is relying on',
+	'Class:BusinessProcess/Attribute:solution_list' => 'Application solutions',
+	'Class:BusinessProcess/Attribute:solution_list+' => 'Application solutions the process is relying on',
 	'Class:BusinessProcess/Attribute:description' => 'Description',
 	'Class:BusinessProcess/Attribute:description+' => '',
 ));
@@ -591,6 +623,8 @@ Dict::Add('EN US', 'English', 'English', array(
 Dict::Add('EN US', 'English', 'English', array(
 	'Class:Device' => 'Device',
 	'Class:Device+' => '',
+	'Class:Device/Attribute:nwinterface_list' => 'Network interfaces',
+	'Class:Device/Attribute:nwinterface_list+' => '',
 ));
 
 //
@@ -743,7 +777,7 @@ Dict::Add('EN US', 'English', 'English', array(
 //
 
 Dict::Add('EN US', 'English', 'English', array(
-	'Class:lnkCIToDoc' => 'lnkCItoDoc',
+	'Class:lnkCIToDoc' => 'Doc/CI',
 	'Class:lnkCIToDoc+' => '',
 	'Class:lnkCIToDoc/Attribute:ci_id' => 'CI',
 	'Class:lnkCIToDoc/Attribute:ci_id+' => '',
@@ -766,7 +800,7 @@ Dict::Add('EN US', 'English', 'English', array(
 //
 
 Dict::Add('EN US', 'English', 'English', array(
-	'Class:lnkCIToContact' => 'lnkCIToContact',
+	'Class:lnkCIToContact' => 'CI/Contact',
 	'Class:lnkCIToContact+' => '',
 	'Class:lnkCIToContact/Attribute:ci_id' => 'CI',
 	'Class:lnkCIToContact/Attribute:ci_id+' => '',
@@ -789,11 +823,11 @@ Dict::Add('EN US', 'English', 'English', array(
 //
 
 Dict::Add('EN US', 'English', 'English', array(
-	'Class:lnkSolutionToCI' => 'lnkSolutionToCI',
+	'Class:lnkSolutionToCI' => 'CI/Solution',
 	'Class:lnkSolutionToCI+' => '',
-	'Class:lnkSolutionToCI/Attribute:solution_id' => 'Solution',
+	'Class:lnkSolutionToCI/Attribute:solution_id' => 'Application solution',
 	'Class:lnkSolutionToCI/Attribute:solution_id+' => '',
-	'Class:lnkSolutionToCI/Attribute:solution_name' => 'Solution',
+	'Class:lnkSolutionToCI/Attribute:solution_name' => 'Application solution',
 	'Class:lnkSolutionToCI/Attribute:solution_name+' => '',
 	'Class:lnkSolutionToCI/Attribute:ci_id' => 'CI',
 	'Class:lnkSolutionToCI/Attribute:ci_id+' => '',
@@ -810,11 +844,11 @@ Dict::Add('EN US', 'English', 'English', array(
 //
 
 Dict::Add('EN US', 'English', 'English', array(
-	'Class:lnkProcessToSolution' => 'lnkProcessToSolution',
+	'Class:lnkProcessToSolution' => 'Business process/Solution',
 	'Class:lnkProcessToSolution+' => '',
-	'Class:lnkProcessToSolution/Attribute:solution_id' => 'Solution',
+	'Class:lnkProcessToSolution/Attribute:solution_id' => 'Application solution',
 	'Class:lnkProcessToSolution/Attribute:solution_id+' => '',
-	'Class:lnkProcessToSolution/Attribute:solution_name' => 'Solution',
+	'Class:lnkProcessToSolution/Attribute:solution_name' => 'Application solution',
 	'Class:lnkProcessToSolution/Attribute:solution_name+' => '',
 	'Class:lnkProcessToSolution/Attribute:process_id' => 'Process',
 	'Class:lnkProcessToSolution/Attribute:process_id+' => '',
@@ -876,16 +910,14 @@ Dict::Add('EN US', 'English', 'English', array(
 'Menu:BusinessProcess+' => 'All Business Processes',
 'Menu:ApplicationSolution' => 'Application Solutions',
 'Menu:ApplicationSolution+' => 'All Application Solutions',
-'Menu:ConfigManagementSoftware' => 'Software',
+'Menu:ConfigManagementSoftware' => 'Application Management',
 'Menu:Licence' => 'Licences',
 'Menu:Licence+' => 'All Licences',
 'Menu:Patch' => 'Patches',
-'Menu:Patch+' => 'ALl Patches',
+'Menu:Patch+' => 'All Patches',
 'Menu:ApplicationInstance' => 'Installed Applications',
 'Menu:ApplicationInstance+' => 'All Installed Applications',
-'Menu:DatabaseInstance' => 'Database Instances',
-'Menu:DatabaseInstance+' => 'All Database Instances',
-'Menu:ConfigManagementHardware' => 'Hardware',
+'Menu:ConfigManagementHardware' => 'Infrastructure Management',
 'Menu:Subnet' => 'Subnets',
 'Menu:Subnet+' => 'All Subnets',
 'Menu:NetworkDevice' => 'Network Devices',

+ 226 - 119
modules/itop-config-mgmt-1.0.0/model.itop-config-mgmt.php

@@ -91,7 +91,10 @@ class Location extends cmdbAbstractObject
 		MetaModel::Init_AddAttribute(new AttributeExternalKey("parent_id", array("targetclass"=>"Location", "jointype"=>null, "allowed_values"=>null, "sql"=>"parent_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeExternalField("parent_name", array("allowed_values"=>null, "extkey_attcode"=>"parent_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
 
-		MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'address', 'postal_code', 'city', 'country', 'parent_id'));
+		MetaModel::Init_AddAttribute(new AttributeLinkedSet("contact_list", array("linked_class"=>"Contact", "ext_key_to_me"=>"location_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
+		MetaModel::Init_AddAttribute(new AttributeLinkedSet("infra_list", array("linked_class"=>"InfrastructureCI", "ext_key_to_me"=>"location_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
+
+		MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'address', 'postal_code', 'city', 'country', 'parent_id', 'contact_list', 'infra_list'));
 		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'country'));
 		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'city', 'country'));
 		MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'city', 'country'));
@@ -162,7 +165,7 @@ class Person extends Contact
 		MetaModel::Init_SetZListItems('details', array('first_name', 'name', 'org_id', 'status', 'location_id', 'email', 'phone', 'employee_id', 'contract_list', 'ticket_list', 'ci_list'));
 		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'email', 'phone', 'location_id', 'first_name', 'employee_id'));
 		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'email', 'phone', 'location_id', 'first_name', 'employee_id'));
-		MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'email', 'phone', 'location_id', 'employee_id'));
+		MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'email', 'phone', 'location_id'));
 	}
 	
 	public function GetName()
@@ -210,7 +213,7 @@ class lnkTeamToContact extends cmdbAbstractObject
 			"name_attcode" => "team_id",
 			"state_attcode" => "",
 			"reconc_keys" => array("name"),
-			"db_table" => "lnk",
+			"db_table" => "lnkteamtocontact",
 			"db_key_field" => "id",
 			"db_finalclass_field" => "",
 			"display_template" => "",
@@ -226,11 +229,12 @@ class lnkTeamToContact extends cmdbAbstractObject
 		MetaModel::Init_AddAttribute(new AttributeExternalField("contact_location_name", array("allowed_values"=>null, "extkey_attcode"=>"contact_id", "target_attcode"=>"location_name", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeExternalField("contact_email", array("allowed_values"=>null, "extkey_attcode"=>"contact_id", "target_attcode"=>"email", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeExternalField("contact_phone", array("allowed_values"=>null, "extkey_attcode"=>"contact_id", "target_attcode"=>"phone", "is_null_allowed"=>true, "depends_on"=>array())));
+		MetaModel::Init_AddAttribute(new AttributeString("role", array("allowed_values"=>null, "sql"=>"role", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
 
-		MetaModel::Init_SetZListItems('details', array('team_id', 'contact_id'));
-		MetaModel::Init_SetZListItems('advanced_search', array('team_id', 'contact_id'));
-		MetaModel::Init_SetZListItems('standard_search', array('team_id', 'contact_id'));
-		MetaModel::Init_SetZListItems('list', array('team_id', 'contact_id', 'contact_location_id', 'contact_email', 'contact_phone'));
+		MetaModel::Init_SetZListItems('details', array('team_id', 'contact_id', 'role'));
+		MetaModel::Init_SetZListItems('advanced_search', array('team_id', 'contact_id', 'role'));
+		MetaModel::Init_SetZListItems('standard_search', array('team_id', 'contact_id', 'role'));
+		MetaModel::Init_SetZListItems('list', array('team_id', 'contact_id', 'contact_location_id', 'contact_email', 'contact_phone', 'role'));
 	}
 }
 abstract class Document extends cmdbAbstractObject
@@ -376,7 +380,7 @@ class Licence extends cmdbAbstractObject
 		(
 			"category" => "bizmodel,searchable,configmgmt",
 			"key_type" => "autoincrement",
-			"name_attcode" => "provider",
+			"name_attcode" => "name",
 			"state_attcode" => "",
 			"reconc_keys" => array("name"),
 			"db_table" => "licence",
@@ -392,13 +396,15 @@ class Licence extends cmdbAbstractObject
 		MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values"=>null, "sql"=>"name", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeDate("start", array("allowed_values"=>null, "sql"=>"start", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeDate("end", array("allowed_values"=>null, "sql"=>"end", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
-		MetaModel::Init_AddAttribute(new AttributeString("key", array("allowed_values"=>null, "sql"=>"key", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
+		MetaModel::Init_AddAttribute(new AttributeString("licence_key", array("allowed_values"=>null, "sql"=>"licence_key", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeText("scope", array("allowed_values"=>null, "sql"=>"scope", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
+		MetaModel::Init_AddAttribute(new AttributeInteger("usage_limit", array("allowed_values"=>null, "sql"=>"usage_limit", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
+		MetaModel::Init_AddAttribute(new AttributeLinkedSet("usage_list", array("linked_class"=>"SoftwareInstance", "ext_key_to_me"=>"licence_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
 
-		MetaModel::Init_SetZListItems('details', array('provider', 'product', 'name', 'start', 'end', 'key', 'scope'));
-		MetaModel::Init_SetZListItems('advanced_search', array('provider', 'product', 'name', 'start', 'end', 'key', 'scope'));
-		MetaModel::Init_SetZListItems('standard_search', array('provider', 'product', 'name', 'start', 'end', 'key', 'scope'));
-		MetaModel::Init_SetZListItems('list', array('provider', 'product', 'name', 'start', 'end', 'key', 'scope'));
+		MetaModel::Init_SetZListItems('details', array('provider', 'product', 'name', 'start', 'end', 'licence_key', 'scope', 'usage_limit'));
+		MetaModel::Init_SetZListItems('advanced_search', array('provider', 'product', 'name', 'start', 'end', 'licence_key', 'scope'));
+		MetaModel::Init_SetZListItems('standard_search', array('provider', 'product', 'name', 'start', 'end', 'licence_key', 'scope'));
+		MetaModel::Init_SetZListItems('list', array('provider', 'product', 'name', 'start', 'end'));
 	}
 }
 class Subnet extends cmdbAbstractObject
@@ -410,9 +416,9 @@ class Subnet extends cmdbAbstractObject
 		(
 			"category" => "bizmodel,searchable,configmgmt",
 			"key_type" => "autoincrement",
-			"name_attcode" => "name",
+			"name_attcode" => "ip",
 			"state_attcode" => "",
-			"reconc_keys" => array("name"),
+			"reconc_keys" => array("ip", "ip_mask"),
 			"db_table" => "subnet",
 			"db_key_field" => "id",
 			"db_finalclass_field" => "",
@@ -421,21 +427,22 @@ class Subnet extends cmdbAbstractObject
 		MetaModel::Init_Params($aParams);
 		MetaModel::Init_InheritAttributes();
 
-		MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values"=>null, "sql"=>"name", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
+		//MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values"=>null, "sql"=>"name", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeWikiText("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
+		MetaModel::Init_AddAttribute(new AttributeExternalKey("org_id", array("targetclass"=>"Organization", "jointype"=>null, "allowed_values"=>null, "sql"=>"org_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
+		MetaModel::Init_AddAttribute(new AttributeExternalField("org_name", array("allowed_values"=>null, "extkey_attcode"=>"org_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeIPAddress("ip", array("allowed_values"=>null, "sql"=>"ip", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeIPAddress("ip_mask", array("allowed_values"=>null, "sql"=>"ip_mask", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
 
-		MetaModel::Init_SetZListItems('details', array('name', 'description', 'ip', 'ip_mask'));
-		MetaModel::Init_SetZListItems('advanced_search', array('name', 'description', 'ip', 'ip_mask'));
-		MetaModel::Init_SetZListItems('standard_search', array('name', 'description', 'ip', 'ip_mask'));
-		MetaModel::Init_SetZListItems('list', array('description', 'ip', 'ip_mask'));
+		MetaModel::Init_SetZListItems('details', array('description', 'org_id', 'ip', 'ip_mask'));
+		MetaModel::Init_SetZListItems('advanced_search', array('description', 'org_id', 'ip', 'ip_mask'));
+		MetaModel::Init_SetZListItems('standard_search', array('description', 'org_id', 'ip', 'ip_mask'));
+		MetaModel::Init_SetZListItems('list', array('description', 'org_id', 'ip', 'ip_mask'));
 	}
 
-	public function ComputeValues()
+	public function GetName()
 	{
-		$sName = $this->Get('ip').'/'.$this->Get('ip_mask');
-		$this->Set('name', $sName);
+		return $this->Get('ip').' / '.$this->Get('ip_mask');
 	}
 
 	function DisplayBareRelations(WebPage $oPage, $bEditMode = false)
@@ -508,20 +515,20 @@ class Patch extends cmdbAbstractObject
 		MetaModel::Init_InheritAttributes();
 
 		MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values"=>null, "sql"=>"name", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
+		MetaModel::Init_AddAttribute(new AttributeWikiText("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeString("target_sw", array("allowed_values"=>null, "sql"=>"target_sw", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeString("version", array("allowed_values"=>null, "sql"=>"version", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
-		MetaModel::Init_AddAttribute(new AttributeEnum("type", array("allowed_values"=>new ValueSetEnum('security,servicepack,fix'), "sql"=>"type", "default_value"=>"fix", "is_null_allowed"=>true, "depends_on"=>array())));
+		MetaModel::Init_AddAttribute(new AttributeEnum("type", array("allowed_values"=>new ValueSetEnum('application,os,security,servicepack'), "sql"=>"type", "default_value"=>"security", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("ci_list", array("linked_class"=>"lnkPatchToCI", "ext_key_to_me"=>"patch_id", "ext_key_to_remote"=>"ci_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
 
-		MetaModel::Init_SetZListItems('details', array('name', 'target_sw', 'version', 'type', 'ci_list'));
+		MetaModel::Init_SetZListItems('details', array('name', 'description', 'target_sw', 'version', 'type', 'ci_list'));
 		MetaModel::Init_SetZListItems('advanced_search', array('name', 'target_sw', 'version', 'type'));
 		MetaModel::Init_SetZListItems('standard_search', array('name', 'target_sw', 'version', 'type'));
 		MetaModel::Init_SetZListItems('list', array('target_sw', 'version', 'type'));
 	}
 }
-class Application extends cmdbAbstractObject
+abstract class Software extends cmdbAbstractObject
 {
-
 	public static function Init()
 	{
 		$aParams = array
@@ -531,7 +538,7 @@ class Application extends cmdbAbstractObject
 			"name_attcode" => "name",
 			"state_attcode" => "",
 			"reconc_keys" => array("name"),
-			"db_table" => "application",
+			"db_table" => "software",
 			"db_key_field" => "id",
 			"db_finalclass_field" => "",
 			"icon" => "../business/templates/software.png",
@@ -541,17 +548,42 @@ class Application extends cmdbAbstractObject
 
 		MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values"=>null, "sql"=>"name", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeWikiText("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
-		MetaModel::Init_AddAttribute(new AttributeLinkedSet("instance_list", array("linked_class"=>"ApplicationInstance", "ext_key_to_me"=>"application_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
 
-		MetaModel::Init_SetZListItems('details', array('name', 'description', 'instance_list'));
+		MetaModel::Init_SetZListItems('details', array('name', 'description'));
 		MetaModel::Init_SetZListItems('advanced_search', array('name', 'description'));
 		MetaModel::Init_SetZListItems('standard_search', array('name', 'description'));
 		MetaModel::Init_SetZListItems('list', array('description'));
 	}
 }
-class DBServer extends Application
+class Application extends Software
 {
+	public static function Init()
+	{
+		$aParams = array
+		(
+			"category" => "bizmodel,searchable,configmgmt",
+			"key_type" => "autoincrement",
+			"name_attcode" => "name",
+			"state_attcode" => "",
+			"reconc_keys" => array("name"),
+			"db_table" => "software_app",
+			"db_key_field" => "id",
+			"db_finalclass_field" => "",
+			"icon" => "../business/templates/software.png",
+		);
+		MetaModel::Init_Params($aParams);
+		MetaModel::Init_InheritAttributes();
+
+		MetaModel::Init_AddAttribute(new AttributeLinkedSet("instance_list", array("linked_class"=>"ApplicationInstance", "ext_key_to_me"=>"software_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
 
+		MetaModel::Init_SetZListItems('details', array('name', 'description', 'instance_list'));
+		MetaModel::Init_SetZListItems('advanced_search', array('name', 'description'));
+		MetaModel::Init_SetZListItems('standard_search', array('name', 'description'));
+		MetaModel::Init_SetZListItems('list', array('description'));
+	}
+}
+class DBServer extends Software
+{
 	public static function Init()
 	{
 		$aParams = array
@@ -561,7 +593,7 @@ class DBServer extends Application
 			"name_attcode" => "name",
 			"state_attcode" => "",
 			"reconc_keys" => array("name"),
-			"db_table" => "application_db",
+			"db_table" => "software_db",
 			"db_key_field" => "id",
 			"db_finalclass_field" => "",
 			"icon" => "../business/templates/software.png",
@@ -569,13 +601,15 @@ class DBServer extends Application
 		MetaModel::Init_Params($aParams);
 		MetaModel::Init_InheritAttributes();
 
+		MetaModel::Init_AddAttribute(new AttributeLinkedSet("instance_list", array("linked_class"=>"DBServerInstance", "ext_key_to_me"=>"software_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
+
 		MetaModel::Init_SetZListItems('details', array('name', 'description', 'instance_list'));
 		MetaModel::Init_SetZListItems('advanced_search', array('name', 'description'));
 		MetaModel::Init_SetZListItems('standard_search', array('name', 'description'));
 		MetaModel::Init_SetZListItems('list', array('description'));
 	}
 }
-class OperatingSystem extends Application
+class OperatingSystem extends Software
 {
 
 	public static function Init()
@@ -587,7 +621,7 @@ class OperatingSystem extends Application
 			"name_attcode" => "name",
 			"state_attcode" => "",
 			"reconc_keys" => array("name"),
-			"db_table" => "application_os",
+			"db_table" => "software_os",
 			"db_key_field" => "id",
 			"db_finalclass_field" => "",
 			"icon" => "../business/templates/software.png",
@@ -603,7 +637,6 @@ class OperatingSystem extends Application
 }
 class lnkPatchToCI extends cmdbAbstractObject
 {
-
 	public static function Init()
 	{
 		$aParams = array
@@ -655,18 +688,20 @@ abstract class FunctionalCI extends cmdbAbstractObject
 
 		MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values"=>null, "sql"=>"name", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeEnum("status", array("allowed_values"=>new ValueSetEnum('implementation,production,obsolete'), "sql"=>"status", "default_value"=>"implementation", "is_null_allowed"=>true, "depends_on"=>array())));
-		MetaModel::Init_AddAttribute(new AttributeExternalKey("owner_id", array("targetclass"=>"Organization", "jointype"=>null, "allowed_values"=>null, "sql"=>"owner_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
-		MetaModel::Init_AddAttribute(new AttributeExternalField("owner_name", array("allowed_values"=>null, "extkey_attcode"=>"owner_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
+		MetaModel::Init_AddAttribute(new AttributeExternalKey("org_id", array("targetclass"=>"Organization", "jointype"=>null, "allowed_values"=>null, "sql"=>"org_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
+		MetaModel::Init_AddAttribute(new AttributeExternalField("owner_name", array("allowed_values"=>null, "extkey_attcode"=>"org_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeEnum("importance", array("allowed_values"=>new ValueSetEnum('low,medium,high'), "sql"=>"importance", "default_value"=>"medium", "is_null_allowed"=>false, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("contact_list", array("linked_class"=>"lnkCIToContact", "ext_key_to_me"=>"ci_id", "ext_key_to_remote"=>"contact_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("document_list", array("linked_class"=>"lnkCIToDoc", "ext_key_to_me"=>"ci_id", "ext_key_to_remote"=>"document_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("solution_list", array("linked_class"=>"lnkSolutionToCI", "ext_key_to_me"=>"ci_id", "ext_key_to_remote"=>"solution_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
+		MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("contract_list", array("linked_class"=>"lnkContractToCI", "ext_key_to_me"=>"ci_id", "ext_key_to_remote"=>"contract_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
+		MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("ticket_list", array("linked_class"=>"lnkTicketToCI", "ext_key_to_me"=>"ci_id", "ext_key_to_remote"=>"ticket_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
 
 
-		MetaModel::Init_SetZListItems('details', array('name', 'status', 'owner_id', 'importance', 'contact_list', 'document_list', 'solution_list'));
-		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'owner_id', 'importance'));
-		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'owner_id', 'importance'));
-		MetaModel::Init_SetZListItems('list', array('status', 'owner_id', 'importance'));
+		MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'contact_list', 'document_list', 'solution_list', 'contract_list', 'ticket_list'));
+		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance'));
+		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance'));
+		MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance'));
 	}
 
 	public static function GetRelationQueries($sRelCode)
@@ -683,19 +718,18 @@ abstract class FunctionalCI extends cmdbAbstractObject
 	}
 	
 }
-class ApplicationInstance extends FunctionalCI
+abstract class SoftwareInstance extends FunctionalCI
 {
-
 	public static function Init()
 	{
 		$aParams = array
 		(
 			"category" => "bizmodel,searchable,configmgmt",
 			"key_type" => "autoincrement",
-			"name_attcode" => "name",
+			"name_attcode" => "software_name",
 			"state_attcode" => "",
-			"reconc_keys" => array("name"),
-			"db_table" => "applicationinstance",
+			"reconc_keys" => array("software_id", "device_id"),
+			"db_table" => "softwareinstance",
 			"db_key_field" => "id",
 			"db_finalclass_field" => "",
 			"icon" => "../business/templates/application.png",
@@ -707,15 +741,25 @@ class ApplicationInstance extends FunctionalCI
 		MetaModel::Init_AddAttribute(new AttributeExternalField("device_name", array("allowed_values"=>null, "extkey_attcode"=>"device_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeExternalKey("licence_id", array("targetclass"=>"Licence", "jointype"=>null, "allowed_values"=>null, "sql"=>"licence_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeExternalField("licence_name", array("allowed_values"=>null, "extkey_attcode"=>"licence_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
-		MetaModel::Init_AddAttribute(new AttributeExternalKey("application_id", array("targetclass"=>"Application", "jointype"=>null, "allowed_values"=>null, "sql"=>"application_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
-		MetaModel::Init_AddAttribute(new AttributeExternalField("application_name", array("allowed_values"=>null, "extkey_attcode"=>"application_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
+		MetaModel::Init_AddAttribute(new AttributeExternalKey("software_id", array("targetclass"=>"Software", "jointype"=>null, "allowed_values"=>null, "sql"=>"software_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
+		MetaModel::Init_AddAttribute(new AttributeExternalField("software_name", array("allowed_values"=>null, "extkey_attcode"=>"software_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeString("version", array("allowed_values"=>null, "sql"=>"version", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeWikiText("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
 
-		MetaModel::Init_SetZListItems('details', array('name', 'status', 'owner_id', 'importance', 'device_id', 'licence_id', 'application_id', 'version', 'description'));
-		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'owner_id', 'importance', 'device_id', 'licence_id', 'application_id', 'version', 'description'));
-		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'owner_id', 'importance', 'device_id', 'licence_id', 'application_id', 'version', 'description'));
-		MetaModel::Init_SetZListItems('list', array('status', 'owner_id', 'importance', 'device_id', 'licence_id', 'application_id', 'version', 'description'));
+		MetaModel::Init_SetZListItems('details', array('status', 'org_id', 'importance', 'device_id', 'licence_id', 'software_id', 'version', 'description'));
+		MetaModel::Init_SetZListItems('advanced_search', array('status', 'org_id', 'importance', 'device_id', 'licence_id', 'software_id', 'version'));
+		MetaModel::Init_SetZListItems('standard_search', array('status', 'org_id', 'importance', 'device_id', 'licence_id', 'software_id', 'version'));
+		MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'device_id', 'software_id', 'version'));
+	}
+
+	public function GetName()
+	{
+		return $this->Get('software_name').' - '.$this->Get('device_name');
+	}
+
+	public function ComputeValues()
+	{
+		return $this->Set('name', $this->GetName());
 	}
 
 	public static function GetRelationQueries($sRelCode)
@@ -724,13 +768,65 @@ class ApplicationInstance extends FunctionalCI
 		{
 		case "impacts":
 			$aRels = array(
-				// Actually this should be limited to the ApplicationInstances based on a DBServer Application type...
+				// Actually this should be limited to the Software instances based on a DBServer Application type...
 				"db_instances" => array("sQuery"=>"SELECT DatabaseInstance AS db WHERE db.db_server_instance_id = :this->id", "bPropagate"=>true, "iDistance"=>5),
 			);
 			return array_merge($aRels, parent::GetRelationQueries($sRelCode));
 		}
 	}
 }
+class DBServerInstance extends SoftwareInstance
+{
+	public static function Init()
+	{
+		$aParams = array
+		(
+			"category" => "bizmodel,searchable,configmgmt",
+			"key_type" => "autoincrement",
+			"name_attcode" => "software_name",
+			"state_attcode" => "",
+			"reconc_keys" => array("software_id", "device_id"),
+			"db_table" => "softwareinstance_dbserver",
+			"db_key_field" => "id",
+			"db_finalclass_field" => "",
+			"icon" => "../business/templates/application.png",
+		);
+		MetaModel::Init_Params($aParams);
+		MetaModel::Init_InheritAttributes();
+
+		MetaModel::Init_AddAttribute(new AttributeLinkedSet("dbinstance_list", array("linked_class"=>"DatabaseInstance", "ext_key_to_me"=>"db_server_instance_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
+
+		MetaModel::Init_SetZListItems('details', array('status', 'org_id', 'importance', 'device_id', 'licence_id', 'software_id', 'version', 'description', 'dbinstance_list'));
+		MetaModel::Init_SetZListItems('advanced_search', array('status', 'org_id', 'importance', 'device_id', 'licence_id', 'software_id', 'version'));
+		MetaModel::Init_SetZListItems('standard_search', array('status', 'org_id', 'importance', 'device_id', 'licence_id', 'software_id', 'version'));
+		MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'device_id', 'software_id', 'version'));
+	}
+}
+class ApplicationInstance extends SoftwareInstance
+{
+	public static function Init()
+	{
+		$aParams = array
+		(
+			"category" => "bizmodel,searchable,configmgmt",
+			"key_type" => "autoincrement",
+			"name_attcode" => "software_name",
+			"state_attcode" => "",
+			"reconc_keys" => array("software_id", "device_id"),
+			"db_table" => "softwareinstance_application",
+			"db_key_field" => "id",
+			"db_finalclass_field" => "",
+			"icon" => "../business/templates/application.png",
+		);
+		MetaModel::Init_Params($aParams);
+		MetaModel::Init_InheritAttributes();
+
+		MetaModel::Init_SetZListItems('details', array('status', 'org_id', 'importance', 'device_id', 'licence_id', 'software_id', 'version', 'description'));
+		MetaModel::Init_SetZListItems('advanced_search', array('status', 'org_id', 'importance', 'device_id', 'licence_id', 'software_id', 'version'));
+		MetaModel::Init_SetZListItems('standard_search', array('status', 'org_id', 'importance', 'device_id', 'licence_id', 'software_id', 'version'));
+		MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'device_id', 'software_id', 'version'));
+	}
+}
 
 class DatabaseInstance extends FunctionalCI
 {
@@ -752,17 +848,20 @@ class DatabaseInstance extends FunctionalCI
 		MetaModel::Init_Params($aParams);
 		MetaModel::Init_InheritAttributes();
 
-		MetaModel::Init_AddAttribute(new AttributeExternalKey("db_server_instance_id", array("targetclass"=>"ApplicationInstance", "jointype"=>null, "allowed_values"=>new ValueSetObjects('SELECT ApplicationInstance AS DBSrvInstance JOIN DBServer AS DBServerSW ON DBSrvInstance.application_id = DBServerSW.id WHERE DBServerSW.finalclass=\'DBServer\''), "sql"=>"db_server_instance_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
+		MetaModel::Init_AddAttribute(new AttributeExternalKey("db_server_instance_id", array("targetclass"=>"DBServerInstance", "jointype"=>null, "allowed_values"=>null, "sql"=>"db_server_instance_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeExternalField("db_server_instance_name", array("allowed_values"=>null, "extkey_attcode"=>"db_server_instance_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeExternalField("db_server_instance_version", array("allowed_values"=>null, "extkey_attcode"=>"db_server_instance_id", "target_attcode"=>"version", "is_null_allowed"=>true, "depends_on"=>array())));
-		MetaModel::Init_AddAttribute(new AttributePassword("admin_login", array("allowed_values"=>null, "sql"=>"admin_login", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
-		MetaModel::Init_AddAttribute(new AttributePassword("admin_password", array("allowed_values"=>null, "sql"=>"admin_password", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeWikiText("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
 
-		MetaModel::Init_SetZListItems('details', array('name', 'status', 'owner_id', 'importance', 'db_server_instance_id', 'db_server_instance_version', 'admin_login', 'admin_password', 'description'));
-		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'owner_id', 'importance', 'db_server_instance_id', 'db_server_instance_version', 'description'));
-		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'owner_id', 'importance', 'db_server_instance_id', 'db_server_instance_version', 'description'));
-		MetaModel::Init_SetZListItems('list', array('status', 'owner_id', 'importance', 'db_server_instance_id', 'db_server_instance_version'));
+		MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'db_server_instance_id', 'db_server_instance_version', 'description'));
+		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'db_server_instance_id', 'db_server_instance_version'));
+		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'db_server_instance_id', 'db_server_instance_version'));
+		MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'db_server_instance_id', 'db_server_instance_version'));
+	}
+
+	public function GetName()
+	{
+		return $this->Get('name').' - '.$this->Get('db_server_instance_name');
 	}
 }
 class ApplicationSolution extends FunctionalCI
@@ -789,10 +888,10 @@ class ApplicationSolution extends FunctionalCI
 		MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("ci_list", array("linked_class"=>"lnkSolutionToCI", "ext_key_to_me"=>"solution_id", "ext_key_to_remote"=>"ci_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("process_list", array("linked_class"=>"lnkProcessToSolution", "ext_key_to_me"=>"solution_id", "ext_key_to_remote"=>"process_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
 
-		MetaModel::Init_SetZListItems('details', array('name', 'status', 'owner_id', 'importance', 'description', 'ci_list', 'process_list'));
-		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'owner_id', 'importance', 'description'));
-		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'owner_id', 'importance', 'description'));
-		MetaModel::Init_SetZListItems('list', array('status', 'owner_id', 'importance', 'description'));
+		MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'description', 'ci_list', 'process_list'));
+		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance'));
+		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance'));
+		MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance'));
 	}
 	
 	public static function GetRelationQueries($sRelCode)
@@ -828,12 +927,12 @@ class BusinessProcess extends FunctionalCI
 		MetaModel::Init_InheritAttributes();
 
 		MetaModel::Init_AddAttribute(new AttributeWikiText("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
-		MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("solution_list", array("linked_class"=>"lnkProcessToSolution", "ext_key_to_me"=>"process_id", "ext_key_to_remote"=>"solution_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
+		MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("used_solution_list", array("linked_class"=>"lnkProcessToSolution", "ext_key_to_me"=>"process_id", "ext_key_to_remote"=>"solution_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
 
-		MetaModel::Init_SetZListItems('details', array('name', 'status', 'owner_id', 'importance', 'description', 'solution_list'));
-		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'owner_id', 'importance', 'description'));
-		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'owner_id', 'importance', 'description'));
-		MetaModel::Init_SetZListItems('list', array('status', 'owner_id', 'importance', 'description'));
+		MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'description', 'used_solution_list'));
+		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'description'));
+		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'description'));
+		MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'description'));
 	}
 }
 abstract class ConnectableCI extends FunctionalCI
@@ -861,10 +960,10 @@ abstract class ConnectableCI extends FunctionalCI
 		MetaModel::Init_AddAttribute(new AttributeString("serial_number", array("allowed_values"=>null, "sql"=>"serial_number", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeString("asset_ref", array("allowed_values"=>null, "sql"=>"asset_ref", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
 
-		MetaModel::Init_SetZListItems('details', array('name', 'status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
-		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
-		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
-		MetaModel::Init_SetZListItems('list', array('status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
+		MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
+		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
+		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
+		MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
 	}
 }
 class NetworkInterface extends ConnectableCI
@@ -899,11 +998,17 @@ class NetworkInterface extends ConnectableCI
 		MetaModel::Init_AddAttribute(new AttributeExternalKey("connected_if", array("targetclass"=>"NetworkInterface", "jointype"=>null, "allowed_values"=>null, "sql"=>"connected_if", "is_null_allowed"=>true, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeExternalField("connected_name", array("allowed_values"=>null, "extkey_attcode"=>"connected_if", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeExternalField("connected_if_device_id", array("allowed_values"=>null, "extkey_attcode"=>"connected_if", "target_attcode"=>"device_id", "is_null_allowed"=>true, "depends_on"=>array())));
+		MetaModel::Init_AddAttribute(new AttributeExternalField("connected_if_device_id_name", array("allowed_values"=>null, "extkey_attcode"=>"connected_if", "target_attcode"=>"device_name", "is_null_allowed"=>true, "depends_on"=>array())));
 
-		MetaModel::Init_SetZListItems('details', array('name', 'status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'device_id', 'logical_type', 'physical_type', 'ip_address', 'ip_mask', 'mac_address', 'speed', 'duplex', 'connected_if', 'connected_if_device_id'));
-		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'device_id', 'logical_type', 'physical_type', 'ip_address', 'ip_mask', 'mac_address', 'speed', 'duplex', 'connected_if', 'connected_if_device_id'));
-		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'device_id', 'logical_type', 'physical_type', 'ip_address', 'ip_mask', 'mac_address', 'speed', 'duplex', 'connected_if', 'connected_if_device_id'));
-		MetaModel::Init_SetZListItems('list', array('status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'device_id', 'logical_type', 'physical_type', 'ip_address', 'ip_mask', 'mac_address', 'speed', 'duplex', 'connected_if', 'connected_if_device_id'));
+		MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'device_id', 'logical_type', 'physical_type', 'ip_address', 'ip_mask', 'mac_address', 'speed', 'duplex', 'connected_if', 'connected_if_device_id'));
+		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'device_id', 'logical_type', 'physical_type', 'ip_address', 'ip_mask', 'mac_address', 'speed', 'duplex', 'connected_if', 'connected_if_device_id'));
+		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'device_id', 'logical_type', 'physical_type', 'ip_address', 'ip_mask', 'mac_address', 'speed', 'duplex', 'connected_if', 'connected_if_device_id'));
+		MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'device_id', 'logical_type', 'physical_type', 'connected_if'));
+	}
+
+	public function GetName()
+	{
+		return $this->Get('device_name').' - '.$this->Get('name');
 	}
 }
 abstract class Device extends ConnectableCI
@@ -926,10 +1031,12 @@ abstract class Device extends ConnectableCI
 		MetaModel::Init_Params($aParams);
 		MetaModel::Init_InheritAttributes();
 
-		MetaModel::Init_SetZListItems('details', array('name', 'status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'application_list'));
-		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
-		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
-		MetaModel::Init_SetZListItems('list', array('status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
+		MetaModel::Init_AddAttribute(new AttributeLinkedSet("nwinterface_list", array("linked_class"=>"NetworkInterface", "ext_key_to_me"=>"device_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
+
+		MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'application_list', 'nwinterface_list'));
+		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
+		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
+		MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
 	}
 	
 	public static function GetRelationQueries($sRelCode)
@@ -938,7 +1045,7 @@ abstract class Device extends ConnectableCI
 		{
 		case "impacts":
 			$aRels = array(
-				"applications" => array("sQuery"=>"SELECT ApplicationInstance AS app WHERE app.device_id = :this->id", "bPropagate"=>true, "iDistance"=>5),
+				"applications" => array("sQuery"=>"SELECT SoftwareInstance AS app WHERE app.device_id = :this->id", "bPropagate"=>true, "iDistance"=>5),
 			);
 			return array_merge($aRels, parent::GetRelationQueries($sRelCode));
 		}
@@ -969,13 +1076,13 @@ class PC extends Device
 		MetaModel::Init_AddAttribute(new AttributeString("hdd", array("allowed_values"=>null, "sql"=>"hdd", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeString("os_family", array("allowed_values"=>null, "sql"=>"os_family", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeString("os_version", array("allowed_values"=>null, "sql"=>"os_version", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
-		MetaModel::Init_AddAttribute(new AttributeLinkedSet("application_list", array("linked_class"=>"ApplicationInstance", "ext_key_to_me"=>"device_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
+		MetaModel::Init_AddAttribute(new AttributeLinkedSet("application_list", array("linked_class"=>"SoftwareInstance", "ext_key_to_me"=>"device_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("patch_list", array("linked_class"=>"lnkPatchToCI", "ext_key_to_me"=>"ci_id", "ext_key_to_remote"=>"patch_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
 
-		MetaModel::Init_SetZListItems('details', array('name', 'status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'cpu', 'ram', 'hdd', 'os_family', 'os_version', 'application_list', 'patch_list'));
-		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'cpu', 'ram', 'hdd', 'os_family', 'os_version'));
-		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'cpu', 'ram', 'hdd', 'os_family', 'os_version'));
-		MetaModel::Init_SetZListItems('list', array('status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'cpu', 'ram', 'hdd', 'os_family', 'os_version'));
+		MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'cpu', 'ram', 'hdd', 'os_family', 'os_version', 'application_list', 'patch_list'));
+		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'cpu', 'ram', 'hdd', 'os_family', 'os_version'));
+		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'cpu', 'ram', 'hdd', 'os_family', 'os_version'));
+		MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'brand', 'model', 'os_family'));
 	}
 }
 abstract class MobileCI extends Device
@@ -999,10 +1106,10 @@ abstract class MobileCI extends Device
 		MetaModel::Init_InheritAttributes();
 
 
-		MetaModel::Init_SetZListItems('details', array('name', 'status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
-		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
-		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
-		MetaModel::Init_SetZListItems('list', array('status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
+		MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
+		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
+		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
+		MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
 	}
 }
 class MobilePhone extends MobileCI
@@ -1027,12 +1134,12 @@ class MobilePhone extends MobileCI
 
 		MetaModel::Init_AddAttribute(new AttributeString("number", array("allowed_values"=>null, "sql"=>"number", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeString("imei", array("allowed_values"=>null, "sql"=>"IMIE", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
-		MetaModel::Init_AddAttribute(new AttributePassword("hw_pin", array("allowed_values"=>null, "sql"=>"hw_pin", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
+		MetaModel::Init_AddAttribute(new AttributeString("hw_pin", array("allowed_values"=>null, "sql"=>"hw_pin", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
 
-		MetaModel::Init_SetZListItems('details', array('name', 'status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'number', 'imei', 'hw_pin'));
-		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'number', 'imei'));
-		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'number', 'imei'));
-		MetaModel::Init_SetZListItems('list', array('status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'number', 'imei', 'hw_pin'));
+		MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'number', 'imei', 'hw_pin'));
+		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'number', 'imei'));
+		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'number', 'imei'));
+		MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'brand', 'model'));
 	}
 }
 abstract class InfrastructureCI extends Device
@@ -1056,16 +1163,16 @@ abstract class InfrastructureCI extends Device
 		MetaModel::Init_InheritAttributes();
 
 		MetaModel::Init_AddAttribute(new AttributeWikiText("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
-		MetaModel::Init_AddAttribute(new AttributeExternalKey("location_id", array("targetclass"=>"Location", "jointype"=>null, "allowed_values"=>null, "sql"=>"location_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
+		MetaModel::Init_AddAttribute(new AttributeExternalKey("location_id", array("targetclass"=>"Location", "jointype"=>null, "allowed_values"=>new ValueSetObjects('SELECT Location AS l WHERE l.org_id = :this->org_id'), "sql"=>"location_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array("org_id"))));
 		MetaModel::Init_AddAttribute(new AttributeExternalField("location_name", array("allowed_values"=>null, "extkey_attcode"=>"location_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeText("location_details", array("allowed_values"=>null, "sql"=>"location_details", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeIPAddress("management_ip", array("allowed_values"=>null, "sql"=>"management_ip", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeString("default_gateway", array("allowed_values"=>null, "sql"=>"default_gateway", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
 
-		MetaModel::Init_SetZListItems('details', array('name', 'status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway'));
-		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway'));
-		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway'));
-		MetaModel::Init_SetZListItems('list', array('status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway'));
+		MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway'));
+		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway'));
+		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway'));
+		MetaModel::Init_SetZListItems('list', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'location_id'));
 	}
 }
 class NetworkDevice extends InfrastructureCI
@@ -1091,13 +1198,13 @@ class NetworkDevice extends InfrastructureCI
 		MetaModel::Init_AddAttribute(new AttributeEnum("type", array("allowed_values"=>new ValueSetEnum('wanaccelerator,firewall,hub,loadbalancer,router,switch'), "sql"=>"type", "default_value"=>"switch", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeString("ios_version", array("allowed_values"=>null, "sql"=>"ios_version", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeString("ram", array("allowed_values"=>null, "sql"=>"ram", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
-		MetaModel::Init_AddAttribute(new AttributePassword("snmp_read", array("allowed_values"=>null, "sql"=>"snmp_read", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
-		MetaModel::Init_AddAttribute(new AttributePassword("snmp_write", array("allowed_values"=>null, "sql"=>"snmp_write", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
+		MetaModel::Init_AddAttribute(new AttributeString("snmp_read", array("allowed_values"=>null, "sql"=>"snmp_read", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
+		MetaModel::Init_AddAttribute(new AttributeString("snmp_write", array("allowed_values"=>null, "sql"=>"snmp_write", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
 
-		MetaModel::Init_SetZListItems('details', array('name', 'status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'type', 'ios_version', 'ram', 'snmp_read', 'snmp_write'));
-		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'type', 'ios_version', 'ram'));
-		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'type', 'ios_version', 'ram'));
-		MetaModel::Init_SetZListItems('list', array('status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'type', 'ios_version', 'ram', 'snmp_read', 'snmp_write'));
+		MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'type', 'ios_version', 'ram', 'snmp_read', 'snmp_write'));
+		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'type', 'ios_version', 'ram'));
+		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'type', 'ios_version', 'ram'));
+		MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'brand', 'model', 'location_id', 'type'));
 	}
 }
 class Server extends InfrastructureCI
@@ -1125,13 +1232,13 @@ class Server extends InfrastructureCI
 		MetaModel::Init_AddAttribute(new AttributeString("hdd", array("allowed_values"=>null, "sql"=>"hdd", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeString("os_family", array("allowed_values"=>null, "sql"=>"os_family", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeString("os_version", array("allowed_values"=>null, "sql"=>"os_version", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
-		MetaModel::Init_AddAttribute(new AttributeLinkedSet("application_list", array("linked_class"=>"ApplicationInstance", "ext_key_to_me"=>"device_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
+		MetaModel::Init_AddAttribute(new AttributeLinkedSet("application_list", array("linked_class"=>"SoftwareInstance", "ext_key_to_me"=>"device_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("patch_list", array("linked_class"=>"lnkPatchToCI", "ext_key_to_me"=>"ci_id", "ext_key_to_remote"=>"patch_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
 
-		MetaModel::Init_SetZListItems('details', array('name', 'status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'cpu', 'ram', 'hdd', 'os_family', 'os_version', 'application_list', 'patch_list'));
-		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'cpu', 'ram', 'hdd', 'os_family', 'os_version'));
-		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'cpu', 'ram', 'hdd', 'os_family', 'os_version'));
-		MetaModel::Init_SetZListItems('list', array('status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'cpu', 'ram', 'hdd', 'os_family', 'os_version'));
+		MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'cpu', 'ram', 'hdd', 'os_family', 'os_version', 'application_list', 'patch_list'));
+		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'cpu', 'ram', 'hdd', 'os_family', 'os_version'));
+		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'cpu', 'ram', 'hdd', 'os_family', 'os_version'));
+		MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'brand', 'model', 'location_id', 'os_family'));
 	}
 }
 class Printer extends InfrastructureCI
@@ -1157,10 +1264,10 @@ class Printer extends InfrastructureCI
 		MetaModel::Init_AddAttribute(new AttributeEnum("type", array("allowed_values"=>new ValueSetEnum('mopier,printer'), "sql"=>"type", "default_value"=>"printer", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeEnum("technology", array("allowed_values"=>new ValueSetEnum('laser,inkjet,tracer'), "sql"=>"technology", "default_value"=>"laser", "is_null_allowed"=>true, "depends_on"=>array())));
 
-		MetaModel::Init_SetZListItems('details', array('name', 'status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'type', 'technology'));
-		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'type', 'technology'));
-		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'type', 'technology'));
-		MetaModel::Init_SetZListItems('list', array('status', 'owner_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'type', 'technology'));
+		MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'type', 'technology'));
+		MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'type', 'technology'));
+		MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'type', 'technology'));
+		MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'type', 'technology'));
 	}
 }
 class lnkCIToDoc extends cmdbAbstractObject
@@ -1345,8 +1452,9 @@ new OQLMenuNode('ApplicationSolution', 'SELECT ApplicationSolution', $oCINode->G
 $oSWNode = new TemplateMenuNode('ConfigManagementSoftware', '', $oCINode->GetIndex(), 2 /* fRank */);
 new OQLMenuNode('Licence', 'SELECT Licence', $oSWNode->GetIndex(), 0 /* fRank */);
 new OQLMenuNode('Patch', 'SELECT Patch', $oSWNode->GetIndex(), 1 /* fRank */);
-new OQLMenuNode('ApplicationInstance', 'SELECT ApplicationInstance', $oSWNode->GetIndex(), 2 /* fRank */);
-new OQLMenuNode('DatabaseInstance', 'SELECT DatabaseInstance', $oSWNode->GetIndex(), 3 /* fRank */);
+new OQLMenuNode('ApplicationInstance', 'SELECT SoftwareInstance', $oSWNode->GetIndex(), 2 /* fRank */);
+new OQLMenuNode('vraieappliinstance', 'SELECT ApplicationInstance', $oSWNode->GetIndex(), 3 /* fRank */);
+new OQLMenuNode('DBServerInstance', 'SELECT DBServerInstance', $oSWNode->GetIndex(), 3 /* fRank */);
 
 $oHWNode = new TemplateMenuNode('ConfigManagementHardware', '', $oCINode->GetIndex(), 3 /* fRank */);
 new OQLMenuNode('Subnet', 'SELECT Subnet', $oHWNode->GetIndex(), 0 /* fRank */);
@@ -1356,5 +1464,4 @@ new OQLMenuNode('Printer', 'SELECT Printer', $oHWNode->GetIndex(), 3 /* fRank */
 new OQLMenuNode('MobilePhone', 'SELECT MobilePhone', $oHWNode->GetIndex(), 4 /* fRank */);
 new OQLMenuNode('PC', 'SELECT PC', $oHWNode->GetIndex(), 5 /* fRank */);
 
-
 ?>

+ 12 - 2
modules/itop-incident-mgmt-1.0.0/model.itop-incident-mgmt.php

@@ -42,15 +42,25 @@ class Incident extends ResponseTicket
 		MetaModel::Init_Params($aParams);
 		MetaModel::Init_InheritAttributes();
 		MetaModel::Init_InheritLifecycle();
+
+		MetaModel::Init_SetZListItems('details', array('ref', 'title', 'ticket_log', 'start_date', 'escalation_deadline', 'closure_deadline', 'document_list', 'ci_list', 'contact_list', 'status', 'caller_id', 'customer_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'closure_date', 'last_update', 'assignment_date', 'closure_deadline', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment'));
+		MetaModel::Init_SetZListItems('advanced_search', array('ref', 'title', 'ticket_log', 'start_date', 'status', 'caller_id', 'customer_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'closure_date', 'last_update', 'assignment_date', 'escalation_deadline', 'closure_deadline', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment'));
+		MetaModel::Init_SetZListItems('standard_search', array('ref', 'title', 'ticket_log', 'start_date', 'status', 'caller_id', 'customer_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'closure_date', 'last_update', 'assignment_date', 'escalation_deadline', 'closure_deadline', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment'));
+		MetaModel::Init_SetZListItems('list', array('ref', 'title', 'ticket_log', 'start_date', 'status', 'caller_id', 'customer_id', 'service_id', 'servicesubcategory_id', 'product', 'impact', 'urgency', 'priority', 'workgroup_id', 'agent_id', 'agent_email', 'related_problem_id', 'related_change_id', 'closure_date', 'last_update', 'assignment_date', 'escalation_deadline', 'closure_deadline', 'resolution_code', 'solution', 'user_satisfaction', 'user_commment'));
 	}
 }
 
 $oMyMenuGroup = new MenuGroup('IncidentManagement', 1 /* fRank */);
 
 // By default, one entry per class
-new OQLMenuNode('Incidents', 'SELECT Incident', $oMyMenuGroup->GetIndex(), 0 /* fRank */);
+//new TemplateMenuNode('MyIncidents', 'SELECT Incident', $oMyMenuGroup->GetIndex(), 0 /* fRank */);
+// incident dont je suis caller
+// incident dont je suis requester
 new OQLMenuNode('OpenedIncidents', 'SELECT Incident WHERE status IN ("new", "assigned", "escalation")', $oMyMenuGroup->GetIndex(), 0 /* fRank */);
-new OQLMenuNode('ClosedIncidents', 'SELECT Incident WHERE status IN ("resolved", "closed")', $oMyMenuGroup->GetIndex(), 0 /* fRank */);
+//new OQLMenuNode('EscalatedIncidents', 'SELECT Incident WHERE status IN ("escalation")', $oMyMenuGroup->GetIndex(), 0 /* fRank */);
+//new TemplateMenuNode('IncidentOverview', 'SELECT Incident', $oMyMenuGroup->GetIndex(), 0 /* fRank */);
+
+
 //new TemplateMenuNode('WelcomeMenuPage', '../business/templates/welcome_menu.html', $oWelcomeMenu->GetIndex() /* oParent */, 1 /* fRank */);
 
 

+ 2 - 2
modules/itop-service-mgmt-1.0.0/model.itop-service-mgmt.php

@@ -91,7 +91,7 @@ class ProviderContract extends Contract
 		MetaModel::Init_SetZListItems('details', array('name', 'description', 'start_date', 'end_date', 'cost', 'cost_currency', 'cost_unit', 'billing_frequency', 'contact_list', 'document_list', 'ci_list', 'provider_id', 'ola', 'coverage', 'customer_list'));
 		MetaModel::Init_SetZListItems('advanced_search', array('name', 'description', 'start_date', 'end_date', 'cost', 'cost_currency', 'cost_unit', 'billing_frequency', 'provider_id', 'ola', 'coverage'));
 		MetaModel::Init_SetZListItems('standard_search', array('name', 'description', 'start_date', 'end_date', 'cost', 'cost_currency', 'cost_unit', 'billing_frequency', 'provider_id', 'ola', 'coverage'));
-		MetaModel::Init_SetZListItems('list', array('name', 'description', 'start_date', 'end_date', 'cost', 'cost_currency', 'cost_unit', 'billing_frequency', 'provider_id', 'ola', 'coverage'));
+		MetaModel::Init_SetZListItems('list', array('name', 'start_date', 'end_date', 'provider_id', 'ola', 'coverage'));
 	}
 }
 class CustomerContract extends Contract
@@ -124,7 +124,7 @@ class CustomerContract extends Contract
 		MetaModel::Init_SetZListItems('details', array('name', 'description', 'start_date', 'end_date', 'cost', 'cost_currency', 'cost_unit', 'billing_frequency', 'contact_list', 'document_list', 'ci_list', 'customer_id', 'support_team_id', 'provider_list', 'sla_list'));
 		MetaModel::Init_SetZListItems('advanced_search', array('name', 'description', 'start_date', 'end_date', 'cost', 'cost_currency', 'cost_unit', 'billing_frequency', 'customer_id', 'support_team_id'));
 		MetaModel::Init_SetZListItems('standard_search', array('name', 'description', 'start_date', 'end_date', 'cost', 'cost_currency', 'cost_unit', 'billing_frequency', 'customer_id', 'support_team_id'));
-		MetaModel::Init_SetZListItems('list', array('name', 'description', 'start_date', 'end_date', 'cost', 'cost_currency', 'cost_unit', 'billing_frequency', 'customer_id', 'support_team_id'));
+		MetaModel::Init_SetZListItems('list', array('name', 'start_date', 'end_date', 'customer_id', 'support_team_id'));
 	}
 }
 class lnkProviderToCustomer extends cmdbAbstractObject

+ 11 - 9
modules/itop-tickets-1.0.0/en.dict.itop-tickets.php

@@ -64,7 +64,7 @@ Dict::Add('EN US', 'English', 'English', array(
 //
 
 Dict::Add('EN US', 'English', 'English', array(
-	'Class:lnkTicketToDoc' => 'lnkTicketToDoc',
+	'Class:lnkTicketToDoc' => 'Ticket/Document',
 	'Class:lnkTicketToDoc+' => '',
 	'Class:lnkTicketToDoc/Attribute:ticket_id' => 'ticket_id',
 	'Class:lnkTicketToDoc/Attribute:ticket_id+' => '',
@@ -81,9 +81,9 @@ Dict::Add('EN US', 'English', 'English', array(
 //
 
 Dict::Add('EN US', 'English', 'English', array(
-	'Class:lnkTicketToContact' => 'lnkTicketToContact',
+	'Class:lnkTicketToContact' => 'Ticket/Contact',
 	'Class:lnkTicketToContact+' => '',
-	'Class:lnkTicketToContact/Attribute:ticket_id' => 'ticket_id',
+	'Class:lnkTicketToContact/Attribute:ticket_id' => 'Ticket',
 	'Class:lnkTicketToContact/Attribute:ticket_id+' => '',
 	'Class:lnkTicketToContact/Attribute:ticket_ref' => 'Ticket #',
 	'Class:lnkTicketToContact/Attribute:ticket_ref+' => '',
@@ -93,6 +93,8 @@ Dict::Add('EN US', 'English', 'English', array(
 	'Class:lnkTicketToContact/Attribute:contact_name+' => '',
 	'Class:lnkTicketToContact/Attribute:contact_email' => 'Email',
 	'Class:lnkTicketToContact/Attribute:contact_email+' => '',
+	'Class:lnkTicketToContact/Attribute:role' => 'Role',
+	'Class:lnkTicketToContact/Attribute:role+' => '',
 ));
 
 //
@@ -100,9 +102,9 @@ Dict::Add('EN US', 'English', 'English', array(
 //
 
 Dict::Add('EN US', 'English', 'English', array(
-	'Class:lnkTicketToCI' => 'lnkTicketToCI',
+	'Class:lnkTicketToCI' => 'Ticket/CI',
 	'Class:lnkTicketToCI+' => '',
-	'Class:lnkTicketToCI/Attribute:ticket_id' => 'ticket_id',
+	'Class:lnkTicketToCI/Attribute:ticket_id' => 'Ticket',
 	'Class:lnkTicketToCI/Attribute:ticket_id+' => '',
 	'Class:lnkTicketToCI/Attribute:ticket_ref' => 'Ticket #',
 	'Class:lnkTicketToCI/Attribute:ticket_ref+' => '',
@@ -167,11 +169,11 @@ Dict::Add('EN US', 'English', 'English', array(
 	'Class:ResponseTicket/Attribute:urgency/Value:3+' => '',
 	'Class:ResponseTicket/Attribute:priority' => 'priority',
 	'Class:ResponseTicket/Attribute:priority+' => '',
-	'Class:ResponseTicket/Attribute:priority/Value:1' => 'Lowest',
+	'Class:ResponseTicket/Attribute:priority/Value:1' => 'Low',
 	'Class:ResponseTicket/Attribute:priority/Value:1+' => '',
-	'Class:ResponseTicket/Attribute:priority/Value:2' => 'To be done',
+	'Class:ResponseTicket/Attribute:priority/Value:2' => 'Medium',
 	'Class:ResponseTicket/Attribute:priority/Value:2+' => '',
-	'Class:ResponseTicket/Attribute:priority/Value:3' => 'Top priority',
+	'Class:ResponseTicket/Attribute:priority/Value:3' => 'High',
 	'Class:ResponseTicket/Attribute:priority/Value:3+' => '',
 	'Class:ResponseTicket/Attribute:workgroup_id' => 'Workgroup',
 	'Class:ResponseTicket/Attribute:workgroup_id+' => '',
@@ -195,7 +197,7 @@ Dict::Add('EN US', 'English', 'English', array(
 	'Class:ResponseTicket/Attribute:escalation_deadline+' => '',
 	'Class:ResponseTicket/Attribute:closure_deadline' => 'Closure deadline',
 	'Class:ResponseTicket/Attribute:closure_deadline+' => '',
-	'Class:ResponseTicket/Attribute:resolution_code' => 'Resoluion code',
+	'Class:ResponseTicket/Attribute:resolution_code' => 'Resolution code',
 	'Class:ResponseTicket/Attribute:resolution_code+' => '',
 	'Class:ResponseTicket/Attribute:resolution_code/Value:couldnotreproduce' => 'Could not be reproduced',
 	'Class:ResponseTicket/Attribute:resolution_code/Value:couldnotreproduce+' => '',

+ 11 - 8
modules/itop-tickets-1.0.0/model.itop-tickets.php

@@ -45,6 +45,7 @@ abstract class Ticket extends cmdbAbstractObject
 
 		MetaModel::Init_AddAttribute(new AttributeString("ref", array("allowed_values"=>null, "sql"=>"ref", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeString("title", array("allowed_values"=>null, "sql"=>"title", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
+//		MetaModel::Init_AddAttribute(new AttributeText("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeText("ticket_log", array("allowed_values"=>null, "sql"=>"ticket_log", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeDateTime("start_date", array("allowed_values"=>null, "sql"=>"start_date", "default_value"=>null, "is_null_allowed"=>false, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("document_list", array("linked_class"=>"lnkTicketToDoc", "ext_key_to_me"=>"ticket_id", "ext_key_to_remote"=>"document_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
@@ -113,11 +114,12 @@ class lnkTicketToContact extends cmdbAbstractObject
 		MetaModel::Init_AddAttribute(new AttributeExternalKey("contact_id", array("targetclass"=>"Contact", "jointype"=>null, "allowed_values"=>null, "sql"=>"contact_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeExternalField("contact_name", array("allowed_values"=>null, "extkey_attcode"=>"contact_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
 		MetaModel::Init_AddAttribute(new AttributeExternalField("contact_email", array("allowed_values"=>null, "extkey_attcode"=>"contact_id", "target_attcode"=>"email", "is_null_allowed"=>true, "depends_on"=>array())));
+		MetaModel::Init_AddAttribute(new AttributeString("role", array("allowed_values"=>null, "sql"=>"role", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
 
-		MetaModel::Init_SetZListItems('details', array('ticket_id', 'contact_id', 'contact_email'));
-		MetaModel::Init_SetZListItems('advanced_search', array('ticket_id', 'contact_id', 'contact_email'));
-		MetaModel::Init_SetZListItems('standard_search', array('ticket_id', 'contact_id', 'contact_email'));
-		MetaModel::Init_SetZListItems('list', array('ticket_id', 'contact_id', 'contact_email'));
+		MetaModel::Init_SetZListItems('details', array('ticket_id', 'contact_id', 'contact_email', 'role'));
+		MetaModel::Init_SetZListItems('advanced_search', array('ticket_id', 'contact_id', 'contact_email', 'role'));
+		MetaModel::Init_SetZListItems('standard_search', array('ticket_id', 'contact_id', 'contact_email', 'role'));
+		MetaModel::Init_SetZListItems('list', array('ticket_id', 'contact_id', 'contact_email', 'role'));
 	}
 }
 class lnkTicketToCI extends cmdbAbstractObject
@@ -218,6 +220,8 @@ abstract class ResponseTicket extends Ticket
 				"attribute_inherit" => null,
 				"attribute_list" => array(
 					'ref' => OPT_ATT_READONLY,
+					'ticket_log' => OPT_ATT_HIDDEN,
+					'description' => OPT_ATT_MUSTCHANGE,
 					'contact_list' => OPT_ATT_READONLY,
 					'start_date' => OPT_ATT_READONLY,
 					'last_update' => OPT_ATT_READONLY,
@@ -234,8 +238,6 @@ abstract class ResponseTicket extends Ticket
 					'priority' => OPT_ATT_READONLY,
 					'workgroup_id' => OPT_ATT_MUSTCHANGE,
 					'agent_id' => OPT_ATT_HIDDEN,
-					'related_problem_id' => OPT_ATT_HIDDEN,
-					'related_change_id' => OPT_ATT_HIDDEN,
 					'resolution_code' => OPT_ATT_HIDDEN,
 					'solution' => OPT_ATT_HIDDEN,
 					'user_satisfaction' => OPT_ATT_HIDDEN,
@@ -256,9 +258,9 @@ abstract class ResponseTicket extends Ticket
 			array(
 				"attribute_inherit" => 'new',
 				"attribute_list" => array(
+					'ticket_log' => OPT_ATT_NORMAL,
+					'description' => OPT_ATT_READONLY,
 					'agent_id' => OPT_ATT_MANDATORY,
-					'related_problem_id' => OPT_ATT_NORMAL,
-					'related_change_id' => OPT_ATT_NORMAL,
 					'closure_deadline' => OPT_ATT_READONLY,
 					'escalation_deadline' => OPT_ATT_HIDDEN,
 				),
@@ -287,6 +289,7 @@ abstract class ResponseTicket extends Ticket
 			array(
 				"attribute_inherit" => 'resolved',
 				"attribute_list" => array(
+					'ticket_log' => OPT_ATT_READONLY,
 					'user_satisfaction' => OPT_ATT_MUSTCHANGE,
 					'user_commment' => OPT_ATT_MUSTPROMPT,
 				),