I have a Flow that automatically creates project folders in a document library on SharePoint based on a form response and I need different folders to have different default column values to make use of searching using metadata. The Folder structure is Client/Location/Project so I want the folders in the client folder to have a default value of the client, the location to have default values of client & location and I want the project folder to have default of the previous as well as the project number.
The issue i'm having is that I can set the default column value for the library but I run into issues when I try to set the default values of the subfolders. The error i'm receiving is "List 'xxxxxxxxxx/xx xxxxxx' does not exist at site with URL 'https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'.
clientRequestId: c2e9facc-fe0d-4caf-a611-25f2c6fe21b8
serviceRequestId: 28bfa59f-5061-b000-a4fc-4d19b87acc90"
See screenshot below of configuration:
Any help would be appreciated!
Thanks,
Hi @bthomas,
For me it's not entirely clear if you want to update the default value of a column or if you just want to update the metadata of a list item, in this case a folder.
So, I have created REST API examples for both scenarios. Hope this helps a bit?
1. Update the default value of a document library field. In this case I am setting the default value of the field to Contoso Sports.
URI
_api/web/lists/GetByTitle('@{variables('LibraryName')}')/Fields/getbytitle('@{variables('FieldName')}')
Headers
{
"Accept": "application/json;odata=verbose",
"Content-Type": "application/json;odata=verbose",
"X-HTTP-Method": "MERGE",
"IF-MATCH": "*"
}
Body
{
"__metadata": {
"type": "SP.Field"
},
"DefaultValue": "Contoso Sports"
}
2. Update the value of that same field for an item in the document library. In this example I am first retrieving the ListItemEntityTypeFullName. I am using that value for the type in the second request. In this case I am setting the value of the field of the folder item to Contoso.
URI
_api/web/lists/GetByTitle('@{variables('LibraryName')}')?$select=ListItemEntityTypeFullName
Headers
{
"Accept": "application/json;odata=nometadata"
}
URI
_api/web/lists/getByTitle('@{variables('LibraryName')}')/items(1)
Headers
{
"content-type": "application/json; odata=verbose",
"accept": "application/json; odata=verbose",
"IF-MATCH": "*",
"X-HTTP-METHOD": "MERGE"
}
Body
{
"__metadata": {
"type": "@{outputs('Send_an_HTTP_request_to_SharePoint_-_ListItemEntity')?['body/ListItemEntityTypeFullName']}"
},
"@{variables('FieldName')}": "Contoso"
}
Thank you for your detailed reply, for the 2nd one I get an error saying "Invalid JSON. A comma character ',' was expected in scope 'Object'. Every two elements in an array and properties of an object must be separated by commas."
However, the main issue I have and need resolving is setting a default value in a column specifically for the project name subfolder e.g. Contoso/ProjectName
Thanks,
I think I have the same need as the original poster - who did not seem to have gotten his issue resolved.
We are trying to use Power Automate to set the default column value at the folder level. Ie. corresponding to the following UI in Sharepoint - Not the general default value for the column in the document library.
Any ideas on how to achieve this?
I'm assuming this was never resolved?
Is there a restapi that allows us to set this setting?
There are a few open threads around this request and I figured it out today so thought I'd drop what I figured...
And, a warning:
🔥TWO LIBRARIES DIED IN THE MAKING OF THIS POST 🔥
Don't try this on a Prod library! Test it out and get it working first. (Luckily I wasn't as stupid as I normally am and only tried in test sites.)
First, my goal was to set default values on sub-folders.
Here is my Flow:
One caveat - this won't work until you've modified one default, as this seems to create the file in the background. (For myself, I have one piece of Library metadata that will default across the board, so I am going to see if I can just set that through API on its own - but wanted to post this first. UPDATE: Updating one default didn't work to trigger the HTML creation. Oh well.)
Step 1) Initialize a string variable.
Step 2) Get the client_LocationBasedDefaults.html content.
Step 3) I have a Compose for step 3, but that's just because it kept failing based on everything I was reading, so I wanted to look at what the DEFAULT output was from this file. If you want to see, you will do this in a Compose:
<MetadataDefaults><a href="/sites/Intranet/TestDefaults/Test1"><DefaultValue FieldName="TextTest">bad</DefaultValue></a><a href="/sites/Intranet/TestDefaults/Test2"><DefaultValue FieldName="TextTest">good</DefaultValue></a></MetadataDefaults>
Step 5) Cram it back into the file and rejoice.
Here's what it looks like, with some more complex sends... showing that it inherits properly.
I've never been so happy to see those horrible little green gears. Flowers? They kind of look like ICQ flowers.
PS: This works with MMD as well but you need to structure it as -1;#LABEL|LABELGUID
I answer questions on the forum for 2-3 hours every Thursday!
Thank you so much for this! I did get it to work by testing what you provided above. However, when I'm trying to do multiples of the same folder on different site columns, it completes, but only changes the first one. Any idea of my error?
<MetadataDefaults>
<a href="/sites/Projects/TestDefaults/Test1"><DefaultValue FieldName="State">TX</DefaultValue></a>
<a href="/sites/Projects/TestDefaults/Test1"><DefaultValue FieldName="Vesper Dept">Projects</DefaultValue></a>
<a href="/sites/Projects/TestDefaults/Test2"><DefaultValue FieldName="State">CA</DefaultValue></a>
<a href="/sites/Projects/TestDefaults/Test2"><DefaultValue FieldName="Vesper Dept">Projects</DefaultValue></a>
</MetadataDefaults>
Thank you for you blogpost.
In my flow, a new folder is created and then I want to set the default values for the columns.
I can run the flow successfully and the default values are set on the newly created folder, however, the the default values of the previously created folders are deleted.
In my case the file "client_LocationBasedDefaults.html" is overwritten, so that only the folder created in the flow has a default value.
How do I make sure the new value is added in to the current client_LocationBasedDefaults.html file instead of creating a new client_LocationBasedDefaults.html every time.
You can just create a condition to query for that file - if it finds it, then, just copy the text out and append your updates. If it doesn't, then, create a new one.
I answer questions on the forum for 2-3 hours every Thursday!
Thanks for this post but i have given it many tries doing exactly as you do but i am unable to get this working in anyway. I am able to get this working in powershell PNP (i am at the point to just build a function app for this).
It is a crucial function to have so is there perhaps more information you can give or test if this still works as expected
When you have multiple for the same folder, the syntax is different. Try something like this:
Okay y'all, buckle up. I know this is more than two years old but it's basically the only post I found while trying to do this so hopefully this saves someone else the headache.
All kudos to @Rhiassuring whose work above was the foundation for this post. I literally would not have known where to start without them.
Here's how I figured out how to add new defaults to the existing defaults. Important note here that these steps assume the client_LocationBasedDefaults.html file already exists, which it will not unless at least one column default has been set through the UI. In my use-case I do not have a need to programmatically create new client_LocationBasedDefaults.html files, only update the existing one for an existing library, so I did not spend time trying to figure that out.
Step 1. Get the path to your client_LocationBasedDefaults.html file
Go to your SharePoint site’s document library (at the top level) through a web browser and then copy the URL, it will look something like this:
https://mycompanyonline.sharepoint.com/sites/mysubsite/LibraryName/Forms/AllItems.aspx
or
https://mydomain.sharepoint.com/sites/intranet/LibraryName/Forms/AllItems.aspx
Now replace the “AllItems.aspx” at the end of your URL with “client_LocationBasedDefaults.html” like
https://acmecorponline.sharepoint.com/sites/RR-Catalog/Shared%20Documents/Forms/client_LocationBasedDefaults.html
Step 2. Add the “Send an HTTP request to SharePoint” action in your Flow. Pick your site and GET as the method. For a URL like my above example, the Uri would be as follows:
_api/Web/GetFileByServerRelativePath(decodedurl='/sites/RR-Catalog/Shared%20Documents/Forms/client_LocationBasedDefaults.html ')/$value?binaryStringResponseBody=true
Don’t populate Headers or Body sections.
Step 3. Modify the existing client_LocationBasedDefaults.html content to be able to use later.
The output of Step 2 is going to be the current folder defaults for that library. It will look something like this: (line breaks added for readability – don’t put line breaks in your actual Flow!)
<MetadataDefaults>
<a href=\"/sites/RR-Catalog/Shared%20Documents/Anvils\"><DefaultValue FieldName=\"Class\">Anvil</DefaultValue></a>
<a href=\"/sites/RR-Catalog/Shared%20Documents/Disguises\"><DefaultValue FieldName=\"Class\">Costume</DefaultValue></a>
<a href=\"/sites/RR-Catalog/Shared%20Documents/Cooking%20Utensils\"><DefaultValue FieldName=\"Class\">Appliance</DefaultValue></a>
<a href=\"/sites/RR-Catalog/Shared%20Documents/Jets%20%26%20Motors\"><DefaultValue FieldName=\"Class\">Transport</DefaultValue></a>
</MetadataDefaults>
We need to insert our new defaults into this file before the </MetadataDefaults> closing tag, and we need to remove all the backslashes (\) - the string you put together to put in the HTTP request later should have NO backslashes in it. Don't replace them - remove them. Use a compose and nest a decodeBase64 formula within the replace formula:
replace(decodeBase64(body(‘Step_2_Action’)?['$content']), '\', '')
Then we need to remove the closing Metadata tag so that we can append our changes in a later step:
substring(outputs('Previous_Compose'),0,sub(length(outputs('Previous_Compose'')),19))
Step 4. Determine your new defaults.
All of the folders in the above example are located at the top level of the library. As you go deeper into the folder structure the syntax of the metadata defaults simply extends the URL. For example, “Shared Documents > Jets & Motors > Jet Bike Kit” would be:
<a href=\"/sites/RR-Catalog/Shared%20Documents/Jets%20%26%20Motors/Jet%20Bike%20Kit\"><DefaultValue FieldName=\"Class\">Transport</DefaultValue></a>
Notice how Jet Bike Kit became Jet%20Bike%20Kit and Jets & Motors became Jets%20%26%20Motors? If you are building your own path out of dynamic values in Flow, you have to account for the required formatting. Replace all spaces with %20:
replace({dynamicvalue}, ‘ ’, ‘%20’)
Look out for other types of special characters in your folder names. Don't have any if you can help it, but if you do you will have to replace them with what SharePoint actually sees - look at the URL you get when you navigate to that folder in the library to get an idea of what SharePoint sees as the actual folder path and name. Once you know that, you can add steps in the flow to replace or remove certain special character from the dynamic values before you plug them into your final string. In this case, we know that & = %26, so we would write a replace formula for the & symbol:
replace({dynamicvalue}, ‘&‘, ‘%26’)
This only applies to the path, the default value itself does not need to be transformed.
In my scenario, I am updating a folder’s metadata based on values in a list item. The list items are categorized by the top-level folders, meaning I have a field on the list that tells me if the item is Anvils, Disguises, Cooking Utensils, or Jets & Motors. So, I would do something like this:
replace(replace(triggerOutputs()?['body/Class'], ‘ ’, ‘%20’), ‘&’, ‘%26’)
replace(triggerOutputs()?['body/Title'], ‘ ’, ‘%20’)
<a href="/sites/RR-Catalog/Shared%20Documents/@{outputs('Compose_Path_Class')}/@{outputs('Compose_Path_Title')}"><DefaultValue FieldName="SKU">@{triggerOutputs()?['body/SysID']}</DefaultValue></a>
Step 4a. What if I want to add more than one default value to a folder?
If you need to set multiple defaults for the same folder, you need to do that within the <a> tag, so you wouldn’t close the tag until you’ve covered them all. Add more by adding additional <DefaultValue> tags after the URL. For example:
<a href=\"/sites/RR-Catalog/Shared%20Documents/ Jets%20%26%20Motors/Tennis%20Balls\"><DefaultValue FieldName=\"Class\">Transport</DefaultValue><DefaultValue FieldName=\"Department\">Sports</DefaultValue></a>
In this case you would likely want to build each <DefaultValue FieldName=\"{column}\">{defaultvalue}</DefaultValue> statement separately and then combine them all into one statement with the folder path. I prefer compose actions over variables, but it may make more sense to have a string variable and an append to string variable action if you have a lot of default values you want to add to a single folder.
Step 4b. What if I want to update more than one folder at a time?
If you will be adding multiple folders in one flow, that basically equates to adding multiple lines. I would recommend using an apply to each if possible (and/or call a subflow) to go through the steps to modify and combine your default values for each folder you would want to update. In this scenario, you would have to add an additional action after my Compose New Path that is an append to string variable so that your output will capture all the options. Then wherever I am plugging in outputs('Compose_New_Path') you would plug in the string variable.
Step 5. Combine the existing with the new.
This is thankfully a simple concat:
concat(outputs('Compose_LocationBasedDefaults'), outputs('Compose_New_Path'), ‘</MetadataDefaults>’)
Step 6. Upload it back to SharePoint
Use the “Send an HTTP request to SharePoint” action again, with PUT as the Method and a Uri like:
_api/Web/GetFileByServerRelativePath(decodedurl='/sites/RR-Catalog/Shared%20Documents/Forms/client_LocationBasedDefaults.html ')/$value
In the body, enter the output from your concat in Step 5.
In my flow I ended up combining a bunch of these steps, but I would strongly recommend you create each one separately first and make sure it works on a test library before doing that yourself. I would also recommend saving the original output from the first HTTP request and adding that into a compose while you’re building it, because as you test you will be appending on to your previous tests, which can compound mistakes and make it hard to tell when you’ve succeeded. If you have the OG code ready in a compose, you can swap that output back into your flow in between real tests to ‘reset’ the file.
Hi all! You mentioned that it works for Managed Metadata Column, but we need specific template 1;#LABEL|LABELGUID. But I don't understand where we can find the first number. With random number it doesn't work. Do you know the secret, how we need to set those values?)
Go to the Term Store (where you created the Managed Metadata in the first place - can be found by adding /_layouts/15/SiteAdmin.aspx#/termStoreAdminCenter to the end of your site address) click on the term you want the ID for, then click on the "Usage settings" tab and copy the Unique identifier:
Then you want it formatted like this:
Apptio|310483e1-56b3-4f66-a014-7bd52c0362fd
This is what you will need whenever referencing the Managed Metadata basically anywhere that's not a user interface - like if you want to Switch on it in a Power Automation flow, the Case would be in that same format.
Both posts here from @Rhiassuring and @RathwynAE were great here and I was almost there.
I have created a Team create form in a powerapp that querys the Term Store for the Customer so that the users can have their documents automatically tagged from the start.
I got as far as being able to set the managed metadata default value on to a column, but when testing, the documents are not being 'tagged' and the values when clicking on the column in the default column values settings, the defaul setting is not actually set.
I tried creating the client_LocationBasedDefaults.html file, but had no luck. It really feels like that is the key. Manually setting it isnt a solution as the customer wants this flow to skip needing to touch the site before handing it over to the owners.
Anyone got any ideas about creating that file?
Hi Karina,
From my work this week, i have found that that number is always '-1', so you can build the structure in a compose action. It may have not been working as you were using '1'?
Are you attending the Microsoft Power Platform Conference 2023 in Las Vegas? If so, we invite you to join us for the MPPC's Got Power Talent Show! Our talent show is more than a show—it's a grand celebration of connection, inspiration, and shared journeys. Through stories, skills, and collective experiences, we come together to uplift, inspire, and revel in the magic of our community's diverse talents. This year, our talent event promises to be an unforgettable experience, echoing louder and brighter than anything you've seen before. We're casting a wider net with three captivating categories: Demo Technical Solutions: Show us your Power Platform innovations, be it apps, flows, chatbots, websites or dashboards... Storytelling: Share tales of your journey with Power Platform. Hidden Talents: Unveil your creative side—be it dancing, singing, rapping, poetry, or comedy. Let your talent shine! Got That Special Spark? A Story That Demands to Be Heard? Your moment is now! Sign up to Showcase Your Brilliance: https://aka.ms/MPPCGotPowerSignUp Deadline for submissions: Thursday, Sept 28th How It Works: Submit this form to sign up: https://aka.ms/MPPCGotPowerSignUp We'll contact you if you're selected. Get ready to be onstage! The Spotlight is Yours: Each participant has 3-5 minutes to shine, with insightful commentary from our panel of judges. We’re not just giving you a stage; we’re handing you the platform to make your mark. Be the Story We Tell: Your talents and narratives will not just entertain but inspire, serving as the bedrock for our community’s future stories and successes. Celebration, Surprises, and Connections: As the curtain falls, the excitement continues! Await surprise awards and seize the chance to mingle with industry experts, Microsoft Power Platform leaders, and community luminaries. It's not just a show; it's an opportunity to forge connections and celebrate shared successes. Event Details: Date and Time: Wed Oct 4th, 6:30-9:00PM Location: MPPC23 at the MGM Grand, Las Vegas, NV, USA
The Reading Dynamics 365 and Power Platform User Group is a community-driven initiative that started in September 2022. It has quickly earned recognition for its enthusiastic leadership and resilience in the face of challenges. With a focus on promoting learning and networking among professionals in the Dynamics 365 and Power Platform ecosystem, the group has grown steadily and gained a reputation for its commitment to its members! The group, which had its inaugural event in January 2023 at the Microsoft UK Headquarters in Reading, has since organized three successful gatherings, including a recent social lunch. They maintain a regular schedule of four events per year, each attended by an average of 20-25 enthusiastic participants who enjoy engaging talks and, of course, pizza. The Reading User Group's presence is primarily spread through LinkedIn and Meetup, with the support of the wider community. This thriving community is managed by a dedicated team consisting of Fraser Dear, Tim Leung, and Andrew Bibby, who serves as the main point of contact for the UK Dynamics 365 and Power Platform User Groups. Andrew Bibby, an active figure in the Dynamics 365 and Power Platform community, nominated this group due to his admiration for the Reading UK User Group's efforts. He emphasized their remarkable enthusiasm and success in running the group, noting that they navigated challenges such as finding venues with resilience and smiles on their faces. Despite being a relatively new group with 20-30 members, they have managed to achieve high attendance at their meetings. The group's journey began when Fraser Dear moved to the Reading area and realized the absence of a user group catering to professionals in the Dynamics 365 and Power Platform space. He reached out to Andrew, who provided valuable guidance and support, allowing the Reading User Group to officially join the UK Dynamics 365 and Power Platform User Groups community. One of the group's notable achievements was overcoming the challenge of finding a suitable venue. Initially, their "home" was the Microsoft UK HQ in Reading. However, due to office closures, they had to seek a new location with limited time. Fortunately, a connection with Stephanie Stacey from Microsoft led them to Reading College and its Institute of Technology. The college generously offered them event space and support, forging a mutually beneficial partnership where the group promotes the Institute and encourages its members to support the next generation of IT professionals. With the dedication of its leadership team, the Reading Dynamics 365 and Power Platform User Group is poised to continue growing and thriving! Their story exemplifies the power of community-driven initiatives and the positive impact they can have on professional development and networking in the tech industry. As they move forward with their upcoming events and collaborations with Reading College, the group is likely to remain a valuable resource for professionals in the Reading area and beyond.
As the sun sets on the #SummerofSolutions Challenge, it's time to reflect and celebrate! The journey we embarked upon together was not just about providing answers – it was about fostering a sense of community, encouraging collaboration, and unlocking the true potential of the Power Platform tools. From the initial announcement to the final week's push, the Summer of Solutions Challenge has been a whirlwind of engagement and growth. It was a call to action for every member of our Power Platform community, urging them to contribute their expertise, engage in discussions, and elevate collective knowledge across the community as part of the low-code revolution. Reflecting on the Impact As the challenge ends, it's essential to reflect on the impact it’s had across our Power Platform communities: Community Resilience: The challenge demonstrated the resilience of our community. Despite geographical distances and diverse backgrounds, we came together to contribute, learn, and collaborate. This resilience is the cornerstone of our collective strength.Diverse Expertise: The solutions shared during the challenge underscore the incredible expertise within our community. From intricate technical insights to creative problem-solving, our members showcased their diverse skill sets, enhancing our community's depth.Shared Learning: Solutions spurred shared learning. They provided opportunities for members to grasp new concepts, expand their horizons, and uncover the Power Platform tools' untapped potential. This learning ripple effect will continue to shape our growth. Empowerment: Solutions empowered community members. They validated their knowledge, boosted their confidence, and highlighted their contributions. Each solution shared was a step towards personal and communal empowerment. We are proud and thankful as we conclude the Summer of Solutions Challenge. The challenge showed the potential of teamwork, the benefit of knowledge-sharing, and the resilience of our Power Platform community. The solutions offered by each member are more than just answers; they are the expression of our shared commitment to innovation, growth, and progress! Drum roll, Please... And now, without further ado, it's time to announce the winners who have risen above the rest in the Summer of Solutions Challenge! These are the top community users and Super Users who have not only earned recognition but have become beacons of inspiration for us all. Power Apps Community: Community User Winner: @SpongYe Super User Winner: Pending Acceptance Power Automate Community: Community User Winner: @trice602 Super User Winner: @Expiscornovus Power Virtual Agents Community: Community User Winner: Pending AcceptanceSuper User: Pending Acceptance Power Pages Community: Community User Winner: @OOlashyn Super User Winner: @ChristianAbata We are also pleased to announced two additional tickets that we are awarding to the Overall Top Solution providers in the following communities: Power Apps: @LaurensM Power Automate: @ManishSolanki Thank you for making this challenge a resounding success. Your participation has reaffirmed the strength of our community and the boundless potential that lies within each of us. Let's keep the spirit of collaboration alive as we continue on this incredible journey in Power Platform together.Winners, we will see you in Vegas! Every other amazing solutions superstar, we will see you in the Community!Congratulations, everyone!
Ayonija Shatakshi, a seasoned senior consultant at Improving, Ohio, is a passionate advocate for M365, SharePoint, Power Platform, and Azure, recognizing how they synergize to deliver top-notch solutions. Recently, we asked Ayonija to share her journey as a user group leader, shedding light on her motivations and the benefits she's reaped from her community involvement. Ayonija embarked on her role as a user group leader in December 2022, driven by a desire to explore how the community leveraged various Power Platform components. When she couldn't find a suitable local group, she decided to create one herself! Speaking about the impact of the community on her professional and personal growth, Ayonija says, "It's fascinating to witness how everyone navigates the world of Power Platform, dealing with license constraints and keeping up with new features. There's so much to learn from their experiences.: Her favorite aspect of being a user group leader is the opportunity to network and engage in face-to-face discussions with fellow enthusiasts, fostering deeper connections within the community. Offering advice to budding user group leaders, Ayonija emphasized the importance of communication and consistency, two pillars that sustain any successful community initiative. When asked why she encourages others to become user group leaders, Ayonija said, "Being part of a user group is one of the best ways to connect with experienced professionals in the same field and glean knowledge from them. If there isn't a local group, consider starting one; you'll soon find like-minded individuals." Her highlight from the past year as a user group leader was witnessing consistent growth within the group, a testament to the thriving community she has nurtured. Advocating for user group participation, Ayonija stated, "It's the fastest route to learning from the community, gaining insights, and staying updated on industry trends." Check out her group: Cleveland Power Platform User Group
Hear from Corporate Vice President for Microsoft Business Applications & Platform, Charles Lamanna, as he looks ahead to the second annual Microsoft Power Platform Conference from October 3rd-5th 2023 at the MGM Grand in Las Vegas.Have you got your tickets yet? Register today at www.powerplatformconf.com
We wanted to take the time to celebrate and welcome the new user groups that have joined our community. Along with that take a look at the event that might be happening near you or virtually. Please welcome: Biz Apps Community User Group - Power Platform Community (microsoft.com) This user group is dedicated for all community members of all skill levels to learn how to get the most out of their community experience. East Michigan Power Platform User Group - Power Platform Community (microsoft.com) This is hopefully the beginning of a community, covering eastern Michigan, built around the Power Platform. Biz Apps Community User Group This user group is dedicated for all community members of all skill levels to learn how to get the most out of their community experience. Events to checkout: In-Person: September 2023 Hybrid Philadelphia Dynamics 365 & Power Platform User Group MeetDynamics 365 and Power Platform Physical Meetup Hyderabad Power Platform User Group Meetup - Sept 2023 (In-Person)Manchester September 2023 In Person Meeting Virtual: Everything Dataverse, Do you know that Dataverse is more than just a Database!POWER PLATFORM MONTHLY DIGEST- SEPTEMBERBaltic Summit 2023PL-900 Power Platform Fundamentals TrainingHR and L&D transformation through Power PlatformDynamics 365 Marketing Experience User Groups - Use Cases and NetworkingPower Platform and Dual Write from Dynamics 365 F&O PerspectiveANZ D365 FinOps Team September 2023 meetup
User | Count |
---|---|
65 | |
31 | |
29 | |
28 | |
25 |
User | Count |
---|---|
86 | |
79 | |
56 | |
49 | |
48 |