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

We have an updatable BAQ for a Preflight dashboard, when a “Preflighted” flag (UD) changes from false to true, we send an email for notificiation via a BPM.

This all works fine in classic/smart client, but in Kinetic-Web the condition fails so the email does not get sent.

I have verified the BPM is getting invoked but not past the condition by adding Message displays in the BPM.

This is my condition:

Any thoughts ?

Dump queryResultDataset into a file as xml and compare in both cases.

How would I go about doing that ? Maybe create a function and ???


where is that condition screenshot taken from? BPM?
in BPM add custom code action and write something like
queryResultDataset.WriteXml(@“c:\temp\name.xml”, XmlWriteMode.WriteSchema);

1 Like

yes, BPM (“Updateable BAQ Method Directive” to be specific but…)

I had no idea you could to that, thanks for the tip

I’m getting this error:

‘QueryResultDataSetUbaqTableset’ does not contain a definition for ‘WriteXml’ and no accessible extension method ‘WriteXml’ accepting a first argument of type ‘QueryResultDataSetUbaqTableset’ could be found (are you missing a using directive or an assembly reference?)

I have System.Data and System.Data.Extensions in my References and System.Data as a Using

So it is not dataset, it is tableset with dataset name. then you cannot use this method.
I don’t remember if any dump method for tableset exist, so you have to use usual foreach to go through table rows.

I would do this via a BAQ and a Function - schedule the function to run at various times of the day to email a list of things that a user needs to action

This is the way. Very, very, very rarely should you fire off an alert immediately. Better to batch items and send them out periodically. Cuts down on inbox clutter and therefore reduces the changes of something getting missed. Users usually like it better too.

1 Like

Yep, let’s all stop “spamming” our internal users each time something happens in Epicor, lets just inform them, as I say, of the list of things that they need to manage

1 Like

Convert it to a dataset first, and then you can use WriteXML to dump it without having to loop through the rows.

So it turns out the email is not being sent because the condition fails…more on that below, first…

I’m not saying the “less spam” idea is bad, it may work for some companies better than others and depend on the circumstance (timing, frequency, urgency), the main point is Method Directives are supposed to work the same in Classic as Kinetic/Web-UI and this is a general problem with Conditions, (not sending emails)

Okay, back to the situation, here is my oh so simple method directive:

The conditions logic is this:

It seems to me that the issue is there is no queryResultDataset in Kinetic Web-UI,
However, if you look at the trace in Kinetic it does show a view (Ctrl-Alt-View in Debug mode) called OFBPreflight_0_0 and OFBPreflight_0_1

this sounds wrong. I don’t think it is true.
You probably need to report it with very simple UBAQ/BPM attached for the investigation.
Meanwhile you can use some other condition, like check DB instead of checking incoming tableset.

My main suspicion is that in classic, there are 2 records set from the client - before changes and changed. And maybe the condition you use relies on this information.
In REST it is not required and overall should not be used, because server should not rely on info sent by client. But maybe in your case it is essential for condition to work.

That is an interesting statement. I don’t think an inconsistency like that is acceptable.

When your condition is based on whether something changes or not, how would you trigger that then?

you know how - look in DB.
My point is when you get record from client it may contain anything, and you rely on its content here.

that is why this needs to be reported.Also I can be just wrong about reasons.

That’s all well and good in theory, but it’s designed the other way in Epicor for convenience, and now they’ve broken it.


Samuel L Jackson Reaction GIF by Coming to America

I agree…how will conditions work ?

if you look at the the Dataviews in Web UI there is OFBPreflight_0_0 (the “before” I assume) and it’s populated with each row, there is also OFBPreflight_0_1 (the “after” I assume) which is empty

I opened a ticket with Epicor last week on this, the are (gradually) working on it