Struggling to update UD field on PriceLstPart in a BPM

I’m working on Salesforce integration with Kinetic. Our Salesforce partner is building the pushes from Salesforce to Kinetic using the Kinetic REST api. I’m working on pushing data that is managed in Kinetic to Salesforce via the Salesforce api. I am doing this with as little C# as possible so that others who know less C# than I can troubleshoot. All has been going quite well until I started working on the data in PriceLstParts.

If I am pushing a POST from Kinetic to Salesforce, I write the SalesforceID from the return into a UD field in Kinetic to allow later PATCH or DELETE commands from Kinetic. I’ve got this working for several Kinetic objects, but seem to have hit a wall trying to update a PriceLstPart row with the SalesforceID.

Here’s the flow of my data directive.

Based on the debug messages I am writing during processing, I believe I’m successfully updating the dataset with the NewSFID value, but when the PriceLst.Update BO runs the new value isn’t written to SQL and I’m not getting any type of error. :frowning:

Here’s the configuration for the Get Current Dataset action.

Mapping configuration for setting the New SFID

And finally the configuration for the PriceLst.Update BO.
image

Any suggestions are welcome.

That last Write Debug 2, what does it do?

Can you use it to write out your dataset so you/we can see it ?

Write Debug 4 includes:
image
and the output in the event viewer during my last test was
image
This debug is there to confirm that I have a new SFID to write and that SalesforceID_c isn’t populated in the dataset before doing the update by query.
After the update by query, the Write Debug 2 includes
image
to allow me to confirm that the dataset did get updated with the value.
And the entry in the Event log shows that SalesforceID_c is populated in the dataset before the Update BO is called.
image
I’m not aware of a simple way to write the whole dataset to the log.

I’m unfamiliar with that widget. If someone else doesn’t chime in I’ll get back with you when I have access to a pc.

I think I’ve found the root of my problem. Will post the solution once I’ve worked it out.

The root cause of my problem was dataset confusion on my part.

When I started with this data directive, I was focused only on the PriceListParts dataset and had built my flow around PriceListParts and attempted to update it with the PriceLstParts.Update BO. However when I tested that flow, I got a message that an update wasn’t allowed. Seems like an unusual message for an Update method, but I moved on to plan B.

My new plan was to use the PriceLst.Update BO. I was struggling because I hadn’t converted all of my flow over to use the larger dataset. My working flow now looks like this -

I’ve had to make some adjustments for dealing with the full PriceList dataset. In my “Set New SFID” step query I joined ttPriceLstParts to dsPriceList.PriceLstParts on SysRowID so only the PriceListParts entry that changed would be updated.

I also had to remove the debug logging that I was doing in this area since the dataset contains PriceListParts entries other than the one I’m updating and I didn’t want to take the time to try to figure out the C# code to log just the values that were being updated.

If anyone has suggestions on how this could be improved, or if you see a problem - let me know. It’s worked successfully for me in the test cases I’ve run.