Kinetic 2023.1 PublishInfoMessage not working anymore

Hi All,

We have recently updated Epicor to Kinetic 2023.1 (We were using Kinetic 2022.1) today I continue debugging some code I left pending before the update and noticed that all PublishInfoMessage are not working anymore.
Here’s my code.

this.PublishInfoMessage(
                "TEST",
                Ice.Common.BusinessObjectMessageType.Information,
                Ice.Bpm.InfoMessageDisplayMode.Individual,
                "",
                ""
            )

This is what i have tried a and hasn’t worked:

  • Clearing all the code leaving only the PublishInfoMessage part
  • Using grid instead of individual message
  • Asked a coworker to show a message from his code
    Also read new article: What’s New in This Release - Controlled Release Version but there is nothing related to this.

Hope someone knows anything about this.

The InfoMessage box now has debug only checkbox I wonder if its defaulted On

2 Likes

The message widget does have that flag but have you tried setting that flag in c# code instead of the widget?
I thought that maybe this flag would do something but It doesn’t.

Worked fine for me 2023.1


            var messageTextBuilder = new System.Text.StringBuilder();
            
            messageTextBuilder.Append("Process: ");
            messageTextBuilder.Append(this.callContextClient.ProcessId);
            messageTextBuilder.Append("\r\nAssembly: ");
            messageTextBuilder.Append(this.callContextClient.AssemblyName);
            
            var messageText = messageTextBuilder.ToString();
        
            this.PublishInfoMessage(messageText, Ice.Common.BusinessObjectMessageType.Information, Ice.Bpm.InfoMessageDisplayMode.Individual, "ABCCode", "Update");
2 Likes

Are you trying to call a messagebox from a function?

Depending on how it is called, it can show up, but many times it won’t be triggered.
The UI has to have a way to catch it.

3 Likes

Yes, from a function. I know it worked before the upgrade. :thinking: I’m placing @josecgomez snippet in different parts of my function to see it works.

Okay the PublishInfoMessage works in a method directive. (Payment Entry → Update)

I’d replace the entire function with just a message box.

Are you sure? Are you testing it the same exact way?

Yes, no code modifications. Just called my function as usual to see where I left it at (Messages will give me information) but nothing showed up.

Which is how?

Click a custom button to select data from payment entry table and show it in a message.
I replaced the retireved text for a fixed value “TEST”.
Also replaced the whole code for the snippet Jose provided.
Nothing worked.

Classic or Kinetic?

How do you know the function fired?

Kinetic.
I know the function is fired because I can thwo an exception from it.



throw new Ice.Common.BusinessObjectException(
                new Ice.Common.BusinessObjectMessage("TEST")
                    {
                        Type = Ice.Common.BusinessObjectMessageType.Error,
                    });

image

Let’s isolate it a bit further.

Make a new layer on a completely different screen and call it.

Also, if you open up the dev-tools in the browser, you should be able to find where the function was called in the network tab. Look in the response headers under CallContext.

You should see if data is being returned. If it is in there, something else is wrong.

Look at this picture from this post:

I’m not sure that Info message was ever supposed to work in a function… Functions are mostly to be invoked via REST I’m not sure how that would translate to a Kinetic Layer… It seems you said it worked before :thinking: but from a design perspective it doens’t make sense to me.

Epicor functions are independent of the UX

We have abrand new instance aht uses kinetic 2022.2 I will try with that version and let you know.

Rule #1 of Functions, and Directives, is put a try…catch block around your code. My guess is some of your other code is throwing and failing silently.