Showing results for 
Search instead for 
Did you mean: 
Showing results for 
Search instead for 
Did you mean: 

The PTC Community email address has changed to Learn more.

Add Support for dedicated Publisher Queue Sets for different CAD Authoring Applications

Add Support for dedicated Publisher Queue Sets for different CAD Authoring Applications

1. Describe your environment: What is your industry? What is your role in your organization? Describe your stakeholders.
Implementation of Visualization Solutions at different Customers.

2. What version of Windchill are you currently running?

3. Describe the problem you are trying to solve. Please include detailed documentation such as screenshots, images or video.
see also CS44087.

Currently there is no support for different Publisher Queue Sets for different CAD Authoring Applications,

Therefore different CAD Workers cannot run in parallel which increases the the time to convert data.

Long conversion times reduce the acceptance by the customer, who wants to see the result as quick as possible. Since there may be following applications that will use these data. e.g. SAP will use drawings.

4. What is the use case for your organization?
More and more customers do not only use Windchill PDMLink to manage there creo parametric data, but also use it as a multi cad data management tool, as to what it is designed. Therefore the multi cad visualization must be enhanced.

Additionally more and more consumers migrate there 3'rd party cad data to windchill and want to publish there legacy data after a migration in an acceptable time frame. But if they have multi cad data in there environment it is not possible to publish the data of different cad systems in parallel.

5. What business value would your suggestion represent for your organization?

The intention is reduce the implementation effort to the customers and to reduce Windchill complexity.

Also increase the throughput of cad conversions to reduce the time until the visualization is available.


6. Suggested solution 
Implement different OOTB Queuesets for different CAD Applications. Additionally it would be helpful to not only define the Queueset bay Type but also by Subtypes or even. additional criteria's like drawing, assembly, parts (not WTPart). It would also be grate if one could send large (e.g. Assemblies/Drawings with may dependencies) jobs (long conversion time) to separate workers  so they do not thwart small jobs.



Community Manager
Status changed to: Acknowledged

Thank you @mschulze for your idea. Based on the information you provided, we are acknowledging it as the Community management team. This is not a commitment from the Product team. Other users may comment and vote your idea up.

23-Emerald IV

CS44087 that you reference tells you how to do exactly what you're asking for.  You can set up as many application specific queuesets as needed, and these can all be processed independently in parallel.  Also see




The additional items you're requesting in # 6 can all be accomplished with a custom filter method.  PTC provides sample code to give you a starting point.  See CS132318.


Dear Tom,

as stated in article CS44087:

It is not possible to configure dedicated Publisher Queue Sets for different CAD Authoring Applications, like Creo Parametric and Inventor, without implementing any customization, as they both use the same Source (i.e. Publish CAD data from an EPM document)

And the intent of this idea was to get better OOTB support by PTC, I know, that one can program the different queue set filters.

But involving extra development always creates extra efforts and increases total cost of ownership to the customer.

Many customers expect this to be OOTB functionality. They want the workers to be able to work OOTB in parallel.

To most customers it is not obvious  that e.g. SWX and  NX Workers are from the same type (EPMDocument) in Windchill and therefore they expect the two workers to work in parallel. And yes, one could define to run additional publish queues, then the workers may work in parallel until there is a large number of jobs for the same cad application running after each other. Since the you have the problem, that the jobs will fail with "Error, did not find available worker of type ..."



23-Emerald IV


The article seems to disagree with itself since it goes on in the next bullet point to describe how to do that exact thing:

"Below are the steps required to setup a Dedicated Publisher Queue with a Dedicated PROEWorker without writing a filter method:" (emphasis mine)

Following those steps will allow the creation of completely separate queue sets for Creo, Solidworks, etc..  These are both EPMDocuments and yet they all publish completely independently of each other.  A failure by one worker does not stop or block any of the other workers.  Each one keeps churning away on its own, processing the items in its own queue.  Maybe I'm missing something you're saying.  Feel free to PM me if you want.  I'm not seeing the limitation here...


The example in the article uses one office worker and one cad worker. which works because they use different types (WTDocument & EPMDocument) and have OOTB different QueueSets

Having different CAD Workers will not work, as stated in the article, since they use the same type.

23-Emerald IV

Ah, I think I see what I was missing.  I do indeed have a custom filter to determine the proper queue set.  It's not complicated, but it's not OOTB.

	public static String[] filterQueueSet (Persistable object, java.lang.Integer rqstType, java.lang.Integer rqstSource, String rqstPriority, String rqstSet, String repName, String repDesc) {
		String[] ret = {rqstPriority, rqstSet, repName, repDesc};
		try {
			if (object instanceof EPMDocument) {
				logger.debug("Valid EPMDocument");
				EPMDocument cadDoc = (EPMDocument)object;
				EPMAuthoringAppType authType = cadDoc.getAuthoringApplication();
				logger.debug("Authoring Application : "+authType);
				// EPMDocumentType docType = cadDoc.getDocType();
				// logger.debug("CAD Document Type : "+docType);
				if (authType != null) {
					logger.trace("Inside authType loop");
					if(authType.toString().toUpperCase().equals("SOLIDWORKS")) {
						logger.trace("Inside SOLIDWORKS loop.");
						ret[1] = "SWX";
				if(authType.toString().toUpperCase().equals("PROE")) {
						logger.trace("Inside PROE loop");
						ret[1] = "PROE";
					logger.debug("Selected Queue Set : "+ret[1]);
		catch (Exception e) {
			logger.error("filterQueueSet() ERROR Unable to determine the authoring application");		
		logger.debug("filterQueueSet() END");
		return ret;