The same background agent (CGbStockInOutAgent), defined under AutomaticSoftwareMechanisms pdf guide, states the following: If the item is In stock or Awaiting receipt and has no assigned location, the agent sets it to that of the stock.
I can now confirm this definition IS NOT true. This background agent WILL update Location link on amPortfolio to designated Stock location. This means, changing the assignment to In-stock, if the stock location is blank then Location link on amPortfolio will be blank.
Previously you stated User does not have an associated Location link on amEmplDept. If this is the case and your Stock locations can also be blank then you will not be able to keep Location link on amPortfolio mandatory.
If it is crucial that Location link on amPortfolio must always have a value then it should also be crucial that all your employees and stocks must always have a value.
You could always contact HP Support and ask for permission to disable the background agent. How the background agent gets disabled is out of my hands.
If it is not crucial for employees/stocks to have an associated location and HP Support does not give permission then my only other suggestion is not going to be pretty...I suggest creating a location field on amPortfolio to store lLocaId. Create a workflow to populate this new field, when Location link on amPortfolio has a value and this new field does not have a value, then change your new workflow (created during this thread) to always keep Location link on amPortfolio populated (whenever blank) by using new field value to populate foreign key lLocaId. You still will not be able to keep mandatory however you will always have a value.
If you want to go the extra mile by checking whether user/stock DOES have an associated location, and use that, then feel free.
I was trying my best to avoid using that solution from the very beginning... Well, thank you Mark! I appreciate your guidance.
I was able to figure out another work-around. Instead of the location field, I will do that for the Status field. I created a new Status field & mimicked the behavior of the OOB Status field. Then I set all of the records to "In use" for the seAssignment (Status) field & hid this field (seAssignment).
Now the Location does not disappear anymore because every record is "In use" via the seAssignment field, but I hid it and am using another newly created Status field. Woop Woop..!!!