Hello Guys,
I'm just new to Sharepoint and Flow and honestly, I have zero background in excel codings, logic, formulas, etc. (I'm not an IT guy). But I have been interested with automation which enhances processes and handoffs in the nature of my work.
So I created a list in sharepoint and I used the "When a new item is created or modified"
My list contains the following column:
Name: Single line of text, required field
Request Type: Single line of text, required field
Assinged to: Choice
Date Started: Date
Date Completed: Date
Status: Choice
So what I did with my workflow is, when a new item is created, it automatically sends an email to admin and fill up the status field to For Acceptance. Then the recepeint of the email edits the list and assigns to appropriate user and triggers the flow updates the item field status to Accepted and sends a new email informing that the request has been assigned. Once the task has been assigned, assigned user edits the date started then flow updates the status to In Progress. Once the user is done, he/she populates the Date completed and flow will trigger to update the status to Completed and send an email to the requestor that the request has been completed.
Problem:
Everytime the list item is modified, it triggers all the email actions, meaning if I enter data in Date completed, it sends email 1, 2, and 3. What more is that sometimes I receive 40+ emails. Im quessing because the action "Update an item", I have to populate the required fields which could have triggered "send an email" action multiple times (my original list has 6 required fields and 3 "update an item" action).
I have attached my sample list I created and the its behaviour whenever I update an item. Sorry, I'm not in the office yet and I do not have access to the site in my personal computer. Kindly help me on this one.
Thank you,
anabananei
Solved! Go to Solution.
Workaround that I did as I don't have a concrete solution as of now. The only way to do it is to triger the flow manually by using "For a selected item". I achieved this on a SharePoint list. I have a button that when I click it, it does lots of things including sending of email. ANd the good news is that, whoever ticked the button, he/she will be the sender of email. Just make sure to include the persons you want to be as a flow owner. There is also a way to include a button in SharePoint Library. I haven't tried it but I'm planning to.
Here is the reference link for the buttons in SharePoint: https://wonderlaura.com/2018/07/18/button-in-sharepoint-list-to-trigger-microsoft-flow/
I tweaked several codes there so I could replace buttons everytime I click a certain button to perform a certain task. My SharePoint list has three buttons, each with different assigned flows that are placed in the same column. After I ticked the first button, the first flow will trigger and once certain conditions are met, it will dissappear and is repalced by the 2nd button which have a different flow until it gets to my third button. (My buttons include Assign, Start, Submit).
Let me know if you need any help.
Thanks!
Can you post a screen shot of your Flow? That will make it much easier to assist.
Scott
Hi Scott,
Thank you very much for your reply. Below is the flow I made. I know something is wrong but I just can't figure it out. And since I am using the "When an item is created or modified" the triggers for item created might also trigger when the item is modified. Is there a way to stop a certain action when condition is met. I tried using a switch case but I cannot figure out how to enter the value for the Case especially if the value I will be using is a choice or a date.
Flow should be:
New item created in list > Auto update status to For Acceptance > Send email notification to admin > admin edit list and assigns it to a user > Auto update Status to accepted > assigned user edit list and enter Date started > Auto updates the status to In Progress > assigned user edit list and enter date completed > auto update status to completed and send completion email to requestor.
Flow Overview
To stop the Flow from from running when the item is modified, immediately after the trigger, have an if statement that compares the created and modified columns, If they are not the same, exit the Flow with a control terminate action.
Can you be more specific about what isn't working properly?
Scott
Actually, every all email actions are triggered when I update a certain item. Maybe because I'm lacking the terminate control. The problem is that I don't know how to do it yet, and also how to formulate my If statement. If you could give me an example, I could figure it out.
Also, by looking at my flow, is it okay to have 3 consecutive decisions? I tried using switch case but I have trouble populating the "Case equals" value since my "Switch On" value is a Dynamic content choice. Is there a way to fill this field by using the Dynamic content "Assigned to Value"?
Ana
Hi @anabananei,
I think your issue is related to the trigger of your flow. The "When an item is created or modified" trigger would be fired when a new item is created or an existing item is modified. The "Update item" actions within your flow would fire the trigger again. So your flow would be trapped into a infinite loop.
I have made a test on my side, please take a try with the following workaround:
@not(empty(body('Get_item')?['Assigned_x0020_to']))
The Count property set to empty and Timeout property set to P30D.
Within "Do Until" action, add a "Get item" action, specify Site Address and List Name, Id field set to ID dynamic content of the trigger.
@not(empty(body('Get_item_2')?['Date_x0020_Started']))
The Count property set to empty and Timeout property set to P30D.
Within "Do Until 2" action, add a "Get item 2" action, specify Site Address and List Name, Id field set to ID dynamic content of the trigger.
@not(empty(body('Get_item_3')?['Date_x0020_Completed']))
The Count property set to empty and Timeout property set to P30D.
Within "Do Until 3" action, add a "Get item 3" action, specify Site Address and List Name, Id field set to ID dynamic content of the trigger.
Image reference:
The flow works successfully as below:
Best regards,
Kris
Hi Kris,
Thank you for your suggestion. I tried to recreate your flow and I received an error when I left the value for Count as blank. The error are as follow:
WorkflowRunActionUntilLimitInvalid. The provided 'until' limit count value '0' is not valid. The count must be a positive integer no larger than '5000'.
When I changed the Count value to "1", the flow ran successfuly. However, it went straight to the last action even though I just created an item (not yet updating the Assigned to, Date Started, Date Completed). Is it possible to add an if function and add a control terminate action just as @ScottShearer mentioned above? The Email 2 and Email 3 should only be triggered once I have updated the "Assigned to" and Date "Completed" respectively.
If it isn't a bother, can you also explain what is the meaning of Count and Timeout property means? And what values should I consider when populating values on it? And I was thinking if the column name that I should input in the Do until action is the internal column name from the address bar. Please confirm. I very much appreciate your help.
Thank you,
Ana
Posting another response. My first response suddenly dissappeared.
Hi Kris,
Thank you for providing your insights. It was helpful. I tried to recreate the flow you created but I got an error message when I left the Count Property blank.
When I changed the value of Count to "1", the flow ran successfully. However, When I tried creating an actual new item in the list, but all actions were triggered and were performed from start to finish--Sending Email 2 and Email 3; Updating item 1-4. The problem is Send an Email 2 and Update item 2 should only be triggered when "Assigned to" has been modified. And Send an Email 3 and Update Item 4 will be triggered when "Date Completed" has been modified. Is it possible to add a condition or switch case for it so that the Send an Email actions won't be triggered at the same time?
Also, is it true that the value for column name in the Do until action should be the internal column name? If so, is the column name found in the address bar in the list settings the correct one to use? See below:
And if its not a bother, is there a guide on how to populate the Count and Time Out in the Do until action?
Thank you,
Ana
Hi @v-xida-msft,
I tried your flow again and it worked! The only problem is that, actions will not be triggered when a new item is created and the existing ones are not yet done completed. Example: When I input value to "Date Completed" it should trigger the "Send an email" action. However, if I have yet to input the value to "Date Completed", and I added a new item in the list, the flow of the previous item will stop and a new flow will be initated for the new item that I just entered.
I saw a response form @v-yamao-msft to add a condition to send an email whenever a certain tem is modified. But I don't know exactly how to do it. The link is at: https://powerusers.microsoft.com/t5/Building-Flows/Flow-update-to-SharePoint-list-item-fields-trigge...
Also, I read a post of a workaround for "When an item is created or modified". It prevents the flow to be on a loop but instead the actions will only trigger twice. But I don't really want that to happen on my flow. My flow involves of sending multiple email messages and I don't want to spam the affected users by trigerring the actions twice. Are there any other ways to address the issue?
I saw one of your posts here: https://powerusers.microsoft.com/t5/General-Flow-Discussion/Flow-running-thousands-of-times-on-SP-qu...
I hope you could help me on this one.
Many thanks!
Ana
Workaround that I did as I don't have a concrete solution as of now. The only way to do it is to triger the flow manually by using "For a selected item". I achieved this on a SharePoint list. I have a button that when I click it, it does lots of things including sending of email. ANd the good news is that, whoever ticked the button, he/she will be the sender of email. Just make sure to include the persons you want to be as a flow owner. There is also a way to include a button in SharePoint Library. I haven't tried it but I'm planning to.
Here is the reference link for the buttons in SharePoint: https://wonderlaura.com/2018/07/18/button-in-sharepoint-list-to-trigger-microsoft-flow/
I tweaked several codes there so I could replace buttons everytime I click a certain button to perform a certain task. My SharePoint list has three buttons, each with different assigned flows that are placed in the same column. After I ticked the first button, the first flow will trigger and once certain conditions are met, it will dissappear and is repalced by the 2nd button which have a different flow until it gets to my third button. (My buttons include Assign, Start, Submit).
Let me know if you need any help.
Thanks!
Hi!
I tried replicating this. The first flow successfully ran, but when i tried inserting a condition and replicated the same flow under "If No" condition, it's giving me the error below:
User | Count |
---|---|
16 | |
16 | |
14 | |
9 | |
8 |
User | Count |
---|---|
27 | |
26 | |
24 | |
23 | |
14 |