BPM Data Forms in 2022.1

I was testing our customizations in Kinetic 2022.1.9 and discovered that BPM data forms are not correctly receiving character fields that have been set in the directive workflow (ie Set the BPM
Character01,Character02,etc). I know we need to eventually move away from them since they are not supported via Kinetic, but just curious if anyone found a simple way to address this?




image
image

Any luck on finding an answer on this?

We are testing 22.2 and this issue is still there.

As of 2022.2.13 it works for me in the web UI, but not the classic. Curiouser and curiouser.

No, unfortunately the case we opened with Epicor (CS0003243573) got tied to a problem that was not the correct one (PRB0253777). We ended up just working around it with other customizations. Sorry!

looks like the variable loses scope and then blanks are sent back to the client.

no bueno.

I created a case. This could be a showstopper for us to upgrade.

We were going to upgrade to use classic, and then update customizations (we have a few dozen) in Kinetic. Not being able to use BPM forms as intended will be an issue as we have been using BPM forms a bit more to collect data from users.

I doubt they’ll do anything since it works fine in the web UI.

Parks And Recreation Godspeed GIF

If they want folks to upgrade the tools better work.

Devil’s Advocate/Epicor perspective: They DO work for what they’re herding people towards. #WorkingAsDesigned #PlannedObsolescence

I have power running to the server and the code compiles. It works!!!

GIF by Giphy QA

We want to upgrade and sell our story of success. This just makes it a bit more difficult to do. Its not like we are able to just move to the browser day one.

To be fair…

Ani won that race with that pod. :stuck_out_tongue:

Ken–what’s your endgame with setting the context beforehand? Is it to pre-populate fields with something? As much as I dislike the suggestion–what about moving it to a BPM Form customization and pre-populate the fields in the UI code?

That is what I am looking into now. When is the callContextBPMData data getting cleared out.

If it means enhancing the customization, then that won’t be the end of the world. As the form already has a customizations (part/job/serialnumber adapters for lookups)

The CallContextBpmData data shows in the message box.
image

The CallContextBpmData is blank on form load of the BPM Data Form.

Is there another way to pass data into the BPM form?

	// Begin Wizard Added EpiDataView Initialization
		EpiDataView edvBPMData = ((EpiDataView)(this.oTrans.EpiDataViews["BPMData"]));
		// End Wizard Added EpiDataView Initialization

		EpiDataView edvCallContextBpmData = (EpiDataView)(this.oTrans.EpiDataViews["CallContextBpmData"]);
		string strShortChar01 = edvCallContextBpmData.dataView[edvCallContextBpmData.Row]["ShortChar01"].ToString();
		string strShortChar02 = edvCallContextBpmData.dataView[edvCallContextBpmData.Row]["ShortChar02"].ToString();
		edvBPMData.dataView[edvBPMData.Row]["ShortChar01"] = strShortChar01;
		edvBPMData.dataView[edvBPMData.Row]["ShortChar02"] = strShortChar02;

Add this:

edvBPMData.dataView[edvBPMData.Row].BeginEdit();
edvBPMData.dataView[edvBPMData.Row]["ShortChar01"] = strShortChar01;
edvBPMData.dataView[edvBPMData.Row]["ShortChar02"] = strShortChar02;
edvBPMData.dataView[edvBPMData.Row].EndEdit();

Looks like the CallContextBpmData is blank coming in.

Right, but isn’t that why you’re trying to set it in the customization?
What’s in ShortChar01/02? Is that something that can be coded into the UI or is it specific from the calling form?

Might be easier to show the whole function.

We have BPMData and CallContextBpmData dataviews in play.

	private void SetExtendedProperties()
	{

		// Begin Wizard Added EpiDataView Initialization
		EpiDataView edvBPMData = ((EpiDataView)(this.oTrans.EpiDataViews["BPMData"]));
		// End Wizard Added EpiDataView Initialization

		EpiDataView edvCallContextBpmData = (EpiDataView)(this.oTrans.EpiDataViews["CallContextBpmData"]);
		string strCCShortChar01 = edvCallContextBpmData.dataView[edvCallContextBpmData.Row]["ShortChar01"].ToString();
		string strCCShortChar02 = edvCallContextBpmData.dataView[edvCallContextBpmData.Row]["ShortChar02"].ToString();
		edvBPMData.dataView[edvBPMData.Row].BeginEdit();
		edvBPMData.dataView[edvBPMData.Row]["ShortChar01"] = strCCShortChar01;
		edvBPMData.dataView[edvBPMData.Row]["ShortChar02"] = strCCShortChar02;
		edvBPMData.dataView[edvBPMData.Row].EndEdit();
		
		// Begin Wizard Added Conditional Block
		if (edvBPMData.dataView.Table.Columns.Contains("ShortChar01"))
		{
			// Begin Wizard Added ExtendedProperty Settings: edvBPMData-ShortChar01
			edvBPMData.dataView.Table.Columns["ShortChar01"].ExtendedProperties["ReadOnly"] = true;
			edvBPMData.dataView.Table.Columns["ShortChar02"].ExtendedProperties["ReadOnly"] = true;
			// End Wizard Added ExtendedProperty Settings: edvBPMData-ShortChar01
		}
		// End Wizard Added Conditional Block


	}

See if this screen video works. I am passing part and rev as shortchar01/02 from the dashboard to be used by the BPM. The message box are the CallContextBpmData values before the BPM Form call.

Tried a few different things with no joy, so I’ll have to defer to support on this, buuuuuuuuuuuuuuut…

If you want a truly awful work around…
From your BPM, write the values you would normally send to the call context to a UD table and commit it, then in the UI code of your BPM Data Form you could get the latest record and do the thing. :face_vomiting:
Gross? Sure, but it’ll also keep you moving forward towards an upgrade if that’s a showstopper for you.

@hmwillett Thanks for trying.

This is what was removed to use the BPM Form…using a UD table as a messaging queue.

lol What was old, is now new.