<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic API to write the name of the part name and number to a file(notepad) if its life cycle state is changed ? in Windchill</title>
    <link>https://community.ptc.com/t5/Windchill/API-to-write-the-name-of-the-part-name-and-number-to-a-file/m-p/124103#M14658</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi All,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would like to implement a small program in Windchill where the Part Name and Part number will be written to a file (notepad) if its state has been changed.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Say for suppose if there is a Part A which is IN WORK state and if its life cycle state has been changed to PRODUCTION. We should then automatically write the name and number of the part to a notepad like&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;"Part A with number 00001 life cycle state has been changed from IN WORK TO PRODUCTION "&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So how would we do that.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can anyone help me in that ? Should we use any listener ? Can anyone tell the API or methods that has to be used for that ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks and Regards,&lt;/P&gt;&lt;P&gt;Aditya Achanta&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 02 May 2018 11:42:16 GMT</pubDate>
    <dc:creator>aachanta</dc:creator>
    <dc:date>2018-05-02T11:42:16Z</dc:date>
    <item>
      <title>API to write the name of the part name and number to a file(notepad) if its life cycle state is changed ?</title>
      <link>https://community.ptc.com/t5/Windchill/API-to-write-the-name-of-the-part-name-and-number-to-a-file/m-p/124103#M14658</link>
      <description>Hi All,I would like to implement a small program in Windchill where the Part Name and Part number will be written to a file (notepad) if its state has been changed.Say for suppose if there is a Part A which is IN WORK state and if its life cycle state has been changed to PRODUCTION.</description>
      <pubDate>Wed, 02 May 2018 11:42:16 GMT</pubDate>
      <guid>https://community.ptc.com/t5/Windchill/API-to-write-the-name-of-the-part-name-and-number-to-a-file/m-p/124103#M14658</guid>
      <dc:creator>aachanta</dc:creator>
      <dc:date>2018-05-02T11:42:16Z</dc:date>
    </item>
    <item>
      <title>Re: API to write the name of the part name and number to a file(notepad) if its life cycle state is changed ?</title>
      <link>https://community.ptc.com/t5/Windchill/API-to-write-the-name-of-the-part-name-and-number-to-a-file/m-p/124104#M14659</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Short Answer&lt;/P&gt;&lt;P&gt;You should be able to use a listener but off hand I don't know how to get the source transition state.&lt;/P&gt;&lt;P&gt;LifeCycleServiceEvent.generateEventKey(LifeCycleServiceEvent.STATE_CHANGE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The other alternative would be in a workflow. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Long Answer here is a rough example of the code putting it into a logger.info&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You need 2 java class files&lt;BR /&gt;TransitionStateListenServiceInterface.java&lt;BR /&gt;package com.companynamehere.service.transitionstatelistener;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public interface TransitionStateListenServiceInterface {&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;TransitionStateListenService.java&lt;BR /&gt;import wt.util.WTPropertyVetoException;&lt;BR /&gt;import wt.lifecycle.*;&lt;BR /&gt;import wt.log4j.LogR;&lt;BR /&gt;import java.io.PrintWriter;&lt;BR /&gt;import java.io.Serializable;&lt;BR /&gt;import java.beans.PropertyVetoException;&lt;BR /&gt;import java.util.Enumeration;&lt;BR /&gt;import org.apache.log4j.Logger;&lt;BR /&gt;import wt.services.ManagerException;&lt;BR /&gt;import wt.services.ServiceEventListenerAdapter;&lt;BR /&gt;import wt.services.StandardManager;&lt;BR /&gt;import wt.session.SessionContext;&lt;BR /&gt;import wt.util.DebugProperties;&lt;BR /&gt;import wt.util.DebugWriter;&lt;BR /&gt;import java.util.Properties;&lt;BR /&gt;import wt.doc.WTDocument;&lt;BR /&gt;import wt.epm.EPMDocument;&lt;BR /&gt;import wt.fc.WTObject;&lt;BR /&gt;import wt.org.WTUser;&lt;BR /&gt;import wt.part.WTPart;&lt;BR /&gt;import wt.session.SessionHelper;&lt;BR /&gt;import wt.util.WTException;&lt;BR /&gt;import wt.util.WTContext;&lt;BR /&gt;import java.util.*;&lt;/P&gt;&lt;P&gt;public class TransitionStateListenService extends StandardManager implements TransitionStateListenServiceInterface, Serializable {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; private static final String CLASSNAME = TransitionStateListenService.class.getName();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; private static String FILE_SEPARATOR;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; private static String WINDCHILL_HOME;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; private static Logger logger = null;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; public static PrintWriter print = null;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; static {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; logger = LogR.getLogger(TransitionStateListenService.class.getName());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wt.util.WTProperties wtProperties = null;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wtProperties = wt.util.WTProperties.getLocalProperties();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FILE_SEPARATOR = System.getProperty("file.separator");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WINDCHILL_HOME = wtProperties.getProperty("wt.home", "");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (Throwable throwable) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; logger.debug("\n" + throwable.getMessage());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; @Override&lt;BR /&gt;&amp;nbsp;&amp;nbsp; public String getConceptualClassname() {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return CLASSNAME;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; public static TransitionStateListenService newTransitionStateListenService() throws WTException {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TransitionStateListenService instance = new TransitionStateListenService();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; instance.initialize();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return instance;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; @Override&lt;BR /&gt;&amp;nbsp;&amp;nbsp; protected void performStartupProcess() throws ManagerException {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Standard debug output */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; logger.debug(CLASSNAME + " performStartupProcess");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Standard way to become admin */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SessionContext prev = SessionContext.newContext();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SessionHelper.manager.setAdministrator();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (WTException wte) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; logger.error("StandardListenService: failed to set Administrator (ok if installation)");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } finally {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SessionContext.setContext(prev);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; logger.debug("performStartupProcess() starting ..");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; getManagerService().addEventListener(new ServiceEventListenerAdapter(this.getConceptualClassname()) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void notifyVetoableEvent(Object event) throws WTException, PropertyVetoException, WTPropertyVetoException {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LifeCycleServiceEvent lifecycleEvent = (LifeCycleServiceEvent) event;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Object object = lifecycleEvent.getEventTarget();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (object instanceof WTPart) {&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WTPart part = (WTPart) object;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // do your code here&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; logger.info("part " + part.getNumber().toString() + " " + part.getState().toString() );&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch(Exception e)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; logger.error("error transitioning object" + object.toString() );&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }, LifeCycleServiceEvent.generateEventKey(LifeCycleServiceEvent.STATE_CHANGE));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; logger.info("performStartupProcess() Completed ..");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (Exception e) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; logger.debug("Error in try block &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;" +e.getMessage());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new ManagerException("Error");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt; &lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;then you will need to add the following to site.xconf file&lt;/P&gt;&lt;P&gt;&amp;lt;Property name="wt.services.service.200000" overridable="true" targetFile="codebase/wt.properties" value="com.companynamehere.service.transitionstatelistener.TransitionStateListenServiceInterface/com.companynamehere.service.transitionstatelistener.TransitionStateListenService"/&amp;gt;&lt;/P&gt;&lt;P&gt;run xconfmanager -p&lt;/P&gt;&lt;P&gt;copy the class files their respective locations in the method server,&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;restart the server and you should be getting some logs.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 24 May 2016 13:30:08 GMT</pubDate>
      <guid>https://community.ptc.com/t5/Windchill/API-to-write-the-name-of-the-part-name-and-number-to-a-file/m-p/124104#M14659</guid>
      <dc:creator>JamesKerkstra</dc:creator>
      <dc:date>2016-05-24T13:30:08Z</dc:date>
    </item>
    <item>
      <title>Re: API to write the name of the part name and number to a file(notepad) if its life cycle state is changed ?</title>
      <link>https://community.ptc.com/t5/Windchill/API-to-write-the-name-of-the-part-name-and-number-to-a-file/m-p/124105#M14660</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Aditya,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Listener is final soultion i would use, since they may add somne performace issues in windchill.below are the two alternatives.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1. If you are using any worklfow process for releaing objects, then before releasing object from workflow write info in text file &lt;/P&gt;&lt;P&gt;2. You can add workflow on each state of lifecycle which will take PBO and write state info in file&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope it helps !!!!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;Shreyas&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 24 May 2016 16:38:22 GMT</pubDate>
      <guid>https://community.ptc.com/t5/Windchill/API-to-write-the-name-of-the-part-name-and-number-to-a-file/m-p/124105#M14660</guid>
      <dc:creator>satre-2</dc:creator>
      <dc:date>2016-05-24T16:38:22Z</dc:date>
    </item>
    <item>
      <title>Re: API to write the name of the part name and number to a file(notepad) if its life cycle state is changed ?</title>
      <link>https://community.ptc.com/t5/Windchill/API-to-write-the-name-of-the-part-name-and-number-to-a-file/m-p/124106#M14661</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I agree with Shreyas, I wouldn't dare to add a listener to a critical business object like part. The best approach is to use a vehicle object like change or promotion. You can add a robot to write the list of promotables or resultant objects to a file. Works clean - adding to that it is not a good practice to do set state as it does not leave a trail&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Binesh Kumar&lt;/P&gt;&lt;P&gt;Medtronic - MITG&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 25 May 2016 03:10:29 GMT</pubDate>
      <guid>https://community.ptc.com/t5/Windchill/API-to-write-the-name-of-the-part-name-and-number-to-a-file/m-p/124106#M14661</guid>
      <dc:creator>BineshKumar1</dc:creator>
      <dc:date>2016-05-25T03:10:29Z</dc:date>
    </item>
    <item>
      <title>Re: API to write the name of the part name and number to a file(notepad) if its life cycle state is changed ?</title>
      <link>https://community.ptc.com/t5/Windchill/API-to-write-the-name-of-the-part-name-and-number-to-a-file/m-p/124107#M14662</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;There are drawbacks and benefits to both solutions suggested and it will be up to the business to decide the impact.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Listener - PTC says these can/will impact performance if used excessively. That's the drawback, however it will also allow you to catch a "set state" which will not be caught in a workflow. If you really need to document EVERYTHING, you may need to consider the listener and take the performance hit.&lt;/P&gt;&lt;P&gt;Workflow - Less impact on the system and will allow you to get the state change in most cases. Will not catch a "set state".&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 25 May 2016 15:48:43 GMT</pubDate>
      <guid>https://community.ptc.com/t5/Windchill/API-to-write-the-name-of-the-part-name-and-number-to-a-file/m-p/124107#M14662</guid>
      <dc:creator>jmomber</dc:creator>
      <dc:date>2016-05-25T15:48:43Z</dc:date>
    </item>
  </channel>
</rss>

