Skip to main content
4-Participant
February 10, 2026
Solved

How to retrieve Change Activity Sequence without SQL (Windchill Change Planning)?

  • February 10, 2026
  • 3 replies
  • 196 views

Hello Team,

I need to programmatically retrieve the Sequence value of a Change Activity (WTChangeActivity2) as it appears in the Change Planning / Execution Plan. Currently, the only method that works is executing a direct SQL query on the CHANGEPLANACTIVITY table.

Example SQL (working):

SELECT parent.SEQUENCE
FROM WTCHANGEACTIVITY2MASTER cam
JOIN WTCHANGEACTIVITY2 ca
    ON ca.IDA3MASTERREFERENCE = cam.IDA2A2
JOIN CHANGEPLANNINGLINK cpl
    ON cpl.BRANCHIDA3B5 = ca.BRANCHIDITERATIONINFO
JOIN CHANGEPLANACTIVITY cpa
    ON cpa.IDA2A2 = cpl.IDA3A5
LEFT JOIN CHANGEPLANACTIVITY parent
    ON parent.IDA2A2 = cpa.IDA3PARENTREFERENCE
WHERE cam.WTCHGACTIVITYNUMBER = ?
 

However, this is not a supported API approach, and I want to avoid SQL.

I also tried using:

ChangePlanningHelper.modifyPlan(...)
Map<VersionableChangeItem, String> changeSeqMap
But this map only accepts sequence values for updates — it does not expose or return the current sequence.
changeSeqMap.get(ca) always returns null.
SP_12330653_0-1770717431137.png

 

Question:

Is there any supported Windchill Java API (ChangePlanningHelper, ChangeHelper2, WTChangeActivity2, Info*Engine, etc.) that allows retrieving a Change Activity’s sequence number without using SQL?

If yes, please provide an example.
If not, can PTC confirm that SQL is the only available method?

 

Thanks in advance.

Best answer by Imad_A

Hello @SP_12330653 

 

you can use this :

String sequenceNumber = (String) ChangePlanningHelper.getService().getExecutionValues(changeNotice).get(task);



Imad_A_0-1770729974700.png

 

 String CNNumber = "CHN00000001";
 String taskNumber = "00001";

 
 WTChangeActivity2 task =null;
 WTChangeOrder2 changeNotice = null;

 QuerySpec qs = new QuerySpec(WTChangeOrder2.class);
 qs.appendWhere(new SearchCondition(WTChangeOrder2.class, WTChangeOrder2.NUMBER, 
 		SearchCondition.EQUAL,CNNumber , false),new int[] { 0 });
 QueryResult results = PersistenceHelper.manager.find(qs);
 if (results.hasMoreElements()) {
 	changeNotice = (WTChangeOrder2) results.nextElement();
 }
 
 
 
 	QuerySpec qstask = new QuerySpec(WTChangeActivity2.class);
 	qstask.appendWhere(new SearchCondition(WTChangeActivity2.class,WTChangeActivity2.NUMBER, 
				SearchCondition.EQUAL, taskNumber),new int[] { 0 });
		
 QueryResult resultsTasks = PersistenceHelper.manager.find(qstask);
 if (resultsTasks.hasMoreElements()) {
 	task = (WTChangeActivity2) resultsTasks.nextElement();
 }
 
 
 String sequenceNumber = (String) ChangePlanningHelper.getService().getExecutionValues(changeNotice).get(task);
 


 

3 replies

Fadel
23-Emerald I
February 10, 2026
16-Pearl
February 10, 2026

Hi @SP_12330653,

There is a API getSequence() in ChangePlanActivity.

Could you check?

changePlanActivity.getSequence();
4-Participant
February 10, 2026

There is no changePlanActivity.class in Windchill.

16-Pearl
February 10, 2026

Which version are you using?

The Class is available in version 13.0

TDT_0-1770732081944.png

 

Imad_A13-AquamarineAnswer
13-Aquamarine
February 10, 2026

Hello @SP_12330653 

 

you can use this :

String sequenceNumber = (String) ChangePlanningHelper.getService().getExecutionValues(changeNotice).get(task);



Imad_A_0-1770729974700.png

 

 String CNNumber = "CHN00000001";
 String taskNumber = "00001";

 
 WTChangeActivity2 task =null;
 WTChangeOrder2 changeNotice = null;

 QuerySpec qs = new QuerySpec(WTChangeOrder2.class);
 qs.appendWhere(new SearchCondition(WTChangeOrder2.class, WTChangeOrder2.NUMBER, 
 		SearchCondition.EQUAL,CNNumber , false),new int[] { 0 });
 QueryResult results = PersistenceHelper.manager.find(qs);
 if (results.hasMoreElements()) {
 	changeNotice = (WTChangeOrder2) results.nextElement();
 }
 
 
 
 	QuerySpec qstask = new QuerySpec(WTChangeActivity2.class);
 	qstask.appendWhere(new SearchCondition(WTChangeActivity2.class,WTChangeActivity2.NUMBER, 
				SearchCondition.EQUAL, taskNumber),new int[] { 0 });
		
 QueryResult resultsTasks = PersistenceHelper.manager.find(qstask);
 if (resultsTasks.hasMoreElements()) {
 	task = (WTChangeActivity2) resultsTasks.nextElement();
 }
 
 
 String sequenceNumber = (String) ChangePlanningHelper.getService().getExecutionValues(changeNotice).get(task);
 


 

4-Participant
February 10, 2026

Thanks, it Worked.