# Clone markups node fails during custom module cleanup

**URL:** <https://discourse.slicer.org/t/clone-markups-node-fails-during-custom-module-cleanup/31619>\
**Category:** Development\
**Created:** [September 8, 2023, 1:55pm UTC](https://discourse.slicer.org/t/clone-markups-node-fails-during-custom-module-cleanup/31619 "2023-09-08T13:55:15Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Patrick\_Li](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/patrick_li/32/66178_2.png) [@Patrick\_Li](https://discourse.slicer.org/u/Patrick_Li)\
**Post date:** [September 8, 2023, 1:55pm UTC](https://discourse.slicer.org/t/clone-markups-node-fails-during-custom-module-cleanup/31619/1 "2023-09-08T13:55:15Z")

</div>

I use this code to clone a ClosedCurveMarkups node

```auto
# Clone the node
itemIDToClone = shNode.GetItemByDataNode(dataNode)
clonedItemID = slicer.modules.subjecthierarchy.logic().CloneSubjectHierarchyItem(shNode, itemIDToClone)
clonedNode = self.shNode.GetItemDataNode(clonedItemID)

```

In all other instances, the node clones without issue. When I invoke this code to clone and save the node after the user closes the application, however, it fails, with clonedItemID always returning a 0. Is there a way to resolve or circumvent this?

---

<div class="post-metadata">

**Author:** ![lassoan](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/lassoan/32/13_2.png) [@lassoan](https://discourse.slicer.org/u/lassoan)\
**Post date:** [September 10, 2023, 1:56am UTC](https://discourse.slicer.org/t/clone-markups-node-fails-during-custom-module-cleanup/31619/2 "2023-09-10T01:56:21Z")

</div>

I’ve created a curve node and ran this:

```python
shNode = slicer.vtkMRMLSubjectHierarchyNode.GetSubjectHierarchyNode(slicer.mrmlScene)
itemIDToClone = shNode.GetItemByDataNode(dataNode)
clonedItemID = slicer.modules.subjecthierarchy.logic().CloneSubjectHierarchyItem(shNode, itemIDToClone)
clonedNode = shNode.GetItemDataNode(clonedItemID)
print(clonedItemID)
print(clonedNode)

```

It cloned the curve node currectly. `clonedItemID` was valid (non-zero). `clonedNode` was valid. Saved and loaded the scene. The original and the cloned curve both loaded correctly. So, I don’t see any issues. Maybe `self.shNode` in your code contains some old subject hierarchy node.
