diff --git a/datamodels/2.x/itop-incident-mgmt-itil/datamodel.itop-incident-mgmt-itil.xml b/datamodels/2.x/itop-incident-mgmt-itil/datamodel.itop-incident-mgmt-itil.xml
index 6e8448c0ab..449c572282 100755
--- a/datamodels/2.x/itop-incident-mgmt-itil/datamodel.itop-incident-mgmt-itil.xml
+++ b/datamodels/2.x/itop-incident-mgmt-itil/datamodel.itop-incident-mgmt-itil.xml
@@ -1164,15 +1164,22 @@
$this->GetKey()));
- while($oRequest = $oChildRequestSet->Fetch())
- {
- $oRequest->ResolveFrom($this);
- }
+ {
+ // Automatically resolve child requests
+ $sOQL = "SELECT UserRequest WHERE parent_incident_id = :ticket AND status != 'resolved'";
+ $oChildRequestSet = new DBObjectSet(DBObjectSearch::FromOQL($sOQL), array(), array('ticket' => $this->GetKey()));
+ while($oRequest = $oChildRequestSet->Fetch())
+ {
+ if (!array_key_exists($oRequest->GetKey(), $aRequests))
+ {
+ $aRequests[$oRequest->GetKey()] = true;
+ $oRequest->ResolveFrom($this);
+ }
+ }
}
// Automatically resolve child incidents
@@ -1180,7 +1187,11 @@
$oChildIncidentSet = new DBObjectSet(DBObjectSearch::FromOQL($sOQL), array(), array('ticket' => $this->GetKey()));
while($oIncident = $oChildIncidentSet->Fetch())
{
- $oIncident->ResolveFrom($this);
+ if (!array_key_exists($oIncident->GetKey(), $Incidents))
+ {
+ $Incidents[$oIncident->GetKey()] = true;
+ $oIncident->ResolveFrom($this);
+ }
}
return true;
}]]>
diff --git a/datamodels/2.x/itop-request-mgmt-itil/datamodel.itop-request-mgmt-itil.xml b/datamodels/2.x/itop-request-mgmt-itil/datamodel.itop-request-mgmt-itil.xml
index 6fb81e76d3..fd93b32823 100755
--- a/datamodels/2.x/itop-request-mgmt-itil/datamodel.itop-request-mgmt-itil.xml
+++ b/datamodels/2.x/itop-request-mgmt-itil/datamodel.itop-request-mgmt-itil.xml
@@ -1278,12 +1278,18 @@
$this->GetKey()));
while($oRequest = $oChildRequestSet->Fetch())
{
- $oRequest->ResolveFrom($this);
+ if (!array_key_exists($oRequest->GetKey(), $aTickets))
+ {
+ $aTickets[$oRequest->GetKey()] = true;
+ $oRequest->ResolveFrom($this);
+ }
}
return true;
}]]>
diff --git a/datamodels/2.x/itop-request-mgmt/datamodel.itop-request-mgmt.xml b/datamodels/2.x/itop-request-mgmt/datamodel.itop-request-mgmt.xml
index 76aa59c32d..a8ac8438f1 100755
--- a/datamodels/2.x/itop-request-mgmt/datamodel.itop-request-mgmt.xml
+++ b/datamodels/2.x/itop-request-mgmt/datamodel.itop-request-mgmt.xml
@@ -1280,12 +1280,18 @@
$this->GetKey()));
while($oRequest = $oChildRequestSet->Fetch())
{
- $oRequest->ResolveFrom($this);
+ if (!array_key_exists($oRequest->GetKey(), $aTickets))
+ {
+ $aTickets[$oRequest->GetKey()] = true;
+ $oRequest->ResolveFrom($this);
+ }
}
return true;
}]]>