Kinetic, UBAQ, BPM works in classic but not web (Hints)

at least 25+ years ago. And still supported for backward compat,
But I would tell security considerations changed a lot since then,

Help me understand “look in DB”, I assume you mean custom code ?
I am trying to detect a change, I need the before and after, how would I do that ?

(plus I still don’t like it, it’s been stated by Epicor BPMs work the same way in Classic and Web-UI, nobody wants to keep having to solve things two different ways in two different environments.

(We are trying to move to Web but this takes time, plus when things like this break it still takes time to analyze and fix)

Query to check table field value

There’s a few posts on the Before Image stuff that might be helpful:

But basically the before Image snapshot (from progress) was at one point adapted into the SQL Uplift and its how epicor does the “Field Changed from X to Y” it just means you get the same row twice one with and one without changes. Sometimes in BPMs you have to even do it yourself like in the above example.

Then Epicor literally does a little LINQ query comparing the Before and After fields to see if it changed. This was done automatically for you in the classic client via the Adapter (you didn’t have to do the before image injection yourself).
I guess in the web client they aren’t injecting the before image row on all the calls automatically as @Olga pointed out this probably should be reported and I suspect Epicor can change the way those Field Changed from X to Y widgets work to do lookups on the Db.

However for a BAQ that would be tough since the entire BAQ dataset is in memory it isn’t a single table it is a “view” generated by you so they’ll probably have to change the web client to send the BI at least for UBAQs otherwise I’m not sure they’ll ever be able to reliably tell that something changed (or didn’t)

I honestly think it may be a bit of a technical limitation (at least for a while) and we’ll have to work around it. (Assuming that is in fact what is happening)

1 Like

UBAQ Update in fact has nothing to do with BAQ itself. It is just one row that is sent to server and is used in BPM as data. BAQ dataset at this point is only on the client.

Wrote a quick UBAQ and indeed Epicor is still looking for that BI to determie changes here’s the code that widget uses

 return queryResultDataset.Results.Any(r =>
                    r.Updated()
                    && string.Equals(r.Customer_Name, "Larry", StringComparison.OrdinalIgnoreCase)
                    && queryResultDataset.Results.Any(r1 =>
                        r1.SysRowID == r.SysRowID && r1.Unchanged() && !string.Equals(r1.Customer_Name, r.Customer_Name, StringComparison.OrdinalIgnoreCase)));

It looks at any “Updated” rows in the dataset compared to any “Unchanged” rows in the dataset that have a matching SysRowID.

When you do a network trace in Kinetic if you don’t see two rows coming in that call that explains why it isn’t working (and should be reported as a bug)

I’ll raise it on the CR too (once I have a chance to test it)

6 Likes

Hi Jose, curious did you get a chance to test and submit CR ?

thx

Not yet but its on my todo

Done and done and accepted by development in the CR

PRB0272874

1 Like

Awesome, thanks @josecgomez…tells me i’m not crazy all the time

1 Like