Advanced Customization > Business Logic Customization > Packages Customization > Windchill Replication — Out Of Context Collection & Missing Objects
  
Windchill Replication — Out Of Context Collection & Missing Objects
While using Windchill context replication, problems arise with highly structured data where object-to-object relationships could cross out from the context being replicated to objects in other contexts that are not being replicated. In such a case, the default behavior is to truncate the relationships at the context boundary so that only objects within the context are included in the package for replication.
The behavior of the context replication can be changed to trace cross-context relationships and include the additionally collected objects in the replication package by using the following properties:
Name
Description
Default Value
com.ptc.windchill.wp.rep.enableOutOfContextCollection
Controls the collection of linked objects outside of the replicated context.
false
com.ptc.windchill.wp.enableMissingObjectTrackingSource
Controls the tracking of missing objects on the source system.
false
com.ptc.windchill.wp.enableMissingObjectTrackingTarget
Controls the tracking of missing objects on the target system.
false
Property enableOutOfContextCollection — Logic
When the com.ptc.windchill.wp.rep.enableOutOfContextCollection property is enabled for an object, and a part or CAD document in the context has links outside of the context, the following collection logic is used:
For each part version in the replication context, a collection gathers the following:
All child (uses) part dependents using configuration specification LATEST.
All documents related to the seed object or its dependents.
All change objects related to the seed object or its dependents.
All replacement parts related to the seed object or its dependents.
For each CAD Document version in the replication context, a collection gathers the following:
All child (uses) CAD Document dependents using configuration specification LATEST.
All change objects related to the seed object or its dependents.
All Drawings, Family Tables, Generics and Published Content.
* 
Nothing is collected for replication package members, which are not parts or CAD documents.
For collected dependents, the latest iteration of each released revision and the latest iteration of any un-released revisions are included in the collection. For example, assume a part has the following versions:
A.1 (Released)
B.1 (In Work)
C.1 (Released)
D.1 (In Work)
D.2 (In Work)
E.1 (In Work)
E.2 (In Work)
The following versions are collected:
A.1 (Released)
B.1 (In Work)
C.1 (Released)
D.2 (In Work)
E.2 (In Work)
* 
The additional related objects (non-child objects) are collected only from those objects which are selected via the initial configuration specification (LATEST). They are not collected from subsequently gathered versions.
For example, if Part B revision 2 of a child part is selected by the configuration specification LATEST, then the collector gathers change objects, documents that are related to Part B revision 2. If Part A revision 2 of the part is RELEASED then it is included in the package but it’s related objects (change objects, documents etc.) are not included in the package.
Standard access control is applied during collection so only objects accessible to the person performing the refresh are collected.
Collection Logic Examples
Example 1:
REL — Released, IW — In Work
The result of collection is as follows:
Object
Collected version
Missing Object
Comments
Part 1
A
Seed object
Part 2
C
Included via LATEST configuration specification
Part 2
B
Prior released version is included but not collected
Part 2
A
Prior released version is included but not collected
Part 3
None
Y
Not collected from Part 2 rev A
Part 4
None
Y
Not collected from Part 2 rev B
Part 5
A
Included via LATEST configuration specification
Part 6
A
Included via LATEST configuration specification
Part 7
None
Not collected because parent is not included
Part 8
None
Not collected because parent is not included
Part 9
None
Not collected because parent is not included
Part 10
None
Not collected because parent is not included
If configuration specification of LATEST is used, Part 2 revision C is collected along with Part 5 and Part 6. Prior released revisions of Part 2 are also included (but not collected from). Part 3 is marked as missing under Part 2 revision A, and Part 4 is marked missing under Part 2 revision B.
If configuration specification of LATEST RELEASED is used, Part 2 revision B, Part 4 revision A and Part 9 are collected. Their later unreleased revisions are also included (but not collected from). Part 3 is marked as missing under Part 2 revision A, Part 5 and Part 6 are marked as missing under Part 2 revision C, and Part 10 is marked as missing under Part 4 revision A.
In either of the above scenarios, Part 7 and Part 8 are second level associations which are never encountered (either included or marked as missing).
Example 2:
The result of collection is as follows:
Object
Included
Missing Object
Comments
Part 1
Y
Included in replicated context
Part 2
Y
Included via configuration specification
Part 3
Y
Included via configuration specification
Part 4
Y
Included via configuration specification
Document 1
Y
Related to part 2
Document 2
N
Y
Document-document relationship not traced
Document 3
Y
Related to Part 3
Document 4
N
Y
Only Part & CAD relationships traced across contexts
Change Request 1
Y
Related to Part 1
Change Request 2
N
Y
Document-Change relationships not traced
Change Request 3
Y
Included in replicated context
Example 3:
The result of collection is as follows:
Object
Included
Missing Object
Comments
Part 1
Y
Part 2
Y
Part 3
Y
Part 4
N
Y
Part 5
Y
Document 0
N
N
Document 1
N
Y
Document 2
Y
Document 3
Y
Document 4
N
N
Change Request 1
Y
Y
Change Request 2
N
Y
Property enableMissingObjectTrackingSource — Details
When the property com.ptc.windchill.wp.enableMissingObjectTrackingSource is enabled, missing objects for a replication package delivery are computed, included in the delivery zip and stored for retrieval later.
Points to remember:
Missing object information is included in the zip for replicable objects which are exported and included in the zip.
In case of incremental deliveries, no missing object information is included for objects which are not being exported. Objects are not included if they have been already replicated earlier or if they are not accessible to replicate.
Missing object information is for replicable objects which are not getting replicated and are linked to objects which are getting replicated and included in the zip.
The Missing Object Link Name and Missing Object Role Name columns in the Missing Objects table provides information about the relationship between the missing objects and the source objects included in the package.
The following associations are supported for missing object functionality:
Link Name
Role A (Parent)
Role B (Child)
FormalizedBy
Deprecated in Fox
Deprecated
AddressedBy2
TheMarkUpTheViewable
Representation
WTDocumentDependencyLink
Describes
Described By
WTDocumentUsageLink
Used By
Uses
EPMBuildRule
Build Source
Build Target
WTPartUsageLink
Used By
Uses
WTPartReferenceLink
Referenced By
References
WTPartDescribeLink
Describes
Described By
ReportedAgainst
Change Issue
Changeable2
AffectedActivityData
Change Activity2
Changeable2
RelevantRequestData2
Change Request2
Changeable2
ChangeRecord2
Change Activity2
Changeable2
SubjectProduct
WTPart Master
 Change Request2
ProblemProduct
WTPart Master
 Change Issue
WTPartAlternateLink
WTPart Master
WTPart Master
SubstituteLinkDependencyProcessor
WTPart Master
WTPart Usage Link
HangingChangeLink
Change Activity
Changeable
FlexibleChangeLinkDependencyProcessor
EPMMemberLink
EPMReferenceLink
NoteHolderNoteLink
ConfigurableDescribeLink
Described By
Describes
ConfigurableMastersLink
Traced By
Traces
ConfigurableReferenceLink
Referenced By
References
ConfigurableRevisionLinkCustomProcessor
 Linked From
Linked To
Missing Objects Handling for Change Activity-Changeable Association
For change activity (CA), change request (CR) and changeable (C) association, the change notice (CN) and change activity are considered for missing object processing with its associated changeable.
Usecase 1
One Change Activity missing for Change Notice and Changeable (Part)
Create Part1 and Part2.
Create Change Request for this Part1
Create Change Notice for the Change Request.
Change Task >> Add Part2 as Affected Object.
Change Notice >> Implementation Plan >> Add Change Task2 and add Part2 as Affected Object.
Set Change Task2 lifecycle state to “Under Review”.
Create missingchangeuser and absolute deny read permission for Change Task and state as “Under Review”.
Create replication package using missingchangeuser
Result:
Source Object
Missing Object
Change Notice
Change Task2
Part
Change Task2
When there are multiple changeable associations linking same changeable to same change notice the changeable/change notice are not recorded as missing objects for the second change activity. Only the change activity is recorded as missing object.
Scenario
Result
CR — C (Part1)
CR — CN — CA1 — C (Part2)
CR — CN — CA2 — C (Part2)
CA2 is recorded as missing for both CN and C.
Usecase 2
Change Notice and Change Task missing for Changeable (Part)
Create Part.
Create Change Request for that Part.
Create Change Notice for the Change Request.
Go to the Change Task and add part as Affected Object
Move Change Notice to other context. Change Task will also move to other context.
Create a replication package
Source Object
Missing Object
Part
Change Notice
Part
Change Task
When a Change Task and Change Notice is created for a Changeable (part) and if the Change Notice is moved to other context, the Change Task also moves to the other context. Here, the Change Notice and Change Task is recorded as the missing object for the part.
Scenario
Result
CR — CN — CA – C
CR — CN — CA – C
Both CA and CN are recorded as missing for C
Usecase 3
Change Task missing for Changeable (Part) and Change Notice
Create Part.
Create Change Request for that Part.
Create Change Notice for the Change Request.
Go to the Change Task and add part as Affected Object.
Create missingchangeuser and absolute deny read permission for Change Task.
Create replication package using missingchangeuser
Source Object
Missing Object
Change Notice
Change Task
Part
Change Task
When a Change Task is linked to a Changeable (part) and Change Notice, but the permission to read are denied for the Change Task, then over replication the Change Task is recorded as the missing object for the Part as well as the Change Notice.
Scenario
Result
CR — CN — CA – C
CR — CN — CA – C
CA is recorded as missing for C and CN
Usecase 4
Change Task and Changeable(Part) missing for Change Notice
Create Part1 and Part2.
Create Change Request for this Part1
Create Change Notice for the Change request.
Go to the Change Task and add Part2 as Affected Object
Move part2 to another context
Create replication package
Source Object
Missing Object
Change Notice
Part
Change Notice
Change Task
When there are multiple Changeable (Part) associations linked to same Change Notice and Change Request, the Changeable and Change Request are recorded as missing objects for the Change Notice.
Scenario
Result
CR — C (Part1)
 
CR — CN — CA — C (Part2)
CA and C (Part2) is recorded as missing for CN.
Usecase 5
Changeable(Part) missing for Change Notice and Change Task
Create Part1 and Part2.
Create Change Request for that Part1.
Create Change Notice for the Change Request.
Go to the Change Task and add Part2 as Affected Object
Move part2 to another context.
Create replication package
Source Object
Missing Object
Change Notice
Part2
Change Task
Part2
When there are multiple Changeable (Part) associations linked to same Change Notice and Change Request, the Changeable (Part2) is recorded as missing objects for the Change Activity and Change Request.
Scenario
Result
CR — C (Part1)
 
CR — CN — CA — C (Part2)
C (Part 2) is recorded as missing for both CN and CA.
Usecase 6
Change Notice missing for Change Task and Changeable(Part)
Create Part1 and Part2.
Create Change Request for this Part1.
Create Change Notice for the Change request.
Go to the Change Task and add Part2 as Affected Object
Create missingchangeuser and absolute deny read permission for Change Notice.
Create replication package using missingchangeuser
Source Object
Missing Object
Part2
Change Notice
Change Task
Change Notice
When there are multiple Changeable (Part) associations linked to same Change Notice and Change Request, the Change Notice is recorded as missing object for the Change activity and Changeable (Part 2).
Scenario
Result
CR — C (Part 1)
 
CR — CN — CA — C (Part 2)
CN is recorded as missing for both CN and C (Part 2).
* 
To execute usecase 1 and 3, enable DisableAccessControlOnLinkExport of replication package in WPTypeBasedPropertyLoader.
Missing Objects Handling for Substitutes Link
Usecase 1
Create a Part1 in Context A.
Create two parts Part2 and Part3 in Context B.
From Context A, add Part2 as the child of Part1 and create Part3 as the substitute of the Part2.
Check-in Part as required.
Create replication package of Context A.
Missing object tab of Context A will show relation between Part1 <-> Part2. (This relation is due to WTPartUsageLink).
Create replication package of Context B.
Missing object of Context B will not show any missing object.
Usecase 2
Create two parts — Part1 and Part2 in Context A.
Create a Part3 in Context B.
From Context A, add Part2 as the child of Part1 and create Part3 as the substitute of the Part2.
Check-in part as required.
Create replication package of Context A.
Missing object tab of Context A will show relation between Part2 <-> Part3. (This relation is due to WTPartSubstituteLink).
Create replication package of Context B.
Missing object of Context B will not show any missing object.
* 
Following links are child only links and therefore missing object will be reported only if child of these links are in another context and the replication package is created on the parent context.
WTPartUsageLink
WTDocumentUsageLink
EPMMemberLink
Missing Object Handling for Alternate Link
Usecase 1
Create a Part1 in Context A.
Create two parts — Part2 and Part3 in Context B.
From Context A, add Part2 as the child of Part1 and create Part3 as the alternate of the Part2.
Check-in part as required.
Create replication package of Context A.
Missing object tab of Context A will show relation between Part1 <-> Part2. (This relation is due to WTPartUsageLink).
Create replication package of Context B.
Missing object of Context B will not show any missing object.
Usecase 2
Create two parts — Part1 and Part2 in Context A.
Create a part3 in Context B.
From Context A, add Part2 as the child of Part1 and create Part3 as alternate of the PartB.
Check-in part as required.
Create replication package of Context A.
Missing object tab of Context A will show relation between Part2 <-> Part3. (This relation is due to WTPartAlternateLink).
Create replication package of Context B.
Missing object tab of Context A will show relation between Part3 <-> Part2. (This relation is due to WTPartAlternateLink).