Update Parent Item when Relationships Tab is Changed

Good day all,

I have ItemType sm_ITA with a Relationship of sm_ITA_Assignment.  sm_ITA_Assignment (Assignments) is not related to another ItemType.  When an Assignment is added or deleted I need the sm_license_count property of the parent sm_ITA to be updated with the count of Assignments.  I have read several posts that seemed to be similar to this, but can't get anything to work.  I have methods that will change sm_license_count on a save if it doesn't match the Assignment count, but it will not allow me to add or delete Assignments.  I have a method that will make the update, but the sm_ITA has to be saved twice.    Thanks for any help that can be provided of what I am missing.

Will Update Value - sm_ITA Server Event onBeforeUpdate

- Doesn't allow changes, additions, or deletions to Assignments

Won't Update - sm_ITA Server Event onAfterUpdate

this.fetchRelationships("sm_ITA_Assignment");

Item RelationshipsItem = this.getRelationships("sm_ITA_Assignment");

string count = "" + RelationshipsItem.getItemCount();

this.setProperty("sm_license_count", count);

return this;

Item ITA ("edit") - onBeforeUpdate & onAfterUpdate - Returns an error of "An item with the same key has already been added."

Item ITA ("get") - onBeforeUpdate & onAfterUpdate - Does nothing

var ITA ("edit") - onBeforeUpdate & onAfterUpdate - Returns an error of "An item with the same key has already been added."

var ITA ("get") - onBeforeUpdate & onAfterUpdate - Does nothing

Innovator inn = this.getInnovator();

 int currentValue = Int32.Parse(this.getProperty("sm_license_count")); 

 Item relItm = inn.newItem("sm_ITA_Assignment", "get"); 

    relItm.setProperty("source_id", this.getID());

    relItm = relItm.apply();

int totalCount = relItm.getItemCount();  // Number of entries in sm_ITA_Assignements

string count = totalCount.ToString();

if(currentValue != totalCount)

{

    Item ITA = inn.newItem ("sm_ITA", "edit");  // have tried with get

        ITA.setID (this.getID());

        ITA.setProperty ("sm_license_count", count);

        ITA = ITA.apply();

 }

 return this;