<?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 J-Link Model.Rename() always returns XToolkitCantModify in Customization</title>
    <link>https://www.ptcusercommunity.com/t5/Customization/J-Link-Model-Rename-always-returns-XToolkitCantModify/m-p/1058703#M14829</link>
    <description>I am using Creo Parametric Release 12.4 and Datecode12.4.3.0&lt;BR /&gt;&lt;BR /&gt;Subject: Creo 12.4 + Windchill: J-Link Model.Rename() always returns XToolkitCantModify&lt;BR /&gt;We are migrating a Java J-Link workflow from Creo 6 to Creo 12.4 in a Windchill-linked environment.&lt;BR /&gt;In Creo 12.4, Model.Rename(newName, false) fails consistently with XToolkitCantModify for both .asm and .drw.&lt;BR /&gt;Isolated test (minimal):&lt;BR /&gt;1. RetrieveModelWithOpts() on MAC_NEXTAIR_2.ASM and MAC_NEXTAIR_2.DRW&lt;BR /&gt;2. CheckIsModifiable(false) =&amp;gt; true&lt;BR /&gt;3. CheckIsSaveAllowed(false) =&amp;gt; true&lt;BR /&gt;4. Model.Rename(...) =&amp;gt; XToolkitCantModify&lt;BR /&gt;Manual rename from Creo UI (same environment) works.&lt;BR /&gt;We reviewed CS419079 / CS419066 about read-only policy since Creo 10, but our case is unclear because modifiable/save-allowed are true while J-Link rename still fails.&lt;BR /&gt;Please confirm:&lt;BR /&gt;1. Is J-Link Model.Rename() supported for Windchill-managed models in Creo 12.4?&lt;BR /&gt;2. Is checkout mandatory for rename in this context?&lt;BR /&gt;3. Is there a known difference between UI rename and J-Link rename?&lt;BR /&gt;4. What is the recommended supported API/workflow for renaming Windchill-managed CAD objects?&lt;BR /&gt;</description>
    <pubDate>Mon, 16 Mar 2026 07:55:31 GMT</pubDate>
    <dc:creator>nsalaorno</dc:creator>
    <dc:date>2026-03-16T07:55:31Z</dc:date>
    <item>
      <title>J-Link Model.Rename() always returns XToolkitCantModify</title>
      <link>https://www.ptcusercommunity.com/t5/Customization/J-Link-Model-Rename-always-returns-XToolkitCantModify/m-p/1058703#M14829</link>
      <description>I am using Creo Parametric Release 12.4 and Datecode12.4.3.0&lt;BR /&gt;&lt;BR /&gt;Subject: Creo 12.4 + Windchill: J-Link Model.Rename() always returns XToolkitCantModify&lt;BR /&gt;We are migrating a Java J-Link workflow from Creo 6 to Creo 12.4 in a Windchill-linked environment.&lt;BR /&gt;In Creo 12.4, Model.Rename(newName, false) fails consistently with XToolkitCantModify for both .asm and .drw.&lt;BR /&gt;Isolated test (minimal):&lt;BR /&gt;1. RetrieveModelWithOpts() on MAC_NEXTAIR_2.ASM and MAC_NEXTAIR_2.DRW&lt;BR /&gt;2. CheckIsModifiable(false) =&amp;gt; true&lt;BR /&gt;3. CheckIsSaveAllowed(false) =&amp;gt; true&lt;BR /&gt;4. Model.Rename(...) =&amp;gt; XToolkitCantModify&lt;BR /&gt;Manual rename from Creo UI (same environment) works.&lt;BR /&gt;We reviewed CS419079 / CS419066 about read-only policy since Creo 10, but our case is unclear because modifiable/save-allowed are true while J-Link rename still fails.&lt;BR /&gt;Please confirm:&lt;BR /&gt;1. Is J-Link Model.Rename() supported for Windchill-managed models in Creo 12.4?&lt;BR /&gt;2. Is checkout mandatory for rename in this context?&lt;BR /&gt;3. Is there a known difference between UI rename and J-Link rename?&lt;BR /&gt;4. What is the recommended supported API/workflow for renaming Windchill-managed CAD objects?&lt;BR /&gt;</description>
      <pubDate>Mon, 16 Mar 2026 07:55:31 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Customization/J-Link-Model-Rename-always-returns-XToolkitCantModify/m-p/1058703#M14829</guid>
      <dc:creator>nsalaorno</dc:creator>
      <dc:date>2026-03-16T07:55:31Z</dc:date>
    </item>
    <item>
      <title>Re: J-Link Model.Rename() always returns XToolkitCantModify</title>
      <link>https://www.ptcusercommunity.com/t5/Customization/J-Link-Model-Rename-always-returns-XToolkitCantModify/m-p/1058935#M14835</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If this works from the UI then I assume that your application is asynchronous or is it ?&lt;/P&gt;
&lt;P&gt;If yes, make sure that the application user runs the same access control profile as the manual session.&lt;/P&gt;</description>
      <pubDate>Tue, 17 Mar 2026 13:20:45 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Customization/J-Link-Model-Rename-always-returns-XToolkitCantModify/m-p/1058935#M14835</guid>
      <dc:creator>remy</dc:creator>
      <dc:date>2026-03-17T13:20:45Z</dc:date>
    </item>
    <item>
      <title>Re: J-Link Model.Rename() always returns XToolkitCantModify</title>
      <link>https://www.ptcusercommunity.com/t5/Customization/J-Link-Model-Rename-always-returns-XToolkitCantModify/m-p/1059392#M14853</link>
      <description>&lt;P&gt;You have set the config option let_proe_rename_pdm* (I’m not in front of a workstation, so this is not the full option name &lt;span class="lia-unicode-emoji" title=":winking_face:"&gt;😉&lt;/span&gt;). Take care what you doing here, you may loose Windchill references.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 20 Mar 2026 10:16:51 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Customization/J-Link-Model-Rename-always-returns-XToolkitCantModify/m-p/1059392#M14853</guid>
      <dc:creator>RPN</dc:creator>
      <dc:date>2026-03-20T10:16:51Z</dc:date>
    </item>
    <item>
      <title>Re: J-Link Model.Rename() always returns XToolkitCantModify</title>
      <link>https://www.ptcusercommunity.com/t5/Customization/J-Link-Model-Rename-always-returns-XToolkitCantModify/m-p/1059568#M14857</link>
      <description>&lt;P&gt;Re Q1: Not tried in JLink, but in OTK (C++) pfcModel::Rename() does work, so JLink Model.Rename() should work, too. In my tests (OTK), it worked even independent of let_proe_rename_pdm_objects no or yes.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Re Q2: No, checkout is not mandatory for rename in this context (an unlocked object in Creo is), but checkout unlocks the read-only state in Creo. There are other functions for unlocking (TK: ProMdlHasNoConflict(), ProMdlIsModifiable(), JLink: CheckIsModifiable()).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Re Q3: API should behave identically, but small differences can be expected (as in other parts of TK/OTK/JLink sometimes happens). One difference is "independent of let_proe_rename_pdm_objects", as I just learned from my tests.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Re Q4: Renaming Windchill-managed CAD objects: sometimes a Windchill workflow for renaming is preferred, sometimes from within Creo (ootb or custom). Both are supported, since API exists for renaming.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In your case, it looks like the &lt;STRONG&gt;read-only policy for checked-in Windchill objects causes the modifying API call to fail&lt;/STRONG&gt; (despite CheckIsModifiable(false) =&amp;gt; true; more on this below).&lt;BR /&gt;Checked-in objects are read-only by default. They can be unlocked manually and via API.&lt;/P&gt;&lt;P&gt;Note:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;To manually determine an object's read-only state, see ribbon Tools -&amp;gt; Parameters:&lt;BR /&gt;If there is an "Edit" button (lower right corner), this object is in read-only state (otherwise there is an "OK" button).&lt;/LI&gt;&lt;LI&gt;An object's read-only state seems to be workspace bound (not just Creo session, as one might think): to reset (activate) the state, undo checkout or remove object from workspace and reopen it (remove from session is not enough).&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;BR /&gt;The first misconception is around ProMdlIsModifiable() or Java: CheckIsModifiable() &lt;EM&gt;(and I fell for this, too, since the wording/context is very confusing here)&lt;/EM&gt;:&lt;BR /&gt;The boolean result is not the actual modifiable state in Creo in terms of that "Edit" button (in the parameter dialog).&lt;/P&gt;&lt;P&gt;Java API doc CheckIsModifiable():&lt;BR /&gt;&lt;EM&gt;"[...] when [ShowUI] set to false no UI is enabled and the model is considered as modifiable if there are no conflicts that could not be overridden or resolved by default resolution actions."&lt;/EM&gt;&lt;BR /&gt;This API is looking for conflicts in the workspace and subordinate models - not at this object's read-only state in Creo: it evaluates something else.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My tests with Creo 12.4.0.0 with a part object from Windchill regarding read-only policy since Creo Parametric 10 (CS419079/CS419066):&lt;BR /&gt;Using a synchronous OTK (C++) application, using pfcModel::Rename() (but any other modifying API call should also get the same errors, e.g. modifying parameters does).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Results of pfcModel::Rename() for a part that is...&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Checked-in/read-only active,&amp;nbsp; &amp;nbsp; let_proe_rename_pdm_objects no or yes:&amp;nbsp;pfcExceptions::XToolkitCantModify&lt;/LI&gt;&lt;LI&gt;Checked-in/read-only inactive, let_proe_rename_pdm_objects no or yes:&amp;nbsp;No error, successfully renamed.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Conclusion: Error due to read-only state and unrelated to value of let_proe_rename_pdm_objects (while the Creo GUI correctly reflects the setting let_proe_rename_pdm_objects @ File -&amp;gt; Manage File -&amp;gt; Rename).&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;PTC provided functions for the read-only state with Creo 12 (ProMdlIsModifiable() existed before):&lt;BR /&gt;&lt;A href="https://support.ptc.com/help/creo/creo_pma/r12/usascii//index.html#page/whats_new_pma/creo_toolkit_read_only_locked_models.html" target="_blank" rel="noopener"&gt;https://support.ptc.com/help/creo/creo_pma/r12/usascii//index.html#page/whats_new_pma/creo_toolkit_read_only_locked_models.html&lt;/A&gt;&lt;BR /&gt;ProMdlHasNoConflict()&lt;BR /&gt;ProMdlsAreModifiable()&lt;BR /&gt;ProMdlsHaveNoConflict()&lt;/P&gt;&lt;P&gt;While this functions can unlock the read-only state, they can not reveal the actual read-only state in terms of that "Edit" button (in the parameter dialog) - and the docs never promised this.&lt;BR /&gt;I never got any indication for the read-only state from ProMdlHasNoConflict() or ProMdlIsModifiable(), see the test cases below.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Testing ProMdlHasNoConflict() and ProMdlIsModifiable(): using config.pro options:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;let_proe_rename_pdm_objects unset (=no*)&lt;/LI&gt;&lt;LI&gt;dm_auto_conflict_resolution unset (=no*)&lt;/LI&gt;&lt;LI&gt;dm_checkout_on_the_fly unset (=checkout*)&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;and test part checked-in/read-only active:&lt;BR /&gt;&lt;BR /&gt;Both functions &lt;U&gt;do not affect check-in or read-only status&lt;/U&gt; if 2nd parameter PRO_B_FALSE:&lt;/P&gt;&lt;P class="lia-indent-padding-left-30px"&gt;ProMdlHasNoConflict(pMdl, PRO_B_FALSE, &amp;amp;bNoConflict) =&amp;gt; PRO_TK_NO_ERROR, bNoConflict =&amp;gt; PRO_B_TRUE&lt;BR /&gt;ProMdlIsModifiable(pMdl, PRO_B_FALSE, &amp;amp;bIsModifiable) =&amp;gt; PRO_TK_NO_ERROR, bIsModifiable =&amp;gt; PRO_B_TRUE &amp;lt;- &lt;STRONG&gt;This is the source of misunderstanding, because the object is checked-in &amp;amp; read-only active.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Both functions &lt;U&gt;can affect check-in/read-only status&lt;/U&gt; with 2nd parameter PRO_B_TRUE:&lt;/P&gt;&lt;P class="lia-indent-padding-left-30px"&gt;ProMdlHasNoConflict(pMdl, PRO_B_TRUE, &amp;amp;bNoConflict) =&amp;gt; PRO_TK_NO_ERROR, bNoConflict =&amp;gt; PRO_B_TRUE, changed: read-only inactive, optional also check-in state&lt;BR /&gt;- triggers automatic Conflict Resolution (always without GUI, dm_checkout_on_the_fly applies)&lt;/P&gt;&lt;P class="lia-indent-padding-left-30px"&gt;ProMdlIsModifiable(pMdl, PRO_B_TRUE, &amp;amp;bIsModifiable)&lt;BR /&gt;- triggers Conflict Resolution: with or without GUI, depending on dm_auto_conflict_resolution.&lt;/P&gt;&lt;P class="lia-indent-padding-left-60px"&gt;-&amp;gt; Answer: Cancel =&amp;gt; PRO_TK_NO_ERROR, bIsModifiable =&amp;gt; PRO_B_FALSE, nothing changed (still checked-in/read-only active)&lt;BR /&gt;-&amp;gt; Answer: make read only, OK =&amp;gt; PRO_TK_NO_ERROR, bIsModifiable =&amp;gt; PRO_B_FALSE, changed: now also locked (pad lock symbol), (still checked-in/read-only active)&lt;BR /&gt;-&amp;gt; Answer: check out, OK =&amp;gt; PRO_TK_NO_ERROR, bIsModifiable =&amp;gt; PRO_B_TRUE, changed: checked-out/read-only inactive&lt;BR /&gt;-&amp;gt; Answer: continue, OK =&amp;gt; PRO_TK_NO_ERROR, bIsModifiable =&amp;gt; PRO_B_TRUE, changed: read-only inactive, (still checked-in)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My findings:&lt;BR /&gt;- ProMdlHasNoConflict(pMdl, PRO_B_TRUE, &amp;amp;bNoConflict) does what is configured by dm_checkout_on_the_fly (default: checkout). (Sidenote: under a special condition, after removing checked-out object etc., it fails with XToolkitGeneralError, and on next try succeeds.)&lt;BR /&gt;- &lt;STRONG&gt;Neither ProMdlHasNoConflict() nor ProMdlIsModifiable() can be used to check for the Checked-in/read-only state.&lt;/STRONG&gt; I would have expected to be able to do it with ProMdlIsModifiable(pMdl, PRO_B_FALSE, &amp;amp;bIsModifiable), but it always returns PRO_B_TRUE (when modifyable and when read-only in terms of that "Edit" button (in the parameter dialog)).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Creo knows this&amp;nbsp;read-only state and offers options to the user ("Edit" button), while TK/OTK applications can not detect this state. PTC should provide a way for this.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Additional background/workaround for C TOOLKIT: ProMdlReadonlyIgnore()&lt;BR /&gt;&lt;A href="https://community.ptc.com/t5/Customization/ProMdlReadonlyIgnore-implementation/m-p/976820#M13529" target="_blank" rel="noopener"&gt;https://community.ptc.com/t5/Customization/ProMdlReadonlyIgnore-implementation/m-p/976820#M13529&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Note: If I strech the scope from JLink API to C TK and C++ OTK, it's because TK/OTK is the full set of API and helps to understand Creo behavior.&lt;/P&gt;</description>
      <pubDate>Sat, 21 Mar 2026 12:24:09 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Customization/J-Link-Model-Rename-always-returns-XToolkitCantModify/m-p/1059568#M14857</guid>
      <dc:creator>HannesBuxbaum</dc:creator>
      <dc:date>2026-03-21T12:24:09Z</dc:date>
    </item>
    <item>
      <title>Re: J-Link Model.Rename() always returns XToolkitCantModify</title>
      <link>https://www.ptcusercommunity.com/t5/Customization/J-Link-Model-Rename-always-returns-XToolkitCantModify/m-p/1059594#M14858</link>
      <description>&lt;P&gt;Good answer Hannes!&amp;nbsp;&lt;a href="https://www.ptcusercommunity.com/t5/user/viewprofilepage/user-id/76853"&gt;@nsalaorno&lt;/a&gt;&amp;nbsp;Don’t expect a rename in Windchill as well&lt;span class="lia-unicode-emoji" title=":dizzy_face:"&gt;😵&lt;/span&gt;‍&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The role of PTC_COMMON_NAME must be more prominent in Creo. The filename as an ID, is not acceptable for a User. There is a much better behavior of customer ID’s in Creo required. The current requirements would not acceptable for me and a no go. But this may a different discussion &lt;span class="lia-unicode-emoji" title=":smiling_face_with_sunglasses:"&gt;😎&lt;/span&gt;&lt;span class="lia-unicode-emoji" title=":winking_face:"&gt;😉&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Sun, 22 Mar 2026 10:57:48 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Customization/J-Link-Model-Rename-always-returns-XToolkitCantModify/m-p/1059594#M14858</guid>
      <dc:creator>RPN</dc:creator>
      <dc:date>2026-03-22T10:57:48Z</dc:date>
    </item>
  </channel>
</rss>

