Morning all,
Hope you are all well.
I have built an app within which operators record their work. They log into the app, start a job, sometimes pause that job, and then finish it. I have two data tables in sharepoint, one which holds data they capture on the job 'Production Database' and one which records a time stamp at the start and end, and each time they pause 'Production Data Times' which allows me to see the amount of hours actually spent working on a job.
To start a job I use the following:
NewForm(Form_job_running); SubmitForm(Form_job_running); If(IsBlank(Form_job_running.Error), UpdateContext({JobStatus:"Running"}); UpdateContext({JobRunning:true}); Patch('Production Data Times', { Job_MO: label_jobmo_1.Text, Start: Now(), Job_ID: DataCardValue20.Text, job_pause_count: DataCardValue5.Text } ); Patch('Production Database', First(Filter('Production Database',ID=Value(DataCardValue20.Text))), {Job_Start: Now() } ); Refresh('Production Database'))
The creates a new form, checks that theres no errors in submission and then patches some data to the 'Production Data Times' table. this function works perfectly as expected every time.
To pause a job, I use the following:
UpdateContext({JobSaving:true}); UpdateContext({JobStatus:"Paused"}); Patch('Production Data Times', First(Filter('Production Data Times',Job_ID=DataCardValue20.Text, job_pause_count=DataCardValue5.Text,End=Blank())), {End: Now(), Operator: dropdown_user.Selected.Value } ); SubmitForm(Form_job_running); UpdateContext({ReloadJob:false}); Refresh('Production Database'); Patch('Production Database',First(Filter('Production Database',ID=Value(DataCardValue20.Text))), { job_pause_count: DataCardValue5 +1 } ); UpdateContext({JobSaving:false}); Navigate(Screen_mainmenu,ScreenTransition.Fade)
For some reason, the two patch functions fail to run sometimes. The first is supposed to use the unique record ID from 'Production Database' which I pull into powerapps to find the unique start record ascociated with this job and patch an end time. The second patch function is supposed to add one to the pause count (allowing the next resume to have a unique identifier). These functions work fine most of the time but there are a few instances where they simply dont seem to do anything even though the submit form goes through.
Looking at the two tables, all other data is there excpet the end time and operator. When the job is resumed it goes ahead and creates a new record but this old orphaned one remains. I cannot recreate the issue and cannot find anything in the forumulas to suggest there is anything wrong.
I wondered whether sometimes powerapps gets a bit carried away and skips functions, or whether maybe the submit form function stops the patch function before its finished. I wondered about adding some sort of delay function inbetween to rule this out but can't find anything.
Do you have any ideas?
Thanks in advance and apologies for the long post. If I had a potato I'd offer one.
Hi @Anonymous,
I think this issue maybe related to the SubmitForm() function. When the SubmitForm() function executes successfully, all Data Cards values reset to their default values within the EditForm of your PowerApps app.
You could consider take a try to initialize a variable to store the Job_ID value and job_pause_count value within your PowerApps app.
The Onselect property of the Start job button set to following formula:
NewForm(Form_job_running);
UpdateContext({Job_ID_variable:DataCardValue20.Text});
UpdateContext({job_pause_count_variable:DataCardValue5.Text}) SubmitForm(Form_job_running); If(IsBlank(Form_job_running.Error), UpdateContext({JobStatus:"Running"}); UpdateContext({JobRunning:true}); Patch('Production Data Times', { Job_MO: label_jobmo_1.Text, Start: Now(), Job_ID: DataCardValue20.Text, job_pause_count: DataCardValue5.Text } ); Patch('Production Database', First(Filter('Production Database',ID=Value(DataCardValue20.Text))), {Job_Start: Now() } ); Refresh('Production Database'));
The OnSelect property of the Pause job button set to following formula:
UpdateContext({JobSaving:true}); UpdateContext({JobStatus:"Paused"}); Patch('Production Data Times', First(Filter('Production Data Times',Job_ID=Job_ID_variable, job_pause_count=job_pause_count_variable,End=Blank())), {End: Now(), Operator: dropdown_user.Selected.Value } ); SubmitForm(Form_job_running); UpdateContext({ReloadJob:false}); Refresh('Production Database'); Patch('Production Database',First(Filter('Production Database',ID=Value(DataCardValue20.Text))), { job_pause_count: DataCardValue5 +1 } ); UpdateContext({JobSaving:false}); Navigate(Screen_mainmenu,ScreenTransition.Fade)
Please take a try with above solution I provided and let me know if it could solve you problem.
Best regards,
Kris
Hi Kris,
Thank you very much for taking the time to read through my post and suggest a solution.
The Job_ID fields on the form read directly from sharepoint so their default value is correct and not changed within powerapps. I like your suggestion of using a context variable, however the operators sometimes have more than one job running at a time and therfore the context variable would be overwritten with potentially the wrong data. Also, given this only happens rarely, if there was a problem with the submitform function, wouldn't it effect every submit?
I have a feeling that the submit form function is taking too long to complete and the app is giving up execuing the rest but I could be totally wrong.
Do you have any ideas?
Sorry, I didn't bother to read all the text, but I looked at your code. I do not understand the combination NewForm, SubmitForm and Patching in you're solutions why not just do only the Patch() formula.
Further I would do the validating before the patch, instead off handeling errors on submitting wrong data. See my code below for an example.
UpdateContext({ValidateForm:true}); //Here your checks. Where errors, wil set the ValidateForm to false If(ValidateForm, UpdateContext({JobRunning:true}); Patch('Production Data Times', ,Defaults('Production Data Times'), { Job_MO: label_jobmo_1.Text, Start: Now(), Job_ID: DataCardValue20.Text, job_pause_count: DataCardValue5.Text } ); Patch('Production Database', LookUp('Production Database',ID=Value(DataCardValue20.Text)), {Job_Start: Now() } ); Refresh('Production Database')) )
Also I would skip the Jobstatus variable and just make a variable called JobPaused and set this to true/false. You then do you're logic on the JobRunning, JobPaused and other booleans. If there are to many options you should replace tehe text by a number, so 1 = New, 2 = Running, 3 = Paused, simple because is easier to check against an integer.
Other reasons for not patching:
Job_ID: Value(DataCardValue20.Text)
job_pause_count: Value(DataCardValue5.Text) +1
So Basically you should make the formula leaner to start with. What you can do to test is to split the formula up in part and place them under other buttons, which you then call with a select() formula. Know that when one line in you're formula breaks then the rest is not runned and by splitting it up you can adress this (so basically only a part off you're tasks will not run on an error)
Hope this helps.
Greatings,
Paul
I saw those two after my post and probably you want to set them on creating, which is the reason to newform and submitform. Maybe this works (add it after the patch):
UpdateContext({Job_ID_variable:Last('Production Data Times').ValueToStore}); UpdateContext({job_pause_count_variable:Last('Production Data Times').ValueToStore})
When it is possible that multiple records are patch on the same time, then you could check for the creator. Like:
UpdateContext({Job_ID_variable:Last(Filter('Production Data Times', CreatedBy = 0365ID).ValueToStore}); UpdateContext({job_pause_count_variable:Last(Filter('Production Data Times, CreatedBy = 0365ID').ValueToStore})
Hi Paul,
Thank you very much for taking the time to read through.
You are correct in your assumptions. The newform followed by a submit form create a unique entry in the sharepoint table. Each unique entry has a sharepoint ID, I am using this as my job ID to ensure each job is traceable across both tables.
The context variables cannot be combined as it exists that many different combinations of true/false may occur, it is not one or the other.
I will try adding defaults to the patches and then also adding the value function to my formulas and report back. Breaking the formula down won't work as it only fails 1/20 times (ish) and breaking the formulas apart it works every time.
Dear Community Members, We'd like to let you know of an upcoming change to the community platform: starting July 16th, the platform will transition to a READ ONLY mode until July 22nd. During this period, members will not be able to Kudo, Comment, or Reply to any posts. On July 22nd, please be on the lookout for a message sent to the email address registered on your community profile. This email is crucial as it will contain your unique code and link to register for the new platform encompassing all of the communities. What to Expect in the New Community: A more unified experience where all products, including Power Apps, Power Automate, Copilot Studio, and Power Pages, will be accessible from one community.Community Blogs that you can syndicate and link to for automatic updates. We appreciate your understanding and cooperation during this transition. Stay tuned for the exciting new features and a seamless community experience ahead!
We are excited to announce the Summer of Solutions Challenge! This challenge is kicking off on Monday, June 17th and will run for (4) weeks. The challenge is open to all Power Platform (Power Apps, Power Automate, Copilot Studio & Power Pages) community members. We invite you to participate in a quest to provide solutions in the Forums to as many questions as you can. Answers can be provided in all the communities. Entry Period: This Challenge will consist of four weekly Entry Periods as follows (each an “Entry Period”) - 12:00 a.m. PT on June 17, 2024 – 11:59 p.m. PT on June 23, 2024 - 12:00 a.m. PT on June 24, 2024 – 11:59 p.m. PT on June 30, 2024 - 12:00 a.m. PT on July 1, 2024 – 11:59 p.m. PT on July 7, 2024 - 12:00 a.m. PT on July 8, 2024 – 11:59 p.m. PT on July 14, 2024 Entries will be eligible for the Entry Period in which they are received and will not carryover to subsequent weekly entry periods. You must enter into each weekly Entry Period separately. How to Enter: We invite you to participate in a quest to provide "Accepted Solutions" to as many questions as you can. Answers can be provided in all the communities. Users must provide a solution which can be an “Accepted Solution” in the Forums in all of the communities and there are no limits to the number of “Accepted Solutions” that a member can provide for entries in this challenge, but each entry must be substantially unique and different. Winner Selection and Prizes: At the end of each week, we will list the top ten (10) Community users which will consist of: 5 Community Members & 5 Super Users and they will advance to the final drawing. We will post each week in the News & Announcements the top 10 Solution providers. At the end of the challenge, we will add all of the top 10 weekly names and enter them into a random drawing. Then we will randomly select ten (10) winners (5 Community Members & 5 Super Users) from among all eligible entrants received across all weekly Entry Periods to receive the prize listed below. If a winner declines, we will draw again at random for the next winner. A user will only be able to win once overall. If they are drawn multiple times, another user will be drawn at random. Individuals will be contacted before the announcement with the opportunity to claim or deny the prize. Once all of the winners have been notified, we will post in the News & Announcements of each community with the list of winners. Each winner will receive one (1) Pass to the Power Platform Conference in Las Vegas, Sep. 18-20, 2024 ($1800 value). NOTE: Prize is for conference attendance only and any other costs such as airfare, lodging, transportation, and food are the sole responsibility of the winner. Tickets are not transferable to any other party or to next year’s event. ** PLEASE SEE THE ATTACHED RULES for this CHALLENGE** Week 1 Results: Congratulations to the Week 1 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Community MembersNumber of SolutionsSuper UsersNumber of Solutions @anandm08 23 @WarrenBelz 31 @DBO_DV 10 @Amik 19 AmínAA 6 @mmbr1606 12 @rzuber 4 @happyume 7 @Giraldoj 3@ANB 6 (tie) @SpongYe 6 (tie) Week 2 Results: Congratulations to the Week 2 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Community MembersSolutionsSuper UsersSolutions @anandm08 10@WarrenBelz 25 @DBO_DV 6@mmbr1606 14 @AmínAA 4 @Amik 12 @royg 3 @ANB 10 @AllanDeCastro 2 @SunilPashikanti 5 @Michaelfp 2 @FLMike 5 @eduardo_izzo 2 Meekou 2 @rzuber 2 @Velegandla 2 @PowerPlatform-P 2 @Micaiah 2 Week 3 Results: Congratulations to the Week 3 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Week 3:Community MembersSolutionsSuper UsersSolutionsPower Apps anandm0861WarrenBelz86DBO_DV25Amik66Michaelfp13mmbr160647Giraldoj13FLMike31AmínAA13SpongYe27 Week 4 Results: Congratulations to the Week 4 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Week 4:Community MembersSolutionsSuper UsersSolutionsPower Apps DBO-DV21WarranBelz26Giraldoj7mmbr160618Muzammmil_0695067Amik14samfawzi_acml6FLMike12tzuber6ANB8 SunilPashikanti8
On July 16, 2024, we published the 2024 release wave 2 plans for Microsoft Dynamics 365 and Microsoft Power Platform. These plans are a compilation of the new capabilities planned to be released between October 2024 to March 2025. This release introduces a wealth of new features designed to enhance customer understanding and improve overall user experience, showcasing our dedication to driving digital transformation for our customers and partners. The upcoming wave is centered around utilizing advanced AI and Microsoft Copilot technologies to enhance user productivity and streamline operations across diverse business applications. These enhancements include intelligent automation, AI-powered insights, and immersive user experiences that are designed to break down barriers between data, insights, and individuals. Watch a summary of the release highlights. Discover the latest features that empower organizations to operate more efficiently and adaptively. From AI-driven sales insights and customer service enhancements to predictive analytics in supply chain management and autonomous financial processes, the new capabilities enable businesses to proactively address challenges and capitalize on opportunities.
We're embarking on a journey to enhance your experience by transitioning to a new community platform. Our team has been diligently working to create a fresh community site, leveraging the very Dynamics 365 and Power Platform tools our community advocates for. We started this journey with transitioning Copilot Studio forums and blogs in June. The move marks the beginning of a new chapter, and we're eager for you to be a part of it. The rest of the Power Platform product sites will be moving over this summer. Stay tuned for more updates as we get closer to the launch. We can't wait to welcome you to our new community space, designed with you in mind. Let's connect, learn, and grow together. Here's to new beginnings and endless possibilities! If you have any questions, observations or concerns throughout this process please go to https://aka.ms/PPCommSupport. To stay up to date on the latest details of this migration and other important Community updates subscribe to our News and Announcements forums: Copilot Studio, Power Apps, Power Automate, Power Pages