Link end points changes when nodes moved after loading diagram

In my diagram, I have nodes connected with link. When either node is moved around the other node, the link points (spots - port) keep changing to show proper link between two nodes - This is valid behavior.

I also uses linkshifting tool to changes the location where nodes start showing link.
After that user moves the node around other node and port/spot chosen by user for node doesn’t change. This is also valid behavior.

When this diagram is saved and loaded again, then everything seems correct. But now if user tries to move the either node,
the spot/port start changing ( The behavior is like before changing spot/port using linkshifting tool).

What needs to be saved to get the effect like one which is after applying linkshiftingtool ?

The template for - node is -
> current.goObj(go.Panel, “Spot”,

      current.goObj(go.Shape,
        {
            name: "SHAPE",
            fill: current.ActivityNodeFill, stroke: current.ActivityNodeStroke,
            portId: "",
            //width: 100, height: 100,
            fromLinkable: true, toLinkable: true,
            fromSpot: go.Spot.AllSides, toSpot: go.Spot.AllSides,
            stretch: go.GraphObject.Fill,
        },
        new go.Binding("figure", "figure"),
        new go.Binding("fill", "", current.fillColorConverter.bind(current)),
        new go.Binding("stroke", "", current.borderColorConverter.bind(current)),
        new go.Binding("strokeDashArray","strokeDashArray").makeTwoWay(),
        new go.Binding("strokeWidth","strokeWidth").makeTwoWay())
       ),

The LInk Shifting tool is modifying the Link.fromSpot or Link.toSpot when you use it. In order to save this information, your Link template needs to have two-way bindings on fromSpot and toSpot so that the model gets updated when the values change.