Power Apps help - response type from JSON?

So, I’m pretty stinkin’ proud of this - I’m working on a “time card” app. I implemented this labor detail function and the app has dropdowns and such that are powered by BAQs.

It’s functional (if not done yet), but when I call the Epicor Function, it thinks the response is a Boolean.

Well, it’s not. I have the EFx to return the LaborHedSeq and LaborDtlSeq (for now). So, how do I get the actual values out of the response and into the Power App?

I have learned that there is a Response “action” in Flow, but I don’t know how to use it… Is that the answer, though, or am I barking up the wrong tree entirely?

Power App:

Power Automate Flow:

@jdewitt6029 do you recall?

@utaylor , I do not. I just know I spent a lot of time on creating a PowerApp that integrated with Epicor (not with Epicor Functions) and got so so close but in the end I was missing some key pieces that I just could not overcome. I do not remember if this was one of them. It has been a year but this was my conclusion back then: https://www.epiusers.help/t/powerapps-and-epicor/67622/5

I remember @Mark_Wonsil telling me at a EUG meeting that he also played around with PowerApps and had some frustrations. Maybe he was able to overcome them and can offer suggestions.

I should also add that MS changed their licensing on me while i was working on it and it became way too expensive to roll it out anyway. The ROI was not there. … i still don’t think it is based on the cost of PowerApps, at least if you require a gateway to onprem.

1 Like

I think if I tinker around with it a little more I can get it. As I think about it now, I might be able to use a “compose” block to turn the response into an array, and maybe go from there. I’ll try that tomorrow when I’m in the office.

I learned that that’s how you get the results of a BAQ into a power app “collection.”

I have no experience with anything like this, but it does seem like the costs add up fast.

But I’m not really a coder, so this is nice…

This stopped us too. I’m just not sure what comes with your M365 Licensing. I think they restrict sharing your apps with others unless you get the Premium license. I’m at a different company but want to revisit it soon.

Thanks Joe!

Right, so there are two options, as I understand this:

  1. Give each user a $40/month plan to use (unlimited?) shared apps
  2. Give users a $10/month PER APP plan to use selected apps (and you would manually assign app “passes”)

And don’t forget in the background you’ve got Power Automate (Flow) that has a 5,000 transaction/day cap unless you want to pay for more. “Transaction” does not equal “flow run.” A flow run can use dozens of transactions.

The plan/hope for us is to put this only in the hands of the supervisors and have them do the time entry periodically, all day, from their phones. I think it’s still cheaper than what we do now, which is

  • Have a hundred employees write on paper
  • Have someone spend an hour or two every day typing that all into a spreadsheet
  • Chase down missing cards/time/employees
  • Review errors
  • Track down the supervisors for what it was supposed to say
  • Actually get a job made for the work that was done

And don’t forget in the background underneath Power Automate is Logic Apps, which is completely PaaS. You straight out pay for usage after a generous free amount of calls per month. It’s better for company-wide workflows where Power Automate seems more useful for Power (:thinking: ) Users.

I fall on this side of Microsoft’s chart:

image

1 Like

You claim to be on that side of the chart, but even attempting (and succeeding!) to create a Power Apps application shows aptitude for understanding development.
It’s truly freeing to realize you can actually create your own applications with free tech to solve your problem. In this case, it looks like you’ve got a UI and then you’re making some calls to Epicor with the inputs. I personally see no reason at all why you shouldn’t attempt (if you want) this with a basic web app and host it internally.

3 Likes

Humor me - what do you mean by that?

And thanks for the encouragement.

1 Like

In this case, I am envisioning an application you build with a JavaScript framework (something like Angular would work nicely with the path Epicor is on) to create a browser app user interface.
This is the portion your users interact with and enter the data, click buttons, etc. The app would use that data input to call your functions, BAQs, etc. to make things happen in Epicor.

The web app route is nice because you can distribute it internally very easily and host it internally, so no need to mess with application gateways etc. Everyone (internally) already has a web browser so no need to mess with client installs.

Obviously there is a learning curve associated with it, but it would fit well with the path Epicor is already on and it would be a great skill to have.

Angular Tutorial for Beginners: Learn Angular & TypeScript - YouTube

2 Likes

Oh KAY, that was ridiculous! Got it figured out finally.

#1 - The action I need is… Respond to PowerApps! It’s its own thing.

Expand for pic

#2 - It’s buggy!

I get responses...

But not in the App

image

Turns out that “numbers” don’t actually work. Well… UNLESS you make the first and last response as strings and then couch the number between them. (See this thread and jump to the last post for the solution.) Or just send the number as text instead and be done with it.

#3 - A tip: when changing Flows that are already connected to your Power Apps, always delete the connection and re-add it - and make sure to copy (to Notepad) the text of all formulas that use the connection.

1 Like

@Aaron_Moreng I think it is worthwhile to learn how to code using angular or whatever other language to create a webapp. I think it is equally as powerful to learn lowcode/no code integrations like power apps given the ability to distribute them and scale them quickly. It also caters to beginners like me who have no idea how to code yet offers some of the same (generalizing here) functionality as coding your own. I find it isn’t as flexible as coding your own though which is what @JasonMcD is running into… having to play by their rules.

Either way you go, it is all exciting and hats off to you @JasonMcD… you have been doing a ton lately!

1 Like

For sure. To each their own! I am a DIYer for basically everything in my life anyways so it’s a good fit for me, but doesn’t mean it’s a good fit for everyone.
I have found in these low code type platforms that the second you need some functionality that is standard to make an application work, it’s usually a paid feature. They design it with the intent to get you interested and make it look easy, but then when the rubber hits the road, the paid features become apparent.

2 Likes

100% agree man!

I want to start learning web apps from scratch seeing the way epicor is going. It is not my strong suite though so it’s always time consuming. Worth it though.

2 Likes

If you know C# look at Blazor. I realize Epicor has gone Angular but I wrote a app using Razor Pages a couple years ago and had to learn HTML, CSS and JavaScript (jQuery) which was fine at the time. I am a pretty much self taught programmer so when MS came out with Blazor it removed a lot of the need to know JavaScript for UI interaction, and if you do need JavaScript there is a interop. I then wrote a couple more apps using Blazor and it did make creating the app easier for me since I was only partially versed in JavaScript. You can check Blazor out here Blazor | Build client web apps with C# | .NET

3 Likes

Just to expand on this, the flow looks like this:

Click to see pic

From Swagger, I get the response JSON (I use top 1 results for simplicity)

{
  "@odata.context": "https://URL-Stuff",
  "value": [
    {
      "Indirect_IndirectCode": "ICLN",
      "Indirect_Description": "Cleaning - Indirect",
      "Indirect_ExpenseCode": "ICLN",
      "RowIdent": "bf86e375-b752-4496-b735-d999d5f3b9ef"
    }
  ]
}

Here’s the tricky part. When you do “Generate from Sample” on the Response block, you want to copy and paste ONLY from [ to ] (from square bracket to square bracket). So I pasted this:

[
    {
      "Indirect_IndirectCode": "ICLN",
      "Indirect_Description": "Cleaning - Indirect",
      "Indirect_ExpenseCode": "ICLN",
      "RowIdent": "bf86e375-b752-4496-b735-d999d5f3b9ef"
    }
]

That’s different than what you use for the Parse JSON step!

Then you call the flow from the Power App like so:
ClearCollect(IndirectList, IndirectCodes.Run())

  • ClearCollect() makes a “collection”
  • IndirectCodes.Run() calls the flow
  • IndirectList is the name of the collection that I will use throughout the app

Like this drop-down:

I’m writing a mobile app to do this, but I’ve been considering using Power Automate for other in-house tasks that we have around.

Appreciate the documentation of your process!

2 Likes