cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
forbudt4u
Helper III
Helper III

When an item or a file is modified ignore columns

Hello... PowerAutomate rookie here.  I'm having an issue where an Update Items flow I have running is working correctly.  However, I made a change in the way end users can edit data in our PowerApp, and now the flow is overtaking their edits because it's based on anything changing in the reference list.  The catch is that I can't seem to figure out how to ignore 2 specific columns in the original flow.  I've tried creating a view that doesn't contain the 2 specific columns and having the flow run with the List Columns by View set to the created view... but it doesn't work.  Can someone please guide me in what I'm doing wrong?  

 

Current Flow

 

As you can see I'm looking to see if an item is updated in my Contact List, and if so, the flow will update the referenced All Asset List for the affected updated Contact.  You can also see where I attempted to create a view named "Basic" where I specifically left out the two columns I want the flow to ignore which is PREVIOUS AUDIT & NEXT AUDIT DUE (screen cap below)... but it didn't work.     

Contact Flow.PNG

 

Ignore Columns.png

Explanation/Issue

 

The original flow is intended to monitor the Contact List, and should the condition apply, update any record in my All Asset List for the respective Contact (Holder) if their contact record is updated in the Contact List.  However, there are two columns I added after I set up the flow that are needed to notify me when a Contact/Holder's next Audit is due.  The problem is after I complete an audit this separate flow runs and updates these 2 columns in my Contact List which makes the flow I'm referencing now run because an item in the list has been modified.  When this flow runs, it updates the Location on my All Asset List for the records for that Contact/Holder based on what's listed in their contact record.  However, I don't want it to because the respective Contact's can now manually edit the location's of their assets based on the people they lend them to.  This creates a situation where they could have 100 different items in 30 separate physical locations, but the records are reset to their default location.  You can see this would be a nightmare to fix.  


The Bottom Line

 

If the first When an item or a file is modified action would ignore these two columns (PREVIOUS AUDIT & NEXT AUDIT DUEaltogether, my problem would be solved.

 

Can someone please let me know if this can be resolved in the current flow, or do I need to reinvent the wheel?    

1 ACCEPTED SOLUTION

Accepted Solutions

Hello @forbudt4u ,

No problem, you can try the below solution. It's not ideal but is a work around to solve your problem.

  1. Let us consider Flow A as the main Flow which is working on your Contacts List and Flow B as the one which updates the two mentioned columns.
  2. We want to prevent Flow A from executing the actions in it if the changes are made by Flow B.
  3. Lets create a new List called "Flow B Runs" with just Title or if you want you can add a number column and give the value as 0; add another column "Last Flow Executed" as text one. This List will maintain the number of times Flow B executed and the name of the Flow which ran last.
  4. Let us also maintain new column in Contacts List called "Flow B Runs", this will also maintain the number of times Flow B executed
  5. Now, every time that Flow B executes, it will 
    1. Update the Contacts List
    2. Update the Flow B Runs List with number of runs, keep on adding 1 to the Original Value and update the Last Flow Executed  as "Flow B".
  6. Now in your Flow A, Get the Value of runs from Flow B Runs List and add a condition in the beginning
    1. If the value from Flow B Runs List does not match Flow B Runs column in Contacts List
      1. Update the value of Flow B Runs column in the Contacts List with that from the Flow B Runs List
      2. Update the Last Flow Executed  to "Flow A"
    2. Else if the above condition matches and Last Flow Executed equals "Flow A"
      1. Update the Last Flow Executed to "-"
    3. Else 
      1. Execute your set of actions

Let me explain what we are trying to do here, there will be three types of update actions on Contacts List

  1. Due to Flow B, which we want to ignore thus the If Condition
  2. Due to Flow A when it's only updating Flow B Runs which we again want to ignore, thus the Else if Condition
  3. Due to other updates, in which case we want your set of actions to execute thus the last Else

Let me know if you have any questions or are stuck anywhere. I really hope the steps are clear! 🙂

Please give a Kudo if you found this helpful or Accept this Reply as Solution if it solved your problem.

View solution in original post

5 REPLIES 5
NiloferA
Super User
Super User

Hello @forbudt4u ,

There are two things here

  1. When an Item Created and Modified Trigger, triggers when there is any change in the item irrespective of which column has been changed, this can be controlled using trigger condition in the settings of the trigger
  2. Limit Columns by View will only limit the columns which should be retrieved for the item when the trigger is fired.

Now coming to your situation, there is no specific way in which you can ignore the Columns in the trigger itself, so let me ask you something. Are you using a Service Account or a specific Account for both the Flows?

Maybe what you can do is, check who has modified the item in the trigger, if it has been modified by this account, then don't trigger the Flow because it is a change made by the Flows and not the user.

Let me know if this works for you, else some other tricks need to be applied.

@NiloferA 

 

Well, as it's currently set up, the flow itself is run by a service account.  I'm the admin, so I would be the one updating the contact itself, and in that situation, I would want the flow to run because I am updating the location and/or asset site for the contact and need the flow to update all of the respective contact's asset records.  Now, when it comes to the audit, an individual user can close out an audit (self-audit), which would in-turn, update the two columns to reflect the respective dates.   But, again, the issue is I also perform the majority of the audits so the flow would also trigger under my name.  This audit closeout update would also ALWAYS be triggered by clicking a button in PowerApps, but a contact update would ALWAYS be triggered in the SharePoint list.  I'm not sure if this info helps, but thought I would mention it.    

Hello @forbudt4u ,

No problem, you can try the below solution. It's not ideal but is a work around to solve your problem.

  1. Let us consider Flow A as the main Flow which is working on your Contacts List and Flow B as the one which updates the two mentioned columns.
  2. We want to prevent Flow A from executing the actions in it if the changes are made by Flow B.
  3. Lets create a new List called "Flow B Runs" with just Title or if you want you can add a number column and give the value as 0; add another column "Last Flow Executed" as text one. This List will maintain the number of times Flow B executed and the name of the Flow which ran last.
  4. Let us also maintain new column in Contacts List called "Flow B Runs", this will also maintain the number of times Flow B executed
  5. Now, every time that Flow B executes, it will 
    1. Update the Contacts List
    2. Update the Flow B Runs List with number of runs, keep on adding 1 to the Original Value and update the Last Flow Executed  as "Flow B".
  6. Now in your Flow A, Get the Value of runs from Flow B Runs List and add a condition in the beginning
    1. If the value from Flow B Runs List does not match Flow B Runs column in Contacts List
      1. Update the value of Flow B Runs column in the Contacts List with that from the Flow B Runs List
      2. Update the Last Flow Executed  to "Flow A"
    2. Else if the above condition matches and Last Flow Executed equals "Flow A"
      1. Update the Last Flow Executed to "-"
    3. Else 
      1. Execute your set of actions

Let me explain what we are trying to do here, there will be three types of update actions on Contacts List

  1. Due to Flow B, which we want to ignore thus the If Condition
  2. Due to Flow A when it's only updating Flow B Runs which we again want to ignore, thus the Else if Condition
  3. Due to other updates, in which case we want your set of actions to execute thus the last Else

Let me know if you have any questions or are stuck anywhere. I really hope the steps are clear! 🙂

Please give a Kudo if you found this helpful or Accept this Reply as Solution if it solved your problem.

View solution in original post

@NiloferA 

 

Okay, so I didn't exactly go the route you suggested, but your suggestion had me rethink what I was doing and it allowed me to simplify your solution a bit to get the same result.  I basically just added a condition at the beginning of my update contact flow to only run if the Location was NOT EQUAL to the Location after an update.  That way, if the update is a result of a closed audit where it would only update the two columns I want to ignore, the condition will not be met, and therefore, not run.  But, run if I manually update the contact's Location in the contact list.  Thanks for your suggestion as it got my wheels spinning.  

Glad to be of help! @forbudt4u 

Helpful resources

Announcements
UG GA Amplification 768x460.png

Launching new user group features

Learn how to create your own user groups today!

Community Connections 768x460.jpg

Community & How To Videos

Check out the new Power Platform Community Connections gallery!

M365 768x460.jpg

Microsoft 365 Collaboration Conference | December 7–9, 2021

Join us, in-person, December 7–9 in Las Vegas, for the largest gathering of the Microsoft community in the world.

Users online (2,511)