Tag: Automation
posts
Automate SharePoint Document Set Configuration with PowerShell
Introduction Document Sets in SharePoint are a powerful way to manage groups of related documents as a single entity. They enable you to apply metadata, workflows, and permissions to a collection of documents, making them ideal for project folders, case files, or any scenario where you need to keep related content together.
This post shows how to automate the configuration of Document Sets across multiple libraries using PnP PowerShell.
Why Use Document Sets?
posts
Creating an OpenAPI Specification for Microsoft 365 Copilot Declarative Agents to Interact with SharePoint Lists
Introduction In this blog post, I demonstrate how to create an OpenAPI specification for interacting with a SharePoint list using Microsoft Graph for integration with Microsoft 365 Copilot Declarative Agents. The list in question was created using the tracker template. This approach allows you to define and document API interactions, making it easier to integrate with tools like Teams Toolkit or Copilot for automation and extensibility.
Scenario We aim to create an OpenAPI YAML file to interact with the following endpoint:
posts
PnP PowerShell: Enabling and Configuring Document ID in SharePoint
PnP PowerShell: Enabling and Configuring Document ID in SharePoint The Document ID feature in SharePoint is a powerful tool that assigns a unique ID to files, making it easier to reference and track documents. The script within the post activates and configures the Document ID feature using PnP PowerShell. Additionally, it covers the Set-PnPSiteDocumentIdPrefix cmdlet, which simplifies the process of setting a custom prefix for Document IDs.
Why Use Document IDs?
posts
Using OpenAI in Excel and Google Sheets
Using OpenAI in Excel and Google Sheets Integrating OpenAI’s GPT models into Excel or Google Sheets can unlock powerful automation and language processing capabilities. This blog post demonstrates how to use OpenAI’s API to translate text in a spreadsheet cell into French using a script.
Google Spreadsheet Apps Script Example The following script uses OpenAI’s GPT-3.5-turbo model to translate the content of a selected cell into French and outputs the result in the adjacent cell.
Tag: Document Set
posts
Automate SharePoint Document Set Configuration with PowerShell
Introduction Document Sets in SharePoint are a powerful way to manage groups of related documents as a single entity. They enable you to apply metadata, workflows, and permissions to a collection of documents, making them ideal for project folders, case files, or any scenario where you need to keep related content together.
This post shows how to automate the configuration of Document Sets across multiple libraries using PnP PowerShell.
Why Use Document Sets?
Tag: PnP PowerShell
posts
Automate SharePoint Document Set Configuration with PowerShell
Introduction Document Sets in SharePoint are a powerful way to manage groups of related documents as a single entity. They enable you to apply metadata, workflows, and permissions to a collection of documents, making them ideal for project folders, case files, or any scenario where you need to keep related content together.
This post shows how to automate the configuration of Document Sets across multiple libraries using PnP PowerShell.
Why Use Document Sets?
posts
Updating Multiline Text Field Properties in SharePoint Using PowerShell
Introduction Managing multiline text fields in SharePoint can be tricky, especially when certain field properties are not visible or editable at the library/list level, even though they are available at the site level.
For example, at the site level, you can configure properties such as:
Append Changes to Text Number of Lines Field Type: Plain Text, Rich Text, or Enhanced Rich Text However, these settings may not appear at the library/list level, as shown below:
posts
PnP PowerShell: Enabling and Configuring Document ID in SharePoint
PnP PowerShell: Enabling and Configuring Document ID in SharePoint The Document ID feature in SharePoint is a powerful tool that assigns a unique ID to files, making it easier to reference and track documents. The script within the post activates and configures the Document ID feature using PnP PowerShell. Additionally, it covers the Set-PnPSiteDocumentIdPrefix cmdlet, which simplifies the process of setting a custom prefix for Document IDs.
Why Use Document IDs?
posts
Pinning Fields to the Filter Pane in SharePoint Libraries Using PowerShell
Introduction In SharePoint Online, the filter pane is a powerful feature that allows users to quickly filter and find relevant data in libraries and lists. However, by default, not all fields are visible in the filter pane. To enhance usability, you can pin specific fields to the top of the filter pane using PowerShell or the REST API.
This blog post demonstrates how to use PowerShell and the REST API to pin fields to the filter pane in SharePoint libraries.
posts
PowerShell: Identifying SharePoint Site Creation Sources
Introduction Understanding how a SharePoint site was created is crucial for governance, compliance, and troubleshooting. In Microsoft 365, SharePoint sites can be created through various methods, such as Microsoft Teams, Viva Engage, the SharePoint Admin Center, and more. However, identifying the exact creation source can sometimes be challenging.
For example, exporting the list of active sites from the SharePoint Admin Center may not always provide accurate information. Communication sites, for instance, may incorrectly show their creation source as “Microsoft M365 Group,” even though they can only be created from the SharePoint Admin Center.
posts
Managing Microsoft 365 Group Settings with PnP PowerShell and Microsoft Graph
Introduction Managing Microsoft 365 Group settings is crucial for maintaining a compliant and secure environment.PowerShell and Microsoft Graph can be used to configure various group settings, including naming policies, guest access, and more.
As a regular user of PnP PowerShell, I aimed to replicate the functionality of the Microsoft Entra cmdlets for configuring group settings using PnP PowerShell.
Example Script to Update naming policy Settings The following PowerShell script updates the naming group settings using the Microsoft Graph API and PnP PowerShell.
posts
Azure DevOps Spfx Deployment Workload Identity Federation
Introduction Thanks to Kinga Kazala for her timely article Deploy SPFx app using pipeline’s Workload Identity federation, which showcases how to use Workload Identity Federation to alleviate the need for using Entra app secrets or certificates. This method simplifies the setup process, especially when there’s reliance on a single person who might be unavailable.
We initially set up the SPFx pipeline for the Test environment using certificates with CLI for M365.
posts
Restoring Previous Versions of Items in a SharePoint List Using PnP PowerShell
When working with SharePoint lists, there might be times when you need to restore items to a previous version. Whether it’s due to an error, unwanted changes, or simply needing to revert to an earlier state, SharePoint’s versioning feature is a lifesaver. I used the script to undo bulk changes made by a Power Automate flow after the process failed halfway due to some data needing correction. For data integrity, the bulk update needed to be undone before running the Power Automate flow again after the data corrections were made.
posts
Get Drive ID and Drive Item ID for File for Further Microsoft Graph Operations using PnP PowerShell
Introduction When working with files in SharePoint, the drive ID and drive item ID are essential parameters for further manipulation using Microsoft Graph API. The drive ID is a base64 encoded string composed of the site ID, web ID, and list ID for a particular SharePoint library. For more details, refer to Microsoft Graph: Encoding and decoding the drive ID by Mikael Svenson. The item ID part appears to be a base32 encoding of the SharePoint item’s unique ID, though the exact mechanics are still being explored.
posts
Audit Service Principal Access to SharePoint Sites with Sites.Selected Permissions
Ensuring the security and compliance of your SharePoint environment is crucial, especially when dealing with service principals, Entra ID apps, or federated identities. These entities often have elevated permissions that, if mismanaged, can lead to unauthorized access and potential data breaches. Regularly auditing these permissions is a best practice for maintaining a secure and compliant SharePoint environment.
Application only or granular access to individual site instead of whole tenant, scope called “Sites.
posts
Optimizing PowerShell Scripts to check for unique permissions in SharePoint: REST API vs. Get-PnPListItem
When working with large SharePoint sites, checking for unique permissions can be a time-consuming task. This blog post explores methods to optimize PowerShell scripts for fetching property HasUniqueRoleAssignments to determine unique permissions, including using PnP PowerShell and the SharePoint REST API. We compare their performance and highlight the advantages and limitations of each approach.
Using PnP PowerShell PnP PowerShell provides an efficient way to interact with SharePoint Online and retrieve list items to check for unique permissions.
posts
Teamifying an Existing M365 Group with PowerShell
Teamifying an Existing M365 Group with PowerShell Within M365 , SharePoint and Teams together provides a rich collaboaration platform. When a team site is created from SharePoint admin centre, it is not associated with a Teams despite a M365 group is created in the background. To extend SharePoint collaboration features , there is a need to “teamify” an existing Microsoft 365 Group, essentially attaching a new Teams instance to it to allow use of channels and other apps.
posts
Counting Files and folders within SharePoint Libraries using PnP PowerShell
Counting Files and Folders within SharePoint Libraries using PnP PowerShell This post shows a PowerShell script using PnP PowerShell module to count the number of files and folders within a SharePoint library. It might be useful doing an inventory of file count.
$SiteURL = "Counting Files within a SharePoint Library using PnP PowerShell" # Generate a unique log file name using today's date $dateTime = (Get-Date).toString("dd-MM-yyyy") $invocation = (Get-Variable MyInvocation).Value $directorypath = Split-Path $invocation.
posts
Resolving the 'PnP PowerShell Not Digitally Signed' Issue
Resolving the ‘PnP PowerShell Not Digitally Signed’ Issue If you’ve recently upgraded PnP PowerShell to the latest nightly build and are encountering errors when trying to execute any PnP PowerShell cmdlets, this guide is for you.
PS C:\Users\RAuckloo> connect-pnponline -url https://contoso-admin.sharepoint.com -Interactive connect-pnponline: The 'connect-pnponline' command was found in the module 'PnP. PowerShell', but the module could not be loaded due to the following error: [Errors occurred while loading the format data file: \\contoso-it.
posts
Retrieving File Count and Size of a folder using PnP PowerShell
Retrieving File Count and Size of a folder within a SharePoint Library using PnP PowerShell This post covers a PowerShell script that uses the PnP PowerShell module to retrieve the file count and total size of a specific folder within a SharePoint library.
#Parameters $SiteURL = "https://contoso.sharepoint.com/sites/company311" $FolderSiteRelativeURL = "Shared Documents/Test1" #Connect to PnP Online Connect-PnPOnline -Url $SiteURL -Interactive #Get the folder $Folder = Get-PnPFolder -Url $FolderSiteRelativeURL -Includes ListItemAllFields #Get the total Size of the folder - with versions Write-host "Size of the Folder:" $([Math]::Round(($Folder.
posts
Retrieving SiteId from Microsoft Graph for Subsequent API Calls
Retrieving SiteId from Microsoft Graph for Subsequent API Calls This post offers an option to retrieve a SiteId from Microsoft Graph using PnP PowerShell. This can be particularly useful when making further API calls that require the SiteId.
$siteurl = "https://contoso.sharepoint.com/sites/Company311" Connect-PnPOnline -url $siteurl -interactive # for the site url https://contoso-admin.sharepoint.com/teams/app-m365 # Extract the domain and site name $uri = New-Object System.Uri($siteurl) $domain = $uri.Host $siteName = $uri.AbsolutePath # Construct the new URL $RestMethodUrl = "v1.
posts
Restrict certain SharePoint sites from tenant search and M365 Copilot using PowerShell
Excluding certain SharePoint sites from search would mean the contents from the excluded sites won’t be available to M365 tenant search and M365 Copilot using Restricted SharePoint Search feature.
The downsides using this feature are:
Limited Findability: By excluding certain SharePoint sites from search, you limit the findability of data. Users would need to know the specific sites where the data resides in order to search for it. This can hinder efficient data retrieval and records management.
posts
Managing Service Principal Permission Requests using PowerShell
Managing Service Principal Permission Requests using PowerShell Permission to the “SharePoint Online Client” service principal can be granted either in declarative method within SPFx solutions or directly. This post explores how to handle both declarative and direct permission grants using SPO PowerShell , ClI for M365 and PnP PowerShell.
PnP PowerShell Get all service principal permission grants Gets the collection of permission grants for the “SharePoint Online Client” service principal using the cmdlet Get-PnPTenantServicePrincipalPermissionGrants
Tag: SharePoint
posts
Automate SharePoint Document Set Configuration with PowerShell
Introduction Document Sets in SharePoint are a powerful way to manage groups of related documents as a single entity. They enable you to apply metadata, workflows, and permissions to a collection of documents, making them ideal for project folders, case files, or any scenario where you need to keep related content together.
This post shows how to automate the configuration of Document Sets across multiple libraries using PnP PowerShell.
Why Use Document Sets?
posts
Limitations of OpenAPI Spec with Complex Objects in Copilot Declarative Agents
Introduction In a previous post, I detailed the steps for Building a Copilot Agent with Teams Toolkit and Microsoft Graph Plugin to List My ToDo Tasks. However, I encountered issues with the CreateTask function when using an OpenAPI spec generated with Kiota. Upon investigation, I identified the problem as being related to the handling of complex objects, particularly those involving dates. Even after simplifying the object structure, the CreateTask function continued to fail.
posts
Microsoft Graph: Challenges with UserInformationList Search and Filter
Introduction When working with the UserInformationList in SharePoint via Microsoft Graph, you might encounter challenges when trying to search or filter user information. This post highlights the issues I faced while attempting to use $search and $filter queries on the UserInformationList, along with examples and insights within M365 Copilot declarative agent.
Issue 1: Search by Email Did Not Work I attempted to search for a user by their email address using the $search query, but it did not return any results.
posts
Creating an OpenAPI Specification for Microsoft 365 Copilot Declarative Agents to Interact with SharePoint Lists
Introduction In this blog post, I demonstrate how to create an OpenAPI specification for interacting with a SharePoint list using Microsoft Graph for integration with Microsoft 365 Copilot Declarative Agents. The list in question was created using the tracker template. This approach allows you to define and document API interactions, making it easier to integrate with tools like Teams Toolkit or Copilot for automation and extensibility.
Scenario We aim to create an OpenAPI YAML file to interact with the following endpoint:
posts
Power Automate - Trigger a Flow from multiple Libraries/lists and sites
Introduction In this blog post, we’ll explore how to trigger a single Power Automate flow from multiple SharePoint libraries, lists, and sites. This approach is particularly useful for standardizing workflows across different document libraries and sites, avoiding the need to replicate flows multiple times. This not only simplifies maintenance but also streamlines deployment.
The For a selected file or For a selected item trigger action is key to achieving this. While the Manually trigger a flow action was considered, it does not pass the necessary context (site URL, library ID/name, and item ID) to the flow, making it unsuitable for this scenario.
posts
Updating Multiline Text Field Properties in SharePoint Using PowerShell
Introduction Managing multiline text fields in SharePoint can be tricky, especially when certain field properties are not visible or editable at the library/list level, even though they are available at the site level.
For example, at the site level, you can configure properties such as:
Append Changes to Text Number of Lines Field Type: Plain Text, Rich Text, or Enhanced Rich Text However, these settings may not appear at the library/list level, as shown below:
posts
Retrieve Effective Permissions of an user within SharePoint Sites Using PowerShell
Managing permissions in SharePoint can be challenging, especially when users are granted access through various means such as direct permissions, shared links, SharePoint groups, or M365 groups. To simplify this process, you can use the effectivepermissions endpoint to retrieve and analyze permissions assigned to users at the site, list/library, and item/file/folder levels.
This blog post demonstrates how to use PowerShell to identify and retrieve effective permissions for end users across SharePoint sites.
posts
Building a Copilot Agent with Teams Toolkit and Microsoft Graph Plugin to list my ToDo Tasks
Introduction This guide walks you through creating a Copilot agent using Teams Toolkit and Microsoft Graph API. By leveraging OpenAPI specifications, Kiota, and Teams Toolkit, you can build a plugin to interact with Microsoft Graph endpoints. I used the blog post Copilot Graph API QnA Plugin by Franck Cornu as inspiration with some variation to apply it to get my ToDo tasks.
Plugins for Copilot agents rely on OpenAPI specifications. While the complete Microsoft Graph OpenAPI specification exists, it is a massive file (34MB) and not practical for performance reasons.
posts
Troubleshooting Copilot Agent Teams Toolkit M365Graph Plugin Issues
Troubleshooting Copilot Agent Teams Toolkit M365Graph Plugin Issues When building a Copilot agent using Teams Toolkit, you may encounter certain errors that can hinder your progress. This blog post highlights common issues and provides solutions to help you resolve them effectively.
Common Issues and Fixes 1. name_for_human Exceeds 20 Characters Issue: You may encounter the following error when the name_for_human field in the ai-plugin.json file exceeds 20 characters:
name_for_human in PluginManifestDocument has characters beyond the length 20 that MAY be ignored.
posts
Searching Sensitivity Labels in SharePoint
Searching Sensitivity Labels in SharePoint Sensitivity labels are a powerful tool for protecting documents, offering features like watermarks, encryption, and access control at the file level. However, the default Sensitivity column in SharePoint has limitations—it cannot be filtered, indexed, or bulk updated. This blog post explores ways to search for sensitivity label values in SharePoint and highlights some challenges and potential solutions.
Challenges with Sensitivity Labels in SharePoint The crawled managed property InformationProtectionLabelId refers to the sensitivity label’s GUID/ID, which is not user-friendly for end users to easily search.
posts
Power Automate: Retrieve SharePoint Library Internal Name
Power Automate: Retrieve SharePoint Library Internal Name When working with Power Automate, you may encounter scenarios where you need the internal name of a SharePoint library. For example, when creating a file in a library using Power Automate, the internal name is often required. Instead of manually adding the internal name as an environment variable, you can dynamically retrieve it using the Send an HTTP Request to SharePoint action.
This blog post demonstrates how to retrieve the internal name of a SharePoint library using its ID or display name.
posts
PnP PowerShell: Enabling and Configuring Document ID in SharePoint
PnP PowerShell: Enabling and Configuring Document ID in SharePoint The Document ID feature in SharePoint is a powerful tool that assigns a unique ID to files, making it easier to reference and track documents. The script within the post activates and configures the Document ID feature using PnP PowerShell. Additionally, it covers the Set-PnPSiteDocumentIdPrefix cmdlet, which simplifies the process of setting a custom prefix for Document IDs.
Why Use Document IDs?
posts
Finding Storage Nearing Exceeding Quota with PowerShell
Monitoring Storage Quotas with PowerShell Managing storage quotas in Microsoft 365 is critical to ensure uninterrupted service and optimal performance. This blog post demonstrates how to use a PowerShell script to monitor storage usage across SharePoint Online sites and identify sites nearing or exceeding their storage quotas.
Script Overview The script connects to the SharePoint Online admin center, retrieves site storage details, calculates the percentage of storage used, and generates a report for sites exceeding 80% of their allocated storage quota.
posts
Power Automate: Save Run Flow URL to SharePoint List Item
Power Automate: Save Run Flow URL to SharePoint List Item When running a Power Automate flow, capturing and saving the flow’s run URL to a SharePoint list item can simplify troubleshooting and auditing. This allows you to easily revisit the flow run details in case of failures or for review purposes. However, note that flow run URLs are only available for 30 days, so older links may no longer work.
posts
Troubleshooting M365 Tenant Latency Issues
Latency Issues Accessing Microsoft 365 Sites - SharePoint, Admin Center When using a SaaS (Software as a Service) product like Microsoft 365, troubleshooting performance issues can be challenging due to the lack of server-level access. This limitation makes it difficult to analyze network traffic or monitor server resources like CPU, RAM, or storage, which could impact the performance of SharePoint sites.
We were experiencing errors, timeouts, delays, and non-functional features for users.
posts
Pinning Fields to the Filter Pane in SharePoint Libraries Using PowerShell
Introduction In SharePoint Online, the filter pane is a powerful feature that allows users to quickly filter and find relevant data in libraries and lists. However, by default, not all fields are visible in the filter pane. To enhance usability, you can pin specific fields to the top of the filter pane using PowerShell or the REST API.
This blog post demonstrates how to use PowerShell and the REST API to pin fields to the filter pane in SharePoint libraries.
posts
PowerShell: Finding and Deleting Files in SharePoint Libraries
Introduction Managing files in SharePoint libraries can be challenging, especially when dealing with test data or bulk operations. For instance, you may need to find and delete files containing specific names or patterns to reset a testing environment. This blog post demonstrates how to use PowerShell to locate and delete files in SharePoint libraries, including associated data in lists, to streamline the testing process.
In this example, we had PDF files containing a series of receipts that were split into individual files using Power Automate with the Encodian connector.
posts
PowerShell: Identifying SharePoint Site Creation Sources
Introduction Understanding how a SharePoint site was created is crucial for governance, compliance, and troubleshooting. In Microsoft 365, SharePoint sites can be created through various methods, such as Microsoft Teams, Viva Engage, the SharePoint Admin Center, and more. However, identifying the exact creation source can sometimes be challenging.
For example, exporting the list of active sites from the SharePoint Admin Center may not always provide accurate information. Communication sites, for instance, may incorrectly show their creation source as “Microsoft M365 Group,” even though they can only be created from the SharePoint Admin Center.
posts
Embedding Copilot Studio Agent in a SharePoint Page
Introduction Embedding a Copilot Studio Agent within a SharePoint page can significantly enhance user experience by providing seamless access to AI-powered assistance directly within the context of a SharePoint site. While there are examples of achieving this using SPFx (SharePoint Framework), I wanted to explore whether this could be done using out-of-the-box (OOB) features without custom development.
In this blog post, I will walk you through the steps to embed a Copilot Studio Agent into a SharePoint page using the Embed Webpart and site settings.
posts
SharePoint Agent and Responsible AI in Mental Health Support
Introduction Balancing AI safety measures and practical functionality for SharePoint Agents is key for some use cases due to the lack of customisation of the inbuilt content safety against the four categories: harm, self-harm, sex, and hate. A particular use case we wanted to explore was its use for mental health support agents in the form of virtual mental health first aiders. My partner in crime Lee Ford and I explored what we could do without tripping the Responsible AI principles and flagging Content Safety categories.
posts
Exploring Ways to Access SharePoint Agent
Introduction SharePoint Agent is the easiest way to get started with building your own grounded Agents from your SharePoint data. The possibilities are vast, from HR agents to legal agents. If more configuration and features are required, the Copilot Studio or Azure AI Foundry could help.
Each SharePoint site comes with its own default Agent scoped to data within the site. As of today (i.e. March 2025), the default SharePoint agent can’t be modified.
posts
Issues with Default Sensitivity Labels in SharePoint Document Libraries
Introduction Default sensitivity labels can be set at the document library level in SharePoint to help manage and protect your data.
However, there are some limitations and issues that you should be aware of like the default sensitivity label does not automatically update existing files within SharePoint and there might be delay in applying the sensitivity label within M365 app. This is described in the documentation for Configuring a default sensitivity label for a SharePoint document library.
posts
Configuring Default Sharing Links in SharePoint: Ensuring 'Specific People' Access
Introduction Updating the default sharing link from the User Interface at both the site level and tenant level to Specific People (only the people the user specifies) might not work always as expected. This issue could be due to the outdated setting DefaultSharingLinkType being updated behind the scenes.
I tested this on a Team site by updating the default sharing setting from the SharePoint Admin Centre to “People you choose”. However, the default sharing link for new sharing links did not reflect this setting.
posts
Adding M365 Group/Teams Owners and Members to SharePoint Group with PnP PowerShell
Introduction There are situations where you might want to reuse the M365 Group principals to assign permissions to other sites without creating additional Entra ID groups. This can be useful for:
Adding M365 group members to a SharePoint site, such as an intranet site for ‘Human Resources’ managed by the ‘Human Resources’ M365 Group/Teams or a hub site managed by a ‘Service Desk’ M365 Group/Teams. Adding M365 group members to custom or out-of-the-box SharePoint groups, such as adding particular M365 group owners or members to custom groups created for additional libraries within a different site.
posts
Viva Connections Experiences to manage Home Site through REST API
Introduction The SharePoint Home Site experiences have moved to Viva Connections and is managed from the Microsoft 365 admin centre through the Viva Connections admin centre
I started exploring how to manage these SharePoint Home Sites/Viva Experiences using browser’s developer tools, considering I had little luck with the SPO PowerShell, PnP PowerShell, and CLI for M365. These PowerShell experiences will be updated at some point to work with the updated Viva Connections Experience.
posts
Restoring Previous Versions of Items in a SharePoint List Using PnP PowerShell
When working with SharePoint lists, there might be times when you need to restore items to a previous version. Whether it’s due to an error, unwanted changes, or simply needing to revert to an earlier state, SharePoint’s versioning feature is a lifesaver. I used the script to undo bulk changes made by a Power Automate flow after the process failed halfway due to some data needing correction. For data integrity, the bulk update needed to be undone before running the Power Automate flow again after the data corrections were made.
posts
Get Drive ID and Drive Item ID for File for Further Microsoft Graph Operations using PnP PowerShell
Introduction When working with files in SharePoint, the drive ID and drive item ID are essential parameters for further manipulation using Microsoft Graph API. The drive ID is a base64 encoded string composed of the site ID, web ID, and list ID for a particular SharePoint library. For more details, refer to Microsoft Graph: Encoding and decoding the drive ID by Mikael Svenson. The item ID part appears to be a base32 encoding of the SharePoint item’s unique ID, though the exact mechanics are still being explored.
posts
Prevent Guests from Being Added to a Specific Microsoft 365 Group or Microsoft Teams team using PnP PowerShell
Introduction By default, guest access for Microsoft 365 groups is enabled within the tenant. This can be controlled either to allow or block guest access at the tenant level or for individual Microsoft 365 groups / Teams. For more information, check out Manage guest access in Microsoft 365 groups.
PowerShell Script to Prevent Guest Access Below is a PowerShell script that allows you to disable/enable guest access for specific Microsoft 365 groups.
posts
Upgrading SPFx to the Latest Version SPFx 1.20.0 - lessons learned
Introduction With the release of SPFx 1.20.0 in September 2024, I decided to upgrade an existing SPFx solution to the latest version following a post by Microsoft 365 & Power Platform Community on Linkedin This process can be challenging, especially when dealing with dependency version conflicts. In this blog post, I’ll walk you through the steps to upgrade your SPFx solution to version 1.20.0, including installing Node.js 18.18.0, using the CLI for Microsoft 365 to generate upgrade instructions, and addressing common issues.
posts
Fixing SPFx: Unable to Use the Latest Version in scaffolding project
Introduction The SharePoint Framework (SPFx) 1.20.0 has been generally available since September 2024. However, if you work with SPFx, you might encounter issues when trying to use the latest version. SPFx still requires Node.js 18.x.x. In this blog post, I’ll walk you through the steps I took to install Node.js 18.20.4 using NVM, install the SPFx toolchain, and troubleshoot an issue where the project scaffolding defaulted to an older version of SPFx.
posts
Manage 'Everyone' and 'Everyone except external users' claim within a SharePoint site using PowerShell
Introduction As part of Microsoft 365 Copilot readiness, you may want to find where “Everyone and “Everyone except external users” claims are granted permissions which is a cause of oversharing. This blog post will guide you through using PowerShell to manage and audit the “Everyone” and “Everyone except external users” claims within your SharePoint site collection.
For more insights on why the “Everyone except external users” group is riskier than “People in your organization,” refer to Copilot for Microsoft 365 Data Ready – Where “Everyone except external users” group is more risky than “People in your organization” links!
posts
SharePoint - working round restore a library link missing
Introduction Have you ever encountered the frustrating situation where the Restore a library link in SharePoint is missing or inconsistently available? This can be a significant issue when you need to restore a library urgently.
The Problem Typically, you would expect to see the link ‘Restore This Library’ in the SharePoint interface: Restore library
However, in some cases, this link might be missing:
Restore Library Missing
The Workaround After some investigation, I discovered a workaround.
posts
SharePoint Search for Documents: Modified Date and Title of Results
Introduction Have you ever encountered a situation where the search results in SharePoint show incorrect document titles and modified dates? This can be frustrating, especially when you rely on accurate metadata for document management. In this blog post, we’ll explore why this happens and how to resolve it.
Problem Statement A business user reported that the search results for a particular document displayed the wrong name and modified date. Upon investigation, we found that the title and modified date were being pulled from the document properties rather than the metadata shown in the SharePoint library.
posts
Enhanced Version Controls/Intelligent Versioning Trim with PowerShell
Microsoft has introduced Enhanced Version Controls, previously known as Intelligent Versioning, as part of its public preview in May 2024. This feature, detailed in the Microsoft 365 Roadmap 145802, aims to help administrators manage file versions more effectively, reducing storage costs by removing unnecessary versions.
Extract from the Roadmap
We are introducing new version controls that help tenant and site admins or document library owners reduce the storage footprint driven by low value file versions.
posts
Get SharePoint site sharing Settings with PowerShell
Managing sharing settings for SharePoint sites is crucial for maintaining a secure and well-governed environment. With the help of PowerShell, administrators can efficiently retrieve and manage these settings across their SharePoint Online tenant. This ensures that sensitive information is not overshared and that your organisation’s data remains secure.
Importance of Reviewing Sharing Settings Reviewing sharing settings is essential to prevent oversharing, which can lead to data breaches and unauthorized access to sensitive information.
posts
Empowering Secure Collaboration: Configuring SharePoint Tenant and Site Settings with PowerShell to prevent oversharing
Sharing lies at the heart of collaboration within SharePoint, facilitating seamless communication and teamwork. However, effective management of sharing settings is crucial to maintain data security and prevent unintended exposure. This is particularly important in light of tools like M365 Copilot.
An extract from Announcing SharePoint advanced management innovations for the AI and Copilot era
“With Copilot and AI, security has become a concern. Not because Copilot allows people to access anything more than they could previously; it just allows them to find information they have access to faster.
posts
Display instagram posts into SharePoint using Instagram Basic Display Independent Publisher Connector
How to Use the Instagram Basic Display Connector in Power Apps and Power Automate Instagram is a popular social media platform with over 1 billion monthly active users. It is a great platform for sharing photos and videos, and many businesses use it to promote their products and services. With the Instagram Basic Display (IndependentPublisher) connector, you can now easily retrieve data from Instagram accounts and use it in Power Apps and Power Automate.
posts
Optimizing PowerShell Scripts to check for unique permissions in SharePoint: REST API vs. Get-PnPListItem
When working with large SharePoint sites, checking for unique permissions can be a time-consuming task. This blog post explores methods to optimize PowerShell scripts for fetching property HasUniqueRoleAssignments to determine unique permissions, including using PnP PowerShell and the SharePoint REST API. We compare their performance and highlight the advantages and limitations of each approach.
Using PnP PowerShell PnP PowerShell provides an efficient way to interact with SharePoint Online and retrieve list items to check for unique permissions.
posts
Copy SharePoint list structure with data - ALM
If you have built Power Platform solutions using SharePoint as a datasource, you may want to export the list structure along with its data from the source environment (e.g., DEV) and deploy it across different environments such as Test, UAT, and PROD. Fortunately, the PnP Provisioning from PnP PowerShell provides this capability. Power Platform solutions can be deployed using pipelines after the SharePoint structure is deployed.
Export Structure and Data from SharePoint Lists PnP PowerShell makes this process straightforward with Get-PnPSiteTemplate:
posts
Power Automate : Move File bypassing locked issue using CreateCopyJobs endpoint
The SharePoint - Move file action can be used to move files, however the file can’t be moved if the file was accessed by the current Power Automate flow for any processing reslutng in a locked file error.
{ “status”: 400, “message”: “File ‘Shared Documents/Attendances/To Be Processed/Attendance -16072024.xlsx’ cannot be moved because it is in locked mode.\r\nclientRequestId: d6df7566-881f-4f14-8548-c5fac1eda46d\r\nserviceRequestId: 606841a1-40f0-9000-9c69-507df9b21720” }
Handling Locked Files There are two options to handlelocked files when using SharePoint - Move file action:
posts
Getting Storage Metrics for a SharePoint site
Gaining an overview of what takes up space in a SharePoint site is crucial for monitoring large files or a significant number of versions.
Unfortunately, the storage metrics link, <siteurl>/_layouts/15/storman.aspx, won’t work for libraries with more than 5,000 files without nested folders. While this might go against information architecture principles, creating folders is an option to avoid the list view threshold error.
Here’s a PowerShell script to help you get storage metrics for your SharePoint site:
posts
SharePoint Highlighted Content Web Part versus News Web Part: Author versus Editor
The Highlighted Content Web Part and the News Web Part in SharePoint can be used to display news on a page. Both webparts serve different purposes and have distinct features. One particular difference is the display of author in News Webpart and display of editor in the Highlighted Content Web Part.
The Highlighted Content Web Part displays editing details like editor and last updated date with the news information. Unfortunately there is no option to change it to the author name.
posts
Power Automate: Create and Publish a News Link
This post covers how to leverage SharePoint REST API to create and publish a news link from Power Automate using the Send an Http request to SharePoint action.
Within a Power Automate flow follow the steps below to create and publish a news link details.
Send an Http request to SharePoint action renamed to Get Page Details. Site Address : site url Method : GET Uri : /_api/web/lists/GetByTitle(‘Site%20Pages’)/items(10) Parse JSON renamed to Parse Page Details JSON Add the action Parse JSON and refer to the content from previous steps
posts
Power Automate: Retrieve User Details
This post covers how to leverage SharePoint REST API to get user details from Power Automate using the Send an Http request to SharePoint action.
Within a Power Automate flow follow the steps below to retrieve a user details.
Send an Http request to SharePoint action renamed to Get Page Author Details Site Address: https://test.sharepoint.com Method: GET URI: _api/Web/GetUserById(14) Here’s the output from the API:
Here’s the output from the API:
posts
Power Automate: Retrieve Users from a SharePoint Group
This post covers how to leverage SharePoint REST API to get users from a SharePoint group from Power Automate using the Send an Http request to SharePoint action. In the example below a SharePoint Group has been defined for approvers of a particular process and needed to be retrieved to be assigned an approval task.
Within a Power Automate flow follow the steps below to retrieve users from a SharePoint group.
posts
Oversight of Sharing Information in SharePoint sites using PowerShell with CSOM, REST and PnP PowerShell
Effective oversight of sharing links and sharing information are paramount to ensuring data security, compliance, and optimal collaboration experiences.
As organisations migrate to M365 environments, they inherit powerful collaboration tools that facilitate seamless sharing of documents and resources. However, without proper governance, these capabilities can lead to unintended consequences such as data breaches, compliance violations, and loss of intellectual property.
Sharing is a powerful feature for collaboration. However depending on how items, files or folders are shared, a sharing link might be created or unique permissions on these items are created.
posts
Power Automate : Update Author and Editor of a Page
This post outlines how to use Power Automate to update author and editor of a Page within SharePoint using the Send an Http request to SharePoint action.
Within a Power Automate flow, follow the following steps
Add Send an Http request to SharePoint renamed to Update Author Properties Property Value Site Address The SharePoint site URL Method POST Uri See Uri below Headers See Headers table below Body See Body below Uri _api/web/lists/GetByTitle(‘Site%20Pages’)/items(1)/ValidateUpdateListItem()`
posts
SharePoint Portals Site collections Inventory
As part of the M365 Copilot rollout , questions were raised on the /portals/Community and /portals/hub as both ‘Everyone Except External Users’ was granted access raising concerns on the content on the site. These are legacy sites and are currently inaccessible. Historically, these sites were accessible via the legacy SharePoint admin centre, however, they are not available through the modern SharePoint admin centre interface.
Thanks to Gregory Zelfond’s blog post What are all these site collections in SharePoint?
posts
SharePoint Storage Monitoring Against Allocated Quota using PowerShell
There is limited space allocated to the tenant. To ensure business continuity and smooth ongoing operation, it is imperative to keep an eye on its usage and take relevant actions suited to the circumstances. By default a SharePoint site is allocated 25 TB by default and OneDrive for Business site is allocated 1 TB by default. These settings can be amended manually to a different quota to control SharePoint site. The script will help to proactively monitor percent used against quota for each SharePoint site.
posts
Exclude News Links from News WebPart in SharePoint Online
SharePoint Online offers the useful feature of news links to avoid duplication of news articles and promote existing posts across different sites. This is especially beneficial when news creation is enabled for various departments or directorates, allowing them to share significant news organization-wide.
However, the News WebPart might display both the news links and the original articles, resulting in duplicated content.
To manage this, you can utilize the OriginalSourceUrl column, which stores the link to the source news article.
posts
Update Choice values of List Items in SharePoint List
#Parameters $SiteURL = “https://contoso.sharepoint.com/teams/app-ar" $ListName = “Remittances”
$dateTime = (Get-Date).toString(“dd-MM-yyyy”) $invocation = (Get-Variable MyInvocation).Value $directorypath = Split-Path $invocation.MyCommand.Path $fileName = “\RemittanceDuplicateReport-” + $dateTime + “.csv” $OutPutView = $directorypath + $fileName
Connect-PnPOnline -url $SiteURL -Interactive
$ListItems = Get-PnPListItem -List $ListName -PageSize 500 | Where {$_.FieldValues.Month -eq ‘202402’ } #Array for Results Data $DataCollection = @() ForEach($Item in $ListItems) { #Collect data $Data = New-Object PSObject -Property @{ SourceRef = $Item[“DocumentSourceReference”] GroupingRef = $Item[“GroupingReference”] Provider = $Item[“Provider”].
posts
Update Choice values of List Items in SharePoint List
Maintaining up-to-date list items, especially when dealing with choice fields, can be a daunting task sepcially after choice field values are updated. We need a way to update these old values to the correct new ones.
The Challenge SharePoint lists use choice fields to categorise items. Over time, the need to update these choice values can arise, whether due to changes in terminology, business processes, or error correction. Manually updating these values across numerous list items is not only time-consuming but also prone to human error.
posts
Overcoming SharePoint's List View Threshold with CAML Queries in PowerShell
Overcoming SharePoint’s List View Threshold with CAML Queries in PowerShell Encountering the list view threshold error in SharePoint when dealing with lists exceeding 5,000 items is a common challenge. Using CAML queries within PowerShell scripts offers a server-side solution to efficiently filter and retrieve data, yet is prone to the list view threshold error.
Sample script This is the sample PowerShell script querying the specified SharePoint list using CAML query.
posts
Find orphaned choice values in SharePoint list/libraries using PowerShell
Find orphaned choice values in SharePoint list/libraries using PowerShell One common issue is orphaned choice values in SharePoint lists which may affect subsequent update to the list item. This can occur when list items contain values that are no longer valid according to the list’s choice field values. This post covers a PowerShell script to identify these orphaned choice values in SharePoint lists to either update them or add them back to the list of choice field values.
posts
Updating SharePoint Site Logo and Thumbnail with PowerShell
Update SharePoint Site Logo and Thumbnail with PowerShell In SharePoint Online sites, the distinction between the Site Logo and Site Thumbnail is crucial. The site logo appears in the site header, while the site thumbnail is used in search results, site cards, file copying/moving, and other areas.
Both site logo and thumbnail are part of SharePoint branding. This post covers how to update the site logo and thumbnail across multiple SharePoint sites within a hub using PowerShell.
posts
Update Content Type of List Items in SharePoint List
Update Content Type of List Items in SharePoint List A content type in SharePoint is a reusable collection of metadata (columns) allowing to organise, manage and handle content in a consistent way. If the content type of files and items need to be updated because of required changes how particular content have to be managed, it can be a daunting laborious task if done manually. PowerShell can help automating the update of content types and corresponding metadata (columns).
posts
Importing Dates and Numbers from Excel file into SharePoint list with Power Automate
Importing Dates and Numbers from Excel file into SharePoint list with Power Automate Transferring data from Excel to SharePoint lists can encounter format issues, especially with datetime and number fields. This post covers solutions to some challenges particularly related to dates and numbers.
The flow is quite simple with an action to read contents from excel file and an action to create items into a sharepoint list.
Handling DateTime Fields When importing datetime data with the “List rows present in a table” action from the “Excel Online for Business” connector, you might encounter format related errors.
posts
Power Automate updating multi line field with more than 255 characters
Power Automate flow succeeded despite failure to update multi line text field within a SharePoint Library Updating multi-line text fields in a SharePoint Library from Power Automate flows, especially when the content exceeds 255 characters might fail if the field is not updated to allow unlimited length. This can cause workflows to fail silently.
In a recent scenario, an action was added to a Power Automate flow to update a SharePoint Library’s multi-line text field named ‘ErrorLog’ with error details captured during the flow’s execution.
posts
Publishing Major Versions of Files in SharePoint with Power Automate
Publishing Major Versions of Files in SharePoint with Power Automate This post covers how to publish major versions for Office documents (Word, Excel, or PowerPoint) in SharePoint using Power Automate, especially after an approval task using the checkin and publish REST endpoints. This applies to libraries having minor versions enabled
Just for context, a Power Automate approval flow with trigger for a selected file needed publishing for the selected file as major version after being approved.
posts
Column Validation for Sort Code and Account Number in SharePoint
Column Validation for Sort Code and Account Number in SharePoint Column validation provides a solution to validate data for data integrity. This post covers column validation for Sort Code and Account Number in SharePoint.
Validation for Sort Code =AND(LEN([Sort Code])=6,ISNUMBER([Sort Code]+0))
The above formula checks
The length of the sort code must be exactly 6 digits. The sort code must be a number. Validation for Account Number =AND(LEN([Account Number])=8,ISNUMBER([Account Number]+0))
posts
Streamlining SharePoint Template Usage: A Guide to Opening DOTX Files as DOCX
Streamlining SharePoint Template Usage: A Guide to Opening DOTX Files as DOCX Encountering issues with opening “.dotx” templates in SharePoint is a common scenario that can disrupt your workflow. Typically, when you attempt to open a “.dotx” file in SharePoint, it opens in edit mode for the template itself, rather than generating a new “.docx” document as expected. This behavior diverges from the experience in Windows File Explorer and can hinder productivity.
posts
Empowering Secure Collaboration: Configuring OneDrive Tenant and Site Settings
Empowering Secure Collaboration: Configuring OneDrive Tenant Settings with PowerShell OneDrive makes it easy to collaborate by sharing files and folders with others. OneDrive is the storage space for personal productivity and not meant for collaboration. Data stored within OneDrive are
Files shared to chats within Teams Files shared with end user by other OneDrive users. OneNote Personal lists and Document storage Shortcuts to SharePoint sites/libraries Favourites Loops within chats Streams In this article, we’ll explore into how PowerShell can empower SharePoint administrators to configure OneDrive sharing settings proactively at the tenant level, addressing oversharing concerns for the M365 Copilot rollout.
posts
Counting Files and folders within SharePoint Libraries using PnP PowerShell
Counting Files and Folders within SharePoint Libraries using PnP PowerShell This post shows a PowerShell script using PnP PowerShell module to count the number of files and folders within a SharePoint library. It might be useful doing an inventory of file count.
$SiteURL = "Counting Files within a SharePoint Library using PnP PowerShell" # Generate a unique log file name using today's date $dateTime = (Get-Date).toString("dd-MM-yyyy") $invocation = (Get-Variable MyInvocation).Value $directorypath = Split-Path $invocation.
posts
Retrieving File Count and Size of a folder using PnP PowerShell
Retrieving File Count and Size of a folder within a SharePoint Library using PnP PowerShell This post covers a PowerShell script that uses the PnP PowerShell module to retrieve the file count and total size of a specific folder within a SharePoint library.
#Parameters $SiteURL = "https://contoso.sharepoint.com/sites/company311" $FolderSiteRelativeURL = "Shared Documents/Test1" #Connect to PnP Online Connect-PnPOnline -Url $SiteURL -Interactive #Get the folder $Folder = Get-PnPFolder -Url $FolderSiteRelativeURL -Includes ListItemAllFields #Get the total Size of the folder - with versions Write-host "Size of the Folder:" $([Math]::Round(($Folder.
posts
Empowering Secure Collaboration: Configuring Microsoft Loop Sharing Tenant and Site Settings with PowerShell
Empowering Secure Collaboration: Configuring Microsoft Loop Sharing SharePoint Tenant and Site Settings with PowerShell Guest users can be invited to collaborate within Microsoft Loop in the tenant. Refer How to work with guest users using Microsoft Loop how sharing within Loop works.
This post focuses on using PowerShell to control the Microsoft Loop sharing settings to help securing data especially with M365 Copilot which can expose data not previously accessible by other means.
posts
Sharing Options Updates - Send Email Button Greyed Out
Sharing Options Updates - Send Email button greyed out Starting from March 2024, there has been a notable change in SharePoint’s sharing options. If a user is not allowed to share on a SharePoint site (for instance, when a user is a member and only owners have sharing privileges), the Send Email button appears greyed out. Additionally, a warning message is displayed: Sharing is limited on this item. You can only copy links for people who have existing access, and you can’t invite anyone new.
posts
PowerShell Script to Query Unique Permissions in SharePoint
Query Unique Permissions in SharePoint using CSOM and PnP PowerShell Managing permissions in SharePoint is a critical aspect of maintaining data security and compliance within organisations. However, as SharePoint environments grow in complexity, manually auditing and managing permissions becomes increasingly challenging. To address this challenge, PowerShell scripts can be leveraged to automate the auditing process, providing administrators with valuable insights into permission structures across SharePoint sites and libraries.
What do SharePoint permissions have to do with Copilot for Microsoft 365?
posts
Retrieving SharePoint Site URL for Teams Channels
Retrieving SharePoint Site URL for Teams Channels Have you ever needed to construct the SharePoint site URL for a private or shared channel using just the channel name? This post will guide you through the process using Microsoft Graph endpoint and PnP PowerShell though PowerShell.
You may need the details for these reasons
To specify within a retention policy Purview Retention Policy Questions from the Field eDiscovery Extract from eDiscovery of private and shared channels “Each private and shared channel has its own SharePoint site that’s separate from the parent team site.
posts
Troubleshooting NVM Setup Issues for SPFx Development
Troubleshooting NVM Setup Issues for SPFx Development I have not used my dev machine for SPFx development for over a year. Before diving into any new SPFx development, I followed the typical procedure of installing the latest Node.js version 18.19.0 supported by the current SPFx version (1.18.2) using nvm (node version management).nvm allows to maintain different development environment.
nvm install 18.19.0 Following this, I proceeded to install the SPFx toolchain:
posts
Get Folder Item properties using PnP PowerShell : Get-PnPFolderItem versus Get-PnPListItem
Get Folder Item properties using PnP PowerShell : Get-PnPFolderItem versus Get-PnPListItem Introduction In this blog post, we will explore an alternative approach to retrieving folder item properties using PnP PowerShell. We will discuss the limitations of the Get-PnPFolderItem cmdlet and demonstrate how to use Get-PnPListItem to overcome those limitations.
The Limitations of Get-PnPFolderItem The Get-PnPFolderItem cmdlet is not suitable for working with large libraries. When attempting to retrieve items from a large library, you may encounter the following error message:
posts
Automating Site Reindexing with PowerShell
Automating Site Reindexing with PowerShell Introduction Keeping your SharePoint environment up-to-date is crucial, especially after making schema changes. One important aspect of maintaining accurate and relevant search results is to regularly reindex sites, libraries, or lists. In this blog post, we will explore a streamlined approach using PnP PowerShell to automate the reindexing process. By leveraging this script, you can ensure that your search results reflect the latest changes in your SharePoint environment.
posts
PowerShell: Set and Remove SharePoint Site Thumbnail Logo
For many organizations, maintaining a consistent brand identity across SharePoint sites is crucial. The distinction between “Site Logo” and “Site Logo Thumbnail” is essential, as they serve different purposes across SharePoint and the Microsoft 365 ecosystem. The site logo appears in the site header, while the site logo thumbnail is used in search results, site cards, when copying/moving files, and other critical areas. It plays a vital role in helping end users differentiate between various SharePoint Online (SPO) sites and Teams.
posts
Unveiling Audit Logs with PnP and Cli for M365 PowerShell
Unveiling Audit Logs with PnP PowerShell for the last 7 days Understanding and tracking activities within your M365 environment is crucial for maintaining security and compliance. Audit Logs offer a wealth of information, and in this post, we’ll delve into the methods to retrieve and analyze them. Specifically, we’ll focus on leveraging the Office 365 Management Activity API reference through the Get-PnPUnifiedAuditLog PnP PowerShell cmdlet. It is a great alternative if you are only a SharePoint Administrator with no global admin or Purview Audit logs access.
posts
Recreating Deleted Owners Group for M365-Connected SharePoint Sites
Recreating Deleted Owners Group for M365-Connected SharePoint Sites If out-of-the-box (OOB) groups such as owners, members, or visitors have been deleted accidentally from your SharePoint site, this article may assist you in recovering those vanished groups specifically for M365 linked Team site. I recently encountered a distress call from an end user facing data access issues on a SharePoint Team site. To my dismay, I discovered that the SharePoint Owners group had been accidentally deleted, prompting me to seek and implement a solution to restore access.
posts
Updating Approval Details in SharePoint Library using 'Send HTTP Request to SharePoint' in Power Automate
Updating Approval Details in SharePoint Library using ‘Send HTTP Request to SharePoint’ in Power Automate In Power Automate, there are two methods for updating file properties:
Send HTTP Request to SharePoint Update File Properties While the latter suffices for most cases, I opted for the “Send HTTP Request to SharePoint” in specific scenarios:
To avoid triggering a new file version using system update. When modifying system columns such as author or modified date.
posts
Leveraging ChatGPT to Generate Test Data for SharePoint Lists Using PnP PowerShell
Leveraging ChatGPT to Generate Test Data for SharePoint Lists Using PnP PowerShell Utilizing ChatGPT to generate test data for various applications is a powerful capability. After stumbling upon the sample script Create test users using MS Graph API from list or ask ChatGPT to generate test users by Valeras Narbutas on creating test users with MS Graph API, I decided to explore using ChatGPT to generate a list of data. This script harnesses OpenAI’s ChatGPT model to effortlessly generate a list of wellbeing activities.
posts
Optimising Large List Updates with PnP Batch: Handling Throttling and Enhancing Efficiency
Optimising Large List Updates with PnP Batch: Handling Throttling and Enhancing Efficiency In this article, we explore how to efficiently update a large SharePoint list containing approximately 60,000 items using PnP-Batch. Updating such a substantial number of items individually can be time-consuming and prone to throttling issues. Prior to using PnP Batch , it was taking more than 12 hours to update 60k one by one. The article highlights the benefits of using PnP Batch, which significantly reduces the time taken for updates by sending fewer requests.
posts
Troubleshooting SharePoint Storage Reports with PowerShell
Troubleshooting SharePoint Storage Reports with PowerShell As the amount of data stored in SharePoint grows, it becomes important to monitor and manage storage usage. In this blog post, we will explore how to generate storage reports for SharePoint sites using PowerShell. These reports will provide insights into the storage usage of sites and individual files, including file versions and the size of the recycle bin. However the reports can only give a glimpse of at least 60-90% of storage.
Tag: Authentication
posts
Generate OpenAPI Spec for M365 Copilot Declarative Agent
Introduction After encountering issues with creating a To-Do task action in my previous attempt Building a Copilot Agent with Teams Toolkit and Microsoft Graph Plugin to list my ToDo Tasks, I explored various methods to generate an OpenAPI specification for M365 Copilot Declarative Agents using the Ms Graph OpenAPI spec. This post outlines the different approaches I tried, the challenges I faced, and the lessons learned.
Methods for Generating OpenAPI Specs 1.
posts
Step by step guide to integrate Microsoft 365 Copilot declarative agents with Azure AI Search
Introduction In this post, I’ll walk you through how to call Azure AI Search APIs from a M365 Copilot declarative agent without writing any code by using Teams Toolkit. Leveraging OpenAPI specifications, Teams Toolkit enables seamless integration with Azure AI Search, streamlining the development process for Copilot extensibility.
Waldek Mastykarz wrote an insightful post on when Azure AI Search can be used, highlighting its ability to provide a more controlled approach to indexing and relevance without the complexity of building a custom engine agent.
posts
Step by step guide to integrate Microsoft 365 Copilot declarative agents with Azure OpenAI
Introduction In this post, I’ll walk you through how to call Azure OpenAI APIs from a Copilot declarative agent—without writing any code—by using Teams Toolkit. Leveraging OpenAPI specifications, Teams Toolkit enables seamless integration with Azure OpenAI, streamlining the development process for Copilot extensibility.
Step 1: Create and Import an OpenAPI Specification Microsoft provides a pre-built OpenAPI specification for Azure OpenAI, but it’s often broader than needed. To simplify, I generated a targeted OpenAPI spec with Copilot by using the endpoint URL and a sample request body as a prompt.
Tag: Azure OpenAI
posts
Generate OpenAPI Spec for M365 Copilot Declarative Agent
Introduction After encountering issues with creating a To-Do task action in my previous attempt Building a Copilot Agent with Teams Toolkit and Microsoft Graph Plugin to list my ToDo Tasks, I explored various methods to generate an OpenAPI specification for M365 Copilot Declarative Agents using the Ms Graph OpenAPI spec. This post outlines the different approaches I tried, the challenges I faced, and the lessons learned.
Methods for Generating OpenAPI Specs 1.
posts
Step by step guide to integrate Microsoft 365 Copilot declarative agents with Azure OpenAI
Introduction In this post, I’ll walk you through how to call Azure OpenAI APIs from a Copilot declarative agent—without writing any code—by using Teams Toolkit. Leveraging OpenAPI specifications, Teams Toolkit enables seamless integration with Azure OpenAI, streamlining the development process for Copilot extensibility.
Step 1: Create and Import an OpenAPI Specification Microsoft provides a pre-built OpenAPI specification for Azure OpenAI, but it’s often broader than needed. To simplify, I generated a targeted OpenAPI spec with Copilot by using the endpoint URL and a sample request body as a prompt.
posts
MS Build AI Day: Generative AI using Azure OpenAI Service by Henk Boelman
Generative AI using Azure OpenAI Service session at MS Build AI Day by Henk Boelman I attended the session Generative AI using Azure OpenAI Service session at MS Build AI Day by Henk Boelman on the 19th Oct 2023. He demoed how to leverage Azure Open AI Service to “add your own data” combined with ChatGPT to retrieve information from your company owned data covering elements of generative AI and reinforcing some of the points highlighted in the Keynote such as prompt engineering, grounding, jail breaking, etc.
Tag: Copilot
posts
Generate OpenAPI Spec for M365 Copilot Declarative Agent
Introduction After encountering issues with creating a To-Do task action in my previous attempt Building a Copilot Agent with Teams Toolkit and Microsoft Graph Plugin to list my ToDo Tasks, I explored various methods to generate an OpenAPI specification for M365 Copilot Declarative Agents using the Ms Graph OpenAPI spec. This post outlines the different approaches I tried, the challenges I faced, and the lessons learned.
Methods for Generating OpenAPI Specs 1.
posts
Limitations of OpenAPI Spec with Complex Objects in Copilot Declarative Agents
Introduction In a previous post, I detailed the steps for Building a Copilot Agent with Teams Toolkit and Microsoft Graph Plugin to List My ToDo Tasks. However, I encountered issues with the CreateTask function when using an OpenAPI spec generated with Kiota. Upon investigation, I identified the problem as being related to the handling of complex objects, particularly those involving dates. Even after simplifying the object structure, the CreateTask function continued to fail.
posts
Step by step guide to integrate Microsoft 365 Copilot declarative agents with Azure AI Search
Introduction In this post, I’ll walk you through how to call Azure AI Search APIs from a M365 Copilot declarative agent without writing any code by using Teams Toolkit. Leveraging OpenAPI specifications, Teams Toolkit enables seamless integration with Azure AI Search, streamlining the development process for Copilot extensibility.
Waldek Mastykarz wrote an insightful post on when Azure AI Search can be used, highlighting its ability to provide a more controlled approach to indexing and relevance without the complexity of building a custom engine agent.
posts
Creating an OpenAPI Specification for Microsoft 365 Copilot Declarative Agents to Interact with SharePoint Lists
Introduction In this blog post, I demonstrate how to create an OpenAPI specification for interacting with a SharePoint list using Microsoft Graph for integration with Microsoft 365 Copilot Declarative Agents. The list in question was created using the tracker template. This approach allows you to define and document API interactions, making it easier to integrate with tools like Teams Toolkit or Copilot for automation and extensibility.
Scenario We aim to create an OpenAPI YAML file to interact with the following endpoint:
posts
Step by step guide to integrate Microsoft 365 Copilot declarative agents with Azure OpenAI
Introduction In this post, I’ll walk you through how to call Azure OpenAI APIs from a Copilot declarative agent—without writing any code—by using Teams Toolkit. Leveraging OpenAPI specifications, Teams Toolkit enables seamless integration with Azure OpenAI, streamlining the development process for Copilot extensibility.
Step 1: Create and Import an OpenAPI Specification Microsoft provides a pre-built OpenAPI specification for Azure OpenAI, but it’s often broader than needed. To simplify, I generated a targeted OpenAPI spec with Copilot by using the endpoint URL and a sample request body as a prompt.
posts
Building a Copilot Agent with Teams Toolkit and Microsoft Graph Plugin to list my ToDo Tasks
Introduction This guide walks you through creating a Copilot agent using Teams Toolkit and Microsoft Graph API. By leveraging OpenAPI specifications, Kiota, and Teams Toolkit, you can build a plugin to interact with Microsoft Graph endpoints. I used the blog post Copilot Graph API QnA Plugin by Franck Cornu as inspiration with some variation to apply it to get my ToDo tasks.
Plugins for Copilot agents rely on OpenAPI specifications. While the complete Microsoft Graph OpenAPI specification exists, it is a massive file (34MB) and not practical for performance reasons.
posts
Troubleshooting Copilot Agent Teams Toolkit M365Graph Plugin Issues
Troubleshooting Copilot Agent Teams Toolkit M365Graph Plugin Issues When building a Copilot agent using Teams Toolkit, you may encounter certain errors that can hinder your progress. This blog post highlights common issues and provides solutions to help you resolve them effectively.
Common Issues and Fixes 1. name_for_human Exceeds 20 Characters Issue: You may encounter the following error when the name_for_human field in the ai-plugin.json file exceeds 20 characters:
name_for_human in PluginManifestDocument has characters beyond the length 20 that MAY be ignored.
posts
Embed GitHub Gist in Hugo posts
Embed GitHub Gist in Hugo posts I was approached by Divya Akula with a suggestion to use a link to GitHub for my script and I really bought in the idea because I used to do it on Wordpress. I started googling and trying out solutions which did not work and messed up my blog repo. Fortunately being MVP I have access to GitHub Copilot and asked Copilot with a simple prompt which gave me a simple straight forward looking solution.
posts
Exploring some Limitations of Copilot in Power Automate
Exploring some Limitations of Copilot in Power Automate I was thrilled when Copilot became available in the UK region within Power Automate around mid-November 2023. To understand its functionalities and limitations, I started exploring. Please refer to Understanding the Cloud Flows Designer, which outlines some limitations and described the Flows Designer experience.
Creating New Flows While creating a new flow using the prompt “Start an approval process and update the item in a SharePoint list when a new item is created,” I noticed a functional flow generated.
posts
Ms Build AI Day Keynote on the 19 Oct 2023
MS Build AI Day Keynote by Scott Hanselman On October 19, 2023, the inaugural MS Build AI Day at Excel London in Custom House marked a pivotal moment for the world of AI. As an attendee, I had the privilege of witnessing a groundbreaking keynote session led by none other than Scott Hanselman. Titled “Navigating the AI Landscape,” the keynote, introduced by Michael Wignall, the lead for MS Build, set the stage for an eventful day filled with insights, connections, and hands-on experiences.
Tag: Declarative Agent
posts
Generate OpenAPI Spec for M365 Copilot Declarative Agent
Introduction After encountering issues with creating a To-Do task action in my previous attempt Building a Copilot Agent with Teams Toolkit and Microsoft Graph Plugin to list my ToDo Tasks, I explored various methods to generate an OpenAPI specification for M365 Copilot Declarative Agents using the Ms Graph OpenAPI spec. This post outlines the different approaches I tried, the challenges I faced, and the lessons learned.
Methods for Generating OpenAPI Specs 1.
posts
Limitations of OpenAPI Spec with Complex Objects in Copilot Declarative Agents
Introduction In a previous post, I detailed the steps for Building a Copilot Agent with Teams Toolkit and Microsoft Graph Plugin to List My ToDo Tasks. However, I encountered issues with the CreateTask function when using an OpenAPI spec generated with Kiota. Upon investigation, I identified the problem as being related to the handling of complex objects, particularly those involving dates. Even after simplifying the object structure, the CreateTask function continued to fail.
posts
Step by step guide to integrate Microsoft 365 Copilot declarative agents with Azure AI Search
Introduction In this post, I’ll walk you through how to call Azure AI Search APIs from a M365 Copilot declarative agent without writing any code by using Teams Toolkit. Leveraging OpenAPI specifications, Teams Toolkit enables seamless integration with Azure AI Search, streamlining the development process for Copilot extensibility.
Waldek Mastykarz wrote an insightful post on when Azure AI Search can be used, highlighting its ability to provide a more controlled approach to indexing and relevance without the complexity of building a custom engine agent.
posts
Step by step guide to integrate Microsoft 365 Copilot declarative agents with Azure OpenAI
Introduction In this post, I’ll walk you through how to call Azure OpenAI APIs from a Copilot declarative agent—without writing any code—by using Teams Toolkit. Leveraging OpenAPI specifications, Teams Toolkit enables seamless integration with Azure OpenAI, streamlining the development process for Copilot extensibility.
Step 1: Create and Import an OpenAPI Specification Microsoft provides a pre-built OpenAPI specification for Azure OpenAI, but it’s often broader than needed. To simplify, I generated a targeted OpenAPI spec with Copilot by using the endpoint URL and a sample request body as a prompt.
posts
Building a Copilot Agent with Teams Toolkit and Microsoft Graph Plugin to list my ToDo Tasks
Introduction This guide walks you through creating a Copilot agent using Teams Toolkit and Microsoft Graph API. By leveraging OpenAPI specifications, Kiota, and Teams Toolkit, you can build a plugin to interact with Microsoft Graph endpoints. I used the blog post Copilot Graph API QnA Plugin by Franck Cornu as inspiration with some variation to apply it to get my ToDo tasks.
Plugins for Copilot agents rely on OpenAPI specifications. While the complete Microsoft Graph OpenAPI specification exists, it is a massive file (34MB) and not practical for performance reasons.
posts
Troubleshooting Copilot Agent Teams Toolkit M365Graph Plugin Issues
Troubleshooting Copilot Agent Teams Toolkit M365Graph Plugin Issues When building a Copilot agent using Teams Toolkit, you may encounter certain errors that can hinder your progress. This blog post highlights common issues and provides solutions to help you resolve them effectively.
Common Issues and Fixes 1. name_for_human Exceeds 20 Characters Issue: You may encounter the following error when the name_for_human field in the ai-plugin.json file exceeds 20 characters:
name_for_human in PluginManifestDocument has characters beyond the length 20 that MAY be ignored.
posts
SharePoint Agent and Responsible AI in Mental Health Support
Introduction Balancing AI safety measures and practical functionality for SharePoint Agents is key for some use cases due to the lack of customisation of the inbuilt content safety against the four categories: harm, self-harm, sex, and hate. A particular use case we wanted to explore was its use for mental health support agents in the form of virtual mental health first aiders. My partner in crime Lee Ford and I explored what we could do without tripping the Responsible AI principles and flagging Content Safety categories.
posts
Exploring Ways to Access SharePoint Agent
Introduction SharePoint Agent is the easiest way to get started with building your own grounded Agents from your SharePoint data. The possibilities are vast, from HR agents to legal agents. If more configuration and features are required, the Copilot Studio or Azure AI Foundry could help.
Each SharePoint site comes with its own default Agent scoped to data within the site. As of today (i.e. March 2025), the default SharePoint agent can’t be modified.
Tag: M365 Copilot Extensibility
posts
Generate OpenAPI Spec for M365 Copilot Declarative Agent
Introduction After encountering issues with creating a To-Do task action in my previous attempt Building a Copilot Agent with Teams Toolkit and Microsoft Graph Plugin to list my ToDo Tasks, I explored various methods to generate an OpenAPI specification for M365 Copilot Declarative Agents using the Ms Graph OpenAPI spec. This post outlines the different approaches I tried, the challenges I faced, and the lessons learned.
Methods for Generating OpenAPI Specs 1.
posts
Limitations of OpenAPI Spec with Complex Objects in Copilot Declarative Agents
Introduction In a previous post, I detailed the steps for Building a Copilot Agent with Teams Toolkit and Microsoft Graph Plugin to List My ToDo Tasks. However, I encountered issues with the CreateTask function when using an OpenAPI spec generated with Kiota. Upon investigation, I identified the problem as being related to the handling of complex objects, particularly those involving dates. Even after simplifying the object structure, the CreateTask function continued to fail.
posts
Microsoft Graph: Challenges with UserInformationList Search and Filter
Introduction When working with the UserInformationList in SharePoint via Microsoft Graph, you might encounter challenges when trying to search or filter user information. This post highlights the issues I faced while attempting to use $search and $filter queries on the UserInformationList, along with examples and insights within M365 Copilot declarative agent.
Issue 1: Search by Email Did Not Work I attempted to search for a user by their email address using the $search query, but it did not return any results.
posts
Step by step guide to integrate Microsoft 365 Copilot declarative agents with Azure AI Search
Introduction In this post, I’ll walk you through how to call Azure AI Search APIs from a M365 Copilot declarative agent without writing any code by using Teams Toolkit. Leveraging OpenAPI specifications, Teams Toolkit enables seamless integration with Azure AI Search, streamlining the development process for Copilot extensibility.
Waldek Mastykarz wrote an insightful post on when Azure AI Search can be used, highlighting its ability to provide a more controlled approach to indexing and relevance without the complexity of building a custom engine agent.
posts
Step by step guide to integrate Microsoft 365 Copilot declarative agents with Azure OpenAI
Introduction In this post, I’ll walk you through how to call Azure OpenAI APIs from a Copilot declarative agent—without writing any code—by using Teams Toolkit. Leveraging OpenAPI specifications, Teams Toolkit enables seamless integration with Azure OpenAI, streamlining the development process for Copilot extensibility.
Step 1: Create and Import an OpenAPI Specification Microsoft provides a pre-built OpenAPI specification for Azure OpenAI, but it’s often broader than needed. To simplify, I generated a targeted OpenAPI spec with Copilot by using the endpoint URL and a sample request body as a prompt.
posts
Building a Copilot Agent with Teams Toolkit and Microsoft Graph Plugin to list my ToDo Tasks
Introduction This guide walks you through creating a Copilot agent using Teams Toolkit and Microsoft Graph API. By leveraging OpenAPI specifications, Kiota, and Teams Toolkit, you can build a plugin to interact with Microsoft Graph endpoints. I used the blog post Copilot Graph API QnA Plugin by Franck Cornu as inspiration with some variation to apply it to get my ToDo tasks.
Plugins for Copilot agents rely on OpenAPI specifications. While the complete Microsoft Graph OpenAPI specification exists, it is a massive file (34MB) and not practical for performance reasons.
posts
Troubleshooting Copilot Agent Teams Toolkit M365Graph Plugin Issues
Troubleshooting Copilot Agent Teams Toolkit M365Graph Plugin Issues When building a Copilot agent using Teams Toolkit, you may encounter certain errors that can hinder your progress. This blog post highlights common issues and provides solutions to help you resolve them effectively.
Common Issues and Fixes 1. name_for_human Exceeds 20 Characters Issue: You may encounter the following error when the name_for_human field in the ai-plugin.json file exceeds 20 characters:
name_for_human in PluginManifestDocument has characters beyond the length 20 that MAY be ignored.
Tag: Microsoft Graph
posts
Generate OpenAPI Spec for M365 Copilot Declarative Agent
Introduction After encountering issues with creating a To-Do task action in my previous attempt Building a Copilot Agent with Teams Toolkit and Microsoft Graph Plugin to list my ToDo Tasks, I explored various methods to generate an OpenAPI specification for M365 Copilot Declarative Agents using the Ms Graph OpenAPI spec. This post outlines the different approaches I tried, the challenges I faced, and the lessons learned.
Methods for Generating OpenAPI Specs 1.
posts
Microsoft Graph: Challenges with UserInformationList Search and Filter
Introduction When working with the UserInformationList in SharePoint via Microsoft Graph, you might encounter challenges when trying to search or filter user information. This post highlights the issues I faced while attempting to use $search and $filter queries on the UserInformationList, along with examples and insights within M365 Copilot declarative agent.
Issue 1: Search by Email Did Not Work I attempted to search for a user by their email address using the $search query, but it did not return any results.
posts
Creating an OpenAPI Specification for Microsoft 365 Copilot Declarative Agents to Interact with SharePoint Lists
Introduction In this blog post, I demonstrate how to create an OpenAPI specification for interacting with a SharePoint list using Microsoft Graph for integration with Microsoft 365 Copilot Declarative Agents. The list in question was created using the tracker template. This approach allows you to define and document API interactions, making it easier to integrate with tools like Teams Toolkit or Copilot for automation and extensibility.
Scenario We aim to create an OpenAPI YAML file to interact with the following endpoint:
posts
Managing Microsoft 365 Group Settings with PnP PowerShell and Microsoft Graph
Introduction Managing Microsoft 365 Group settings is crucial for maintaining a compliant and secure environment.PowerShell and Microsoft Graph can be used to configure various group settings, including naming policies, guest access, and more.
As a regular user of PnP PowerShell, I aimed to replicate the functionality of the Microsoft Entra cmdlets for configuring group settings using PnP PowerShell.
Example Script to Update naming policy Settings The following PowerShell script updates the naming group settings using the Microsoft Graph API and PnP PowerShell.
posts
Get Drive ID and Drive Item ID for File for Further Microsoft Graph Operations using PnP PowerShell
Introduction When working with files in SharePoint, the drive ID and drive item ID are essential parameters for further manipulation using Microsoft Graph API. The drive ID is a base64 encoded string composed of the site ID, web ID, and list ID for a particular SharePoint library. For more details, refer to Microsoft Graph: Encoding and decoding the drive ID by Mikael Svenson. The item ID part appears to be a base32 encoding of the SharePoint item’s unique ID, though the exact mechanics are still being explored.
posts
Audit Service Principal Access to SharePoint Sites with Sites.Selected Permissions
Ensuring the security and compliance of your SharePoint environment is crucial, especially when dealing with service principals, Entra ID apps, or federated identities. These entities often have elevated permissions that, if mismanaged, can lead to unauthorized access and potential data breaches. Regularly auditing these permissions is a best practice for maintaining a secure and compliant SharePoint environment.
Application only or granular access to individual site instead of whole tenant, scope called “Sites.
posts
Get Library Drive Id using Power Automate
When using Power Automate with Excel for Business actions, the drive ID for a library is automatically determined. However, if you deploy a Power Automate solution across different environments and use a library as a datasource environment variable, referencing this variable in the flow can result in an error due to an invalid drive ID.
Referencing the variable in the Power Automate flow, it will throw an error message failing to work our the drive id of the library.
posts
Remove Expired Sharing Links and Update Sharing Link Role to Read
Updating the expiration time and role for sharing links is still limited. Although it seems possible through the Graph API Update permission, I have been unable to pass the roles as body parameters.
Graph Explorer Attempts Using the following script:
Invoke-PnPGraphMethod -Url "v1.0/drives/$driveId/items/$driveItemId/permissions/$($ShareLink.Id)" -Method Patch -Content @{ roles = @("read") } threw the error message
“Invalid input: No Information provided to update the specifed permission”
From the UI Anyone link can’t be edited Organisation link can’t be edited Specific people links can be edited Using the network tab from the browser developer tools enables identifying the endpoint to update specific people links only.
posts
Oversight of Sharing Information in SharePoint sites using PowerShell with CSOM, REST and PnP PowerShell
Effective oversight of sharing links and sharing information are paramount to ensuring data security, compliance, and optimal collaboration experiences.
As organisations migrate to M365 environments, they inherit powerful collaboration tools that facilitate seamless sharing of documents and resources. However, without proper governance, these capabilities can lead to unintended consequences such as data breaches, compliance violations, and loss of intellectual property.
Sharing is a powerful feature for collaboration. However depending on how items, files or folders are shared, a sharing link might be created or unique permissions on these items are created.
posts
Retrieving SiteId from Microsoft Graph for Subsequent API Calls
Retrieving SiteId from Microsoft Graph for Subsequent API Calls This post offers an option to retrieve a SiteId from Microsoft Graph using PnP PowerShell. This can be particularly useful when making further API calls that require the SiteId.
$siteurl = "https://contoso.sharepoint.com/sites/Company311" Connect-PnPOnline -url $siteurl -interactive # for the site url https://contoso-admin.sharepoint.com/teams/app-m365 # Extract the domain and site name $uri = New-Object System.Uri($siteurl) $domain = $uri.Host $siteName = $uri.AbsolutePath # Construct the new URL $RestMethodUrl = "v1.
posts
Retrieving SharePoint Site URL for Teams Channels
Retrieving SharePoint Site URL for Teams Channels Have you ever needed to construct the SharePoint site URL for a private or shared channel using just the channel name? This post will guide you through the process using Microsoft Graph endpoint and PnP PowerShell though PowerShell.
You may need the details for these reasons
To specify within a retention policy Purview Retention Policy Questions from the Field eDiscovery Extract from eDiscovery of private and shared channels “Each private and shared channel has its own SharePoint site that’s separate from the parent team site.
Tag: OpenAPI
posts
Generate OpenAPI Spec for M365 Copilot Declarative Agent
Introduction After encountering issues with creating a To-Do task action in my previous attempt Building a Copilot Agent with Teams Toolkit and Microsoft Graph Plugin to list my ToDo Tasks, I explored various methods to generate an OpenAPI specification for M365 Copilot Declarative Agents using the Ms Graph OpenAPI spec. This post outlines the different approaches I tried, the challenges I faced, and the lessons learned.
Methods for Generating OpenAPI Specs 1.
posts
Step by step guide to integrate Microsoft 365 Copilot declarative agents with Azure AI Search
Introduction In this post, I’ll walk you through how to call Azure AI Search APIs from a M365 Copilot declarative agent without writing any code by using Teams Toolkit. Leveraging OpenAPI specifications, Teams Toolkit enables seamless integration with Azure AI Search, streamlining the development process for Copilot extensibility.
Waldek Mastykarz wrote an insightful post on when Azure AI Search can be used, highlighting its ability to provide a more controlled approach to indexing and relevance without the complexity of building a custom engine agent.
posts
Creating an OpenAPI Specification for Microsoft 365 Copilot Declarative Agents to Interact with SharePoint Lists
Introduction In this blog post, I demonstrate how to create an OpenAPI specification for interacting with a SharePoint list using Microsoft Graph for integration with Microsoft 365 Copilot Declarative Agents. The list in question was created using the tracker template. This approach allows you to define and document API interactions, making it easier to integrate with tools like Teams Toolkit or Copilot for automation and extensibility.
Scenario We aim to create an OpenAPI YAML file to interact with the following endpoint:
posts
Step by step guide to integrate Microsoft 365 Copilot declarative agents with Azure OpenAI
Introduction In this post, I’ll walk you through how to call Azure OpenAI APIs from a Copilot declarative agent—without writing any code—by using Teams Toolkit. Leveraging OpenAPI specifications, Teams Toolkit enables seamless integration with Azure OpenAI, streamlining the development process for Copilot extensibility.
Step 1: Create and Import an OpenAPI Specification Microsoft provides a pre-built OpenAPI specification for Azure OpenAI, but it’s often broader than needed. To simplify, I generated a targeted OpenAPI spec with Copilot by using the endpoint URL and a sample request body as a prompt.
Tag: Teams Toolkit
posts
Generate OpenAPI Spec for M365 Copilot Declarative Agent
Introduction After encountering issues with creating a To-Do task action in my previous attempt Building a Copilot Agent with Teams Toolkit and Microsoft Graph Plugin to list my ToDo Tasks, I explored various methods to generate an OpenAPI specification for M365 Copilot Declarative Agents using the Ms Graph OpenAPI spec. This post outlines the different approaches I tried, the challenges I faced, and the lessons learned.
Methods for Generating OpenAPI Specs 1.
posts
Limitations of OpenAPI Spec with Complex Objects in Copilot Declarative Agents
Introduction In a previous post, I detailed the steps for Building a Copilot Agent with Teams Toolkit and Microsoft Graph Plugin to List My ToDo Tasks. However, I encountered issues with the CreateTask function when using an OpenAPI spec generated with Kiota. Upon investigation, I identified the problem as being related to the handling of complex objects, particularly those involving dates. Even after simplifying the object structure, the CreateTask function continued to fail.
posts
Step by step guide to integrate Microsoft 365 Copilot declarative agents with Azure AI Search
Introduction In this post, I’ll walk you through how to call Azure AI Search APIs from a M365 Copilot declarative agent without writing any code by using Teams Toolkit. Leveraging OpenAPI specifications, Teams Toolkit enables seamless integration with Azure AI Search, streamlining the development process for Copilot extensibility.
Waldek Mastykarz wrote an insightful post on when Azure AI Search can be used, highlighting its ability to provide a more controlled approach to indexing and relevance without the complexity of building a custom engine agent.
posts
Step by step guide to integrate Microsoft 365 Copilot declarative agents with Azure OpenAI
Introduction In this post, I’ll walk you through how to call Azure OpenAI APIs from a Copilot declarative agent—without writing any code—by using Teams Toolkit. Leveraging OpenAPI specifications, Teams Toolkit enables seamless integration with Azure OpenAI, streamlining the development process for Copilot extensibility.
Step 1: Create and Import an OpenAPI Specification Microsoft provides a pre-built OpenAPI specification for Azure OpenAI, but it’s often broader than needed. To simplify, I generated a targeted OpenAPI spec with Copilot by using the endpoint URL and a sample request body as a prompt.
posts
Building a Copilot Agent with Teams Toolkit and Microsoft Graph Plugin to list my ToDo Tasks
Introduction This guide walks you through creating a Copilot agent using Teams Toolkit and Microsoft Graph API. By leveraging OpenAPI specifications, Kiota, and Teams Toolkit, you can build a plugin to interact with Microsoft Graph endpoints. I used the blog post Copilot Graph API QnA Plugin by Franck Cornu as inspiration with some variation to apply it to get my ToDo tasks.
Plugins for Copilot agents rely on OpenAPI specifications. While the complete Microsoft Graph OpenAPI specification exists, it is a massive file (34MB) and not practical for performance reasons.
posts
Troubleshooting Copilot Agent Teams Toolkit M365Graph Plugin Issues
Troubleshooting Copilot Agent Teams Toolkit M365Graph Plugin Issues When building a Copilot agent using Teams Toolkit, you may encounter certain errors that can hinder your progress. This blog post highlights common issues and provides solutions to help you resolve them effectively.
Common Issues and Fixes 1. name_for_human Exceeds 20 Characters Issue: You may encounter the following error when the name_for_human field in the ai-plugin.json file exceeds 20 characters:
name_for_human in PluginManifestDocument has characters beyond the length 20 that MAY be ignored.
Tag: M365 Copilot
posts
Limitations of OpenAPI Spec with Complex Objects in Copilot Declarative Agents
Introduction In a previous post, I detailed the steps for Building a Copilot Agent with Teams Toolkit and Microsoft Graph Plugin to List My ToDo Tasks. However, I encountered issues with the CreateTask function when using an OpenAPI spec generated with Kiota. Upon investigation, I identified the problem as being related to the handling of complex objects, particularly those involving dates. Even after simplifying the object structure, the CreateTask function continued to fail.
posts
Building a Copilot Agent with Teams Toolkit and Microsoft Graph Plugin to list my ToDo Tasks
Introduction This guide walks you through creating a Copilot agent using Teams Toolkit and Microsoft Graph API. By leveraging OpenAPI specifications, Kiota, and Teams Toolkit, you can build a plugin to interact with Microsoft Graph endpoints. I used the blog post Copilot Graph API QnA Plugin by Franck Cornu as inspiration with some variation to apply it to get my ToDo tasks.
Plugins for Copilot agents rely on OpenAPI specifications. While the complete Microsoft Graph OpenAPI specification exists, it is a massive file (34MB) and not practical for performance reasons.
posts
Troubleshooting Copilot Agent Teams Toolkit M365Graph Plugin Issues
Troubleshooting Copilot Agent Teams Toolkit M365Graph Plugin Issues When building a Copilot agent using Teams Toolkit, you may encounter certain errors that can hinder your progress. This blog post highlights common issues and provides solutions to help you resolve them effectively.
Common Issues and Fixes 1. name_for_human Exceeds 20 Characters Issue: You may encounter the following error when the name_for_human field in the ai-plugin.json file exceeds 20 characters:
name_for_human in PluginManifestDocument has characters beyond the length 20 that MAY be ignored.
posts
Embedding Copilot Studio Agent in a SharePoint Page
Introduction Embedding a Copilot Studio Agent within a SharePoint page can significantly enhance user experience by providing seamless access to AI-powered assistance directly within the context of a SharePoint site. While there are examples of achieving this using SPFx (SharePoint Framework), I wanted to explore whether this could be done using out-of-the-box (OOB) features without custom development.
In this blog post, I will walk you through the steps to embed a Copilot Studio Agent into a SharePoint page using the Embed Webpart and site settings.
posts
SharePoint Agent and Responsible AI in Mental Health Support
Introduction Balancing AI safety measures and practical functionality for SharePoint Agents is key for some use cases due to the lack of customisation of the inbuilt content safety against the four categories: harm, self-harm, sex, and hate. A particular use case we wanted to explore was its use for mental health support agents in the form of virtual mental health first aiders. My partner in crime Lee Ford and I explored what we could do without tripping the Responsible AI principles and flagging Content Safety categories.
posts
Exploring Ways to Access SharePoint Agent
Introduction SharePoint Agent is the easiest way to get started with building your own grounded Agents from your SharePoint data. The possibilities are vast, from HR agents to legal agents. If more configuration and features are required, the Copilot Studio or Azure AI Foundry could help.
Each SharePoint site comes with its own default Agent scoped to data within the site. As of today (i.e. March 2025), the default SharePoint agent can’t be modified.
posts
M365 Developer Tenant Challenges
My Visual Studio subscription was deactivated, resulting in the loss of my Azure subscription and licenses to access Microsoft Teams within my M365 developer tenant.
This post covers my attempts to recover access in vain.
Access to Microsoft Teams I thought I could extend my access to Microsoft Teams by opting for a free trial for Microsoft 365 E5 (no Teams) and Teams Premium - Microsoft Teams Premium.
However, this did not restore access to Microsoft Teams despite waiting multiple hours after I added the above licenses.
posts
Deletion of company-wide and anonymous sharing links with PowerShell
Sharing is a powerful feature for collaboration. However depending on how items, files or folders are shared, a sharing link might be created or unique permissions on these items are created. The sharing link is created when the copy links is clicked from the sharing pop up options when people other those already have existing access are picked.
However by default, if sharing options have not been configured, links to “People in ” or “Anyone” (if external sharing is allowed) is selected
posts
PowerShell: Fetch Files with Retention or Sensitivity Labels in SharePoint Online
Introduction Understanding the sensitivity and retention labels applied to files in your SharePoint Online sites is essential for maintaining data security and compliance. These labels enable you to manage and protect your data by defining retention periods and handling sensitive information appropriately. This is particularly important for initiatives like the Microsoft 365 Copilot rollout, ensuring that the correct files are stored within the appropriate SharePoint sites. For example, if a SharePoint site is a public Team site, files labeled as confidential should be moved to a private Team site or existing Team site updated from public to private.
posts
Get SharePoint site sharing Settings with PowerShell
Managing sharing settings for SharePoint sites is crucial for maintaining a secure and well-governed environment. With the help of PowerShell, administrators can efficiently retrieve and manage these settings across their SharePoint Online tenant. This ensures that sensitive information is not overshared and that your organisation’s data remains secure.
Importance of Reviewing Sharing Settings Reviewing sharing settings is essential to prevent oversharing, which can lead to data breaches and unauthorized access to sensitive information.
posts
Empowering Secure Collaboration: Configuring SharePoint Tenant and Site Settings with PowerShell to prevent oversharing
Sharing lies at the heart of collaboration within SharePoint, facilitating seamless communication and teamwork. However, effective management of sharing settings is crucial to maintain data security and prevent unintended exposure. This is particularly important in light of tools like M365 Copilot.
An extract from Announcing SharePoint advanced management innovations for the AI and Copilot era
“With Copilot and AI, security has become a concern. Not because Copilot allows people to access anything more than they could previously; it just allows them to find information they have access to faster.
posts
Teams Chats - default Sharing Links to 'People Currently in this Chat
Have you ever wondered how to default the default sharing link in Teams chats to ‘People currently in this chat’? By default, if “Anyone” is disabled within the tenant, the sharing link is set to “People in my organization”. This can be a challenge when you want to limit access to only those in the current chat. All files uploaded to a Teams Chat are stored in the uploader’s OneDrive for Business.
posts
SharePoint Portals Site collections Inventory
As part of the M365 Copilot rollout , questions were raised on the /portals/Community and /portals/hub as both ‘Everyone Except External Users’ was granted access raising concerns on the content on the site. These are legacy sites and are currently inaccessible. Historically, these sites were accessible via the legacy SharePoint admin centre, however, they are not available through the modern SharePoint admin centre interface.
Thanks to Gregory Zelfond’s blog post What are all these site collections in SharePoint?
posts
Empowering Secure Collaboration: Configuring OneDrive Tenant and Site Settings
Empowering Secure Collaboration: Configuring OneDrive Tenant Settings with PowerShell OneDrive makes it easy to collaborate by sharing files and folders with others. OneDrive is the storage space for personal productivity and not meant for collaboration. Data stored within OneDrive are
Files shared to chats within Teams Files shared with end user by other OneDrive users. OneNote Personal lists and Document storage Shortcuts to SharePoint sites/libraries Favourites Loops within chats Streams In this article, we’ll explore into how PowerShell can empower SharePoint administrators to configure OneDrive sharing settings proactively at the tenant level, addressing oversharing concerns for the M365 Copilot rollout.
posts
Deletion of sharing links with PowerShell
Deletion of sharing links with PowerShell As organisations look to deploy Copilot for Microsoft 365, ensuring the security and proper governance of shared content is important. The rollout of Copilot introduces advanced AI capabilities across Microsoft 365 apps using content from SharePoint/OneDrive, making it even more essential to manage sharing links judiciously to tackle the issue of oversharing.
Sharing is a powerful feature for collaboration. However depending on how items, files or folders are shared, a sharing link might be created or unique permissions on these items are created.
posts
Manage SharePoint Premium - SharePoint Advanced Management Settings Using PowerShell to protect data in M365 Copilot Rollout
Manage SharePoint Premium - SharePoint Advanced Management Settings Using PowerShell to protect data in M365 Copilot Rollout SharePoint Premium - SharePoint Advanced Management offers features to help prevent data oversharing and accidental leaks, which is crucial for a successful rollout of M365 Copilot. This guide will show you how to manage these settings using PowerShell.
For an overview, read the Microsoft SharePoint Premium - SharePoint Advanced Management overview.
This post covers how to manage SharePoint Premium - SharePoint Advanced Management settings at both the tenant and site level using PowerShell.
posts
Restrict certain SharePoint sites from tenant search and M365 Copilot using PowerShell
Excluding certain SharePoint sites from search would mean the contents from the excluded sites won’t be available to M365 tenant search and M365 Copilot using Restricted SharePoint Search feature.
The downsides using this feature are:
Limited Findability: By excluding certain SharePoint sites from search, you limit the findability of data. Users would need to know the specific sites where the data resides in order to search for it. This can hinder efficient data retrieval and records management.
posts
Empowering Secure Collaboration: Configuring Microsoft Loop Sharing Tenant and Site Settings with PowerShell
Empowering Secure Collaboration: Configuring Microsoft Loop Sharing SharePoint Tenant and Site Settings with PowerShell Guest users can be invited to collaborate within Microsoft Loop in the tenant. Refer How to work with guest users using Microsoft Loop how sharing within Loop works.
This post focuses on using PowerShell to control the Microsoft Loop sharing settings to help securing data especially with M365 Copilot which can expose data not previously accessible by other means.
posts
PowerShell Script to Query Unique Permissions in SharePoint
Query Unique Permissions in SharePoint using CSOM and PnP PowerShell Managing permissions in SharePoint is a critical aspect of maintaining data security and compliance within organisations. However, as SharePoint environments grow in complexity, manually auditing and managing permissions becomes increasingly challenging. To address this challenge, PowerShell scripts can be leveraged to automate the auditing process, providing administrators with valuable insights into permission structures across SharePoint sites and libraries.
What do SharePoint permissions have to do with Copilot for Microsoft 365?
Tag: Plugin
posts
Limitations of OpenAPI Spec with Complex Objects in Copilot Declarative Agents
Introduction In a previous post, I detailed the steps for Building a Copilot Agent with Teams Toolkit and Microsoft Graph Plugin to List My ToDo Tasks. However, I encountered issues with the CreateTask function when using an OpenAPI spec generated with Kiota. Upon investigation, I identified the problem as being related to the handling of complex objects, particularly those involving dates. Even after simplifying the object structure, the CreateTask function continued to fail.
posts
Building a Copilot Agent with Teams Toolkit and Microsoft Graph Plugin to list my ToDo Tasks
Introduction This guide walks you through creating a Copilot agent using Teams Toolkit and Microsoft Graph API. By leveraging OpenAPI specifications, Kiota, and Teams Toolkit, you can build a plugin to interact with Microsoft Graph endpoints. I used the blog post Copilot Graph API QnA Plugin by Franck Cornu as inspiration with some variation to apply it to get my ToDo tasks.
Plugins for Copilot agents rely on OpenAPI specifications. While the complete Microsoft Graph OpenAPI specification exists, it is a massive file (34MB) and not practical for performance reasons.
posts
Troubleshooting Copilot Agent Teams Toolkit M365Graph Plugin Issues
Troubleshooting Copilot Agent Teams Toolkit M365Graph Plugin Issues When building a Copilot agent using Teams Toolkit, you may encounter certain errors that can hinder your progress. This blog post highlights common issues and provides solutions to help you resolve them effectively.
Common Issues and Fixes 1. name_for_human Exceeds 20 Characters Issue: You may encounter the following error when the name_for_human field in the ai-plugin.json file exceeds 20 characters:
name_for_human in PluginManifestDocument has characters beyond the length 20 that MAY be ignored.
Tag: Teams
posts
Limitations of OpenAPI Spec with Complex Objects in Copilot Declarative Agents
Introduction In a previous post, I detailed the steps for Building a Copilot Agent with Teams Toolkit and Microsoft Graph Plugin to List My ToDo Tasks. However, I encountered issues with the CreateTask function when using an OpenAPI spec generated with Kiota. Upon investigation, I identified the problem as being related to the handling of complex objects, particularly those involving dates. Even after simplifying the object structure, the CreateTask function continued to fail.
posts
Building a Copilot Agent with Teams Toolkit and Microsoft Graph Plugin to list my ToDo Tasks
Introduction This guide walks you through creating a Copilot agent using Teams Toolkit and Microsoft Graph API. By leveraging OpenAPI specifications, Kiota, and Teams Toolkit, you can build a plugin to interact with Microsoft Graph endpoints. I used the blog post Copilot Graph API QnA Plugin by Franck Cornu as inspiration with some variation to apply it to get my ToDo tasks.
Plugins for Copilot agents rely on OpenAPI specifications. While the complete Microsoft Graph OpenAPI specification exists, it is a massive file (34MB) and not practical for performance reasons.
posts
Troubleshooting Copilot Agent Teams Toolkit M365Graph Plugin Issues
Troubleshooting Copilot Agent Teams Toolkit M365Graph Plugin Issues When building a Copilot agent using Teams Toolkit, you may encounter certain errors that can hinder your progress. This blog post highlights common issues and provides solutions to help you resolve them effectively.
Common Issues and Fixes 1. name_for_human Exceeds 20 Characters Issue: You may encounter the following error when the name_for_human field in the ai-plugin.json file exceeds 20 characters:
name_for_human in PluginManifestDocument has characters beyond the length 20 that MAY be ignored.
posts
Overcoming Limitations of SharePoint Sites Associated with Teams Private and Shared Channels: Tips and Hacks
Introduction Microsoft Teams offers private and shared channels as specialized collaboration spaces to cater to different organizational needs. While these channels provide enhanced security and collaboration features, they come with specific limitations and management challenges, particularly around the associated SharePoint sites.
This post covers some limitations, and management tips for SharePoint sites associated with private and shared channels, including PowerShell hacks and governance practices to overcome these challenges.
Managing SharePoint Sites for Private and Shared Channels SharePoint sites associated with private and shared channels are special types of sites with the limitations as identified by Gregory in his blog post Why you should never mess with Private and Shared Channel SharePoint Sites related to the inability to attach to a hub directly, being accessible from the Teams interface mainly, and inability to manage permissions at the site level, and with constrained external sharing.
posts
Identifying Duplicate Microsoft 365 Group Names Using PowerShell
Introduction It is possible to create M365 Groups and Teams with the same name, and there is currently no built-in way to prevent this. The new Team/Site/M365 Group is created with a random number appended to the Team name for the SharePoint site and m365 Group email address.
Having duplicate names can cause confusion and increase risks, including:
Wrongly Granting Permissions: Users may accidentally grant permissions to the wrong M365 Group or Team, leading to unauthorized access.
posts
Update Teams Channel Tab display name using PnP PowerShell
Introduction Renaming the ‘Files’ tab in Microsoft Teams to something more meaningful for your business, such as “All Access,” can enhance user experience. It can help to differentiate other document libraries added as tabs. The Files has been renamed to Shared for chats to show all the files and links that were sent in the chat, making it easier to find them- all in one place. However, it is not possible to rename the Files and Posts tabs from the UI within channels.
posts
Prevent Guests from Being Added to a Specific Microsoft 365 Group or Microsoft Teams team using PnP PowerShell
Introduction By default, guest access for Microsoft 365 groups is enabled within the tenant. This can be controlled either to allow or block guest access at the tenant level or for individual Microsoft 365 groups / Teams. For more information, check out Manage guest access in Microsoft 365 groups.
PowerShell Script to Prevent Guest Access Below is a PowerShell script that allows you to disable/enable guest access for specific Microsoft 365 groups.
posts
Microsoft Teams - Teams icon missing in New chats & channels experience
Introduction If ever you had the chance to get your hands onto the New chats & channels experience, you may notice that the Teams icon is missing from the tray on the left To access the channels, it is an option within the chats.
Revert In case you find it confusing you can turn it off by following those steps
Click on the button Update, settings and more at the top of Teams
posts
Teamifying an Existing M365 Group with PowerShell
Teamifying an Existing M365 Group with PowerShell Within M365 , SharePoint and Teams together provides a rich collaboaration platform. When a team site is created from SharePoint admin centre, it is not associated with a Teams despite a M365 group is created in the background. To extend SharePoint collaboration features , there is a need to “teamify” an existing Microsoft 365 Group, essentially attaching a new Teams instance to it to allow use of channels and other apps.
posts
Retrieving SharePoint Site URL for Teams Channels
Retrieving SharePoint Site URL for Teams Channels Have you ever needed to construct the SharePoint site URL for a private or shared channel using just the channel name? This post will guide you through the process using Microsoft Graph endpoint and PnP PowerShell though PowerShell.
You may need the details for these reasons
To specify within a retention policy Purview Retention Policy Questions from the Field eDiscovery Extract from eDiscovery of private and shared channels “Each private and shared channel has its own SharePoint site that’s separate from the parent team site.
posts
Teams Add-in Not Showing Within Outlook
Teams Add-in Not Showing Within Outlook The add-in for setting up a teams meeting within the outlook application was no longer showing. The add-in was not available to be enabled within Outlook as per Troubleshoot the Teams Meeting add-in in Outlook for Windows. Even after reinstalling Teams or creating a new profile within Outlook, it did not fix the issue. As a workaround I was using
Use Team calendar to create meeting Use Outlook Web App to create meetings With Microsoft Support’s help via a case we identified the issue was the missing following key:
Tag: M365 Copilot declarative agent
posts
Microsoft Graph: Challenges with UserInformationList Search and Filter
Introduction When working with the UserInformationList in SharePoint via Microsoft Graph, you might encounter challenges when trying to search or filter user information. This post highlights the issues I faced while attempting to use $search and $filter queries on the UserInformationList, along with examples and insights within M365 Copilot declarative agent.
Issue 1: Search by Email Did Not Work I attempted to search for a user by their email address using the $search query, but it did not return any results.
Tag: User Information List
posts
Microsoft Graph: Challenges with UserInformationList Search and Filter
Introduction When working with the UserInformationList in SharePoint via Microsoft Graph, you might encounter challenges when trying to search or filter user information. This post highlights the issues I faced while attempting to use $search and $filter queries on the UserInformationList, along with examples and insights within M365 Copilot declarative agent.
Issue 1: Search by Email Did Not Work I attempted to search for a user by their email address using the $search query, but it did not return any results.
Tag: Azure AI Search
posts
Step by step guide to integrate Microsoft 365 Copilot declarative agents with Azure AI Search
Introduction In this post, I’ll walk you through how to call Azure AI Search APIs from a M365 Copilot declarative agent without writing any code by using Teams Toolkit. Leveraging OpenAPI specifications, Teams Toolkit enables seamless integration with Azure AI Search, streamlining the development process for Copilot extensibility.
Waldek Mastykarz wrote an insightful post on when Azure AI Search can be used, highlighting its ability to provide a more controlled approach to indexing and relevance without the complexity of building a custom engine agent.
Tag: For a selected file
posts
Power Automate - Trigger a Flow from multiple Libraries/lists and sites
Introduction In this blog post, we’ll explore how to trigger a single Power Automate flow from multiple SharePoint libraries, lists, and sites. This approach is particularly useful for standardizing workflows across different document libraries and sites, avoiding the need to replicate flows multiple times. This not only simplifies maintenance but also streamlines deployment.
The For a selected file or For a selected item trigger action is key to achieving this. While the Manually trigger a flow action was considered, it does not pass the necessary context (site URL, library ID/name, and item ID) to the flow, making it unsuitable for this scenario.
Tag: For a selected item
posts
Power Automate - Trigger a Flow from multiple Libraries/lists and sites
Introduction In this blog post, we’ll explore how to trigger a single Power Automate flow from multiple SharePoint libraries, lists, and sites. This approach is particularly useful for standardizing workflows across different document libraries and sites, avoiding the need to replicate flows multiple times. This not only simplifies maintenance but also streamlines deployment.
The For a selected file or For a selected item trigger action is key to achieving this. While the Manually trigger a flow action was considered, it does not pass the necessary context (site URL, library ID/name, and item ID) to the flow, making it unsuitable for this scenario.
Tag: libraries
posts
Power Automate - Trigger a Flow from multiple Libraries/lists and sites
Introduction In this blog post, we’ll explore how to trigger a single Power Automate flow from multiple SharePoint libraries, lists, and sites. This approach is particularly useful for standardizing workflows across different document libraries and sites, avoiding the need to replicate flows multiple times. This not only simplifies maintenance but also streamlines deployment.
The For a selected file or For a selected item trigger action is key to achieving this. While the Manually trigger a flow action was considered, it does not pass the necessary context (site URL, library ID/name, and item ID) to the flow, making it unsuitable for this scenario.
posts
PowerShell: Finding and Deleting Files in SharePoint Libraries
Introduction Managing files in SharePoint libraries can be challenging, especially when dealing with test data or bulk operations. For instance, you may need to find and delete files containing specific names or patterns to reset a testing environment. This blog post demonstrates how to use PowerShell to locate and delete files in SharePoint libraries, including associated data in lists, to streamline the testing process.
In this example, we had PDF files containing a series of receipts that were split into individual files using Power Automate with the Encodian connector.
posts
Update managed metadata field using list formatting
Using column formatting in SharePoint, you can update the values of other fields using the setValue function. This approach allows you to create dynamic functionality in your lists and libraries without extensive development, helping to avoid accumulating technical debt.
Updating a Managed Metadata field, however, is not as straightforward as simply specifying the display value. The field expects a specific format that includes the term’s ID (termId).
Understanding Column Formatting Column formatting in SharePoint involves using a combination of inline CSS, HTML, and JSON to control how fields in lists and libraries are displayed.
posts
Get Total Count of SharePoint Files, Folders, and Items with PnP PowerShell
Get Total Count of SharePoint Files, Folders, and Items with PnP PowerShell This PowerShell script powered by PnP PowerShell can help to get total count of files, folders, and list items across SharePoint tenant. This script is invaluable for administrators looking to perform audits, verify data migrations, or simply keep tabs on the content sprawl within their environments. The use case of this script was to get a total number of items that would be ingested into a third party application Records365 (provided by RecordPoint) to ensure the number tally for compliance purposes and identify any gaps.
posts
Get Folder Item properties using PnP PowerShell : Get-PnPFolderItem versus Get-PnPListItem
Get Folder Item properties using PnP PowerShell : Get-PnPFolderItem versus Get-PnPListItem Introduction In this blog post, we will explore an alternative approach to retrieving folder item properties using PnP PowerShell. We will discuss the limitations of the Get-PnPFolderItem cmdlet and demonstrate how to use Get-PnPListItem to overcome those limitations.
The Limitations of Get-PnPFolderItem The Get-PnPFolderItem cmdlet is not suitable for working with large libraries. When attempting to retrieve items from a large library, you may encounter the following error message:
posts
Internal References in SharePoint Column Formatting for Document libraries: leveraging Name, Folder and Path properties
SharePoint Column Formatting for Document libraries: Leveraging Name, Folder and Path properties While referencing [$Title] in lists is straightforward, document libraries demand a nuanced approach. Instead of [$Name], had to delve into the intricacies of internal names like $FileLeafRef and $FileRef when working with column formatting.
$FileLeafRef: Denotes the name of the file.
$FileRef: Represents the server-relative URL of the file.
Initial attempts to incorporate $FileSystemObjectType for folder identification was challenging, indicating that not all document library internal column names are supported.
Tag: Power Automate
posts
Power Automate - Trigger a Flow from multiple Libraries/lists and sites
Introduction In this blog post, we’ll explore how to trigger a single Power Automate flow from multiple SharePoint libraries, lists, and sites. This approach is particularly useful for standardizing workflows across different document libraries and sites, avoiding the need to replicate flows multiple times. This not only simplifies maintenance but also streamlines deployment.
The For a selected file or For a selected item trigger action is key to achieving this. While the Manually trigger a flow action was considered, it does not pass the necessary context (site URL, library ID/name, and item ID) to the flow, making it unsuitable for this scenario.
posts
Power Automate: Retrieve SharePoint Library Internal Name
Power Automate: Retrieve SharePoint Library Internal Name When working with Power Automate, you may encounter scenarios where you need the internal name of a SharePoint library. For example, when creating a file in a library using Power Automate, the internal name is often required. Instead of manually adding the internal name as an environment variable, you can dynamically retrieve it using the Send an HTTP Request to SharePoint action.
This blog post demonstrates how to retrieve the internal name of a SharePoint library using its ID or display name.
posts
Switching from Classic to New Designer in Power Automate
Introduction Have you ever encountered a stubborn Power Automate flow that won’t open in the new designer? For a long time, I stuck with the classic designer due to issues I faced with the new designer. However, I recently decided to make the switch for these reasons:
New Power Automate features will only be available in the new designer Microsoft will get rid of classic designer Future proof flows as they might not be editable if classic designer is gone unless Microsoft caters for incompatible action schemas In this blog post, I’ll share my experience and the steps I took to transition from the classic designer to the new designer in Power Automate.
posts
Get Library Drive Id using Power Automate
When using Power Automate with Excel for Business actions, the drive ID for a library is automatically determined. However, if you deploy a Power Automate solution across different environments and use a library as a datasource environment variable, referencing this variable in the flow can result in an error due to an invalid drive ID.
Referencing the variable in the Power Automate flow, it will throw an error message failing to work our the drive id of the library.
posts
Power Automate: Filter Array to Exclude First Approver from List of Approvers
Introduction In Power Automate, there are scenarios where a specific item needs to be excluded from an array to exclude. This blog post will guide you through the process of filtering an array to exclude the first approver from a list of approvers. This can be particularly useful in approval workflows where same person does not approve multiple stages.
Step-by-Step Guide Add Filter Array Action This action will allow filtering out the first approver from the list of approvers.
posts
Power Automate: Using Arrays as Environment Variables
Introduction In Power Automate/Power Platform, environment variables within solutions are essential for managing and configuring flows across different environments. However, there is no direct way to declare an environment variable as an array. This blog post will cover how to use JSON to store arrays as environment variables, enabling you to manage complex data structures efficiently.
Available Environment Variable Types Power Automate offers various types of environment variables you can select and configure:
posts
Power Automate: Get Page Author Details
Introduction In Power Automate, retrieving details about the author of a SharePoint page can be essential for various workflows. This blog post will guide you through the steps to get the page author details using Power Automate.
Add Send an Http request to SharePoint action and rename it to Get Page Author Details.Configure the action with the following settings: Site Address: triggerOutputs()?[‘body/SiteUrl’] Method: Get Uri : /_api/web/_api/Web/GetUserById(body(‘Parse_Page_Details_JSON’)?[’d’]?[‘AuthorId’]) Output of the API
posts
Display instagram posts into SharePoint using Instagram Basic Display Independent Publisher Connector
How to Use the Instagram Basic Display Connector in Power Apps and Power Automate Instagram is a popular social media platform with over 1 billion monthly active users. It is a great platform for sharing photos and videos, and many businesses use it to promote their products and services. With the Instagram Basic Display (IndependentPublisher) connector, you can now easily retrieve data from Instagram accounts and use it in Power Apps and Power Automate.
posts
Refresh long-lived token via Instagram Graph API
Learn how to automatically refresh long-lived access tokens using the Instagram Graph API. Refer to how the Long-Lived Access Tokens for more info.
Long-lived tokens are valid for 60 days and can be refreshed as long as they are at least 24 hours old but have not expired, and the app user has granted your app the instagram_graph_user_profile permission. Refreshed tokens are valid for 60 days from the date at which they are refreshed.
posts
Power Automate: Export Flow within solution as package (.zip)
I had a flow created in the default environment that needed to be moved into a solution in a managed environment. However, the export link for Package (.zip) was missing as the flow was within a default solution (preferred).
It was a huge flow, and manually recreating each action would have taken a considerable amount of time.
I checked another flow where the Package (.zip) was available.
Upon clicking the link, I noticed that /export was appended to the URL of the flow.
posts
Power Automate : Move File bypassing locked issue using CreateCopyJobs endpoint
The SharePoint - Move file action can be used to move files, however the file can’t be moved if the file was accessed by the current Power Automate flow for any processing reslutng in a locked file error.
{ “status”: 400, “message”: “File ‘Shared Documents/Attendances/To Be Processed/Attendance -16072024.xlsx’ cannot be moved because it is in locked mode.\r\nclientRequestId: d6df7566-881f-4f14-8548-c5fac1eda46d\r\nserviceRequestId: 606841a1-40f0-9000-9c69-507df9b21720” }
Handling Locked Files There are two options to handlelocked files when using SharePoint - Move file action:
posts
JSON Data Handling in Power Automate: Double Quotes
When using Power Automate action Send an Http request to SharePoint specially to send data in the body to a REST API call, for instance to create a news link from a SharePoint List Item, you might encounter issues if the body contains double quotes in the title or description. This blog post will walk you through the problem and provide solutions to handle double quotes in JSON strings.
Problem Overview Using the Send an Http request to SharePoint action to create a news link can fail if the JSON body contains double quotes.
posts
Power Automate: Create and Publish a News Link
This post covers how to leverage SharePoint REST API to create and publish a news link from Power Automate using the Send an Http request to SharePoint action.
Within a Power Automate flow follow the steps below to create and publish a news link details.
Send an Http request to SharePoint action renamed to Get Page Details. Site Address : site url Method : GET Uri : /_api/web/lists/GetByTitle(‘Site%20Pages’)/items(10) Parse JSON renamed to Parse Page Details JSON Add the action Parse JSON and refer to the content from previous steps
posts
Power Automate: Retrieve User Details
This post covers how to leverage SharePoint REST API to get user details from Power Automate using the Send an Http request to SharePoint action.
Within a Power Automate flow follow the steps below to retrieve a user details.
Send an Http request to SharePoint action renamed to Get Page Author Details Site Address: https://test.sharepoint.com Method: GET URI: _api/Web/GetUserById(14) Here’s the output from the API:
Here’s the output from the API:
posts
Power Automate: Retrieve Users from a SharePoint Group
This post covers how to leverage SharePoint REST API to get users from a SharePoint group from Power Automate using the Send an Http request to SharePoint action. In the example below a SharePoint Group has been defined for approvers of a particular process and needed to be retrieved to be assigned an approval task.
Within a Power Automate flow follow the steps below to retrieve users from a SharePoint group.
posts
Power Automate : Update Author and Editor of a Page
This post outlines how to use Power Automate to update author and editor of a Page within SharePoint using the Send an Http request to SharePoint action.
Within a Power Automate flow, follow the following steps
Add Send an Http request to SharePoint renamed to Update Author Properties Property Value Site Address The SharePoint site URL Method POST Uri See Uri below Headers See Headers table below Body See Body below Uri _api/web/lists/GetByTitle(‘Site%20Pages’)/items(1)/ValidateUpdateListItem()`
posts
Update A row action from Dataverse connector missing in Power Automate flow
Update A row action from Dataverse connector was not available to an older Power Automate.The requirement was to add ability to cancel an approval task created via action ‘Create Approval’ within 30 days as Power Automate flows timeout after 30 days. I noticed the action Update a Row in Selected Environment and decided to try it instead.
Unfortunately it threw the forbidden error for no apparent reason with no obvious permissions to grant.
posts
Power Automate copy actions across different environments
Power Automate copy actions across different environments If an action is copied from a different environment, the action is not avaible from the My Clipboard, if not you are presented with the following message only.
Save time and paste your most-used Flow code snippets here.
Select the ellipsis menu on any trigger or action, then choose Copy to my Clipboard.
Note: Pasted code clears each time you log out of Power Automate.
posts
Importing Dates and Numbers from Excel file into SharePoint list with Power Automate
Importing Dates and Numbers from Excel file into SharePoint list with Power Automate Transferring data from Excel to SharePoint lists can encounter format issues, especially with datetime and number fields. This post covers solutions to some challenges particularly related to dates and numbers.
The flow is quite simple with an action to read contents from excel file and an action to create items into a sharepoint list.
Handling DateTime Fields When importing datetime data with the “List rows present in a table” action from the “Excel Online for Business” connector, you might encounter format related errors.
posts
Handling Locked Office Files issue In Power Automate
Handling Locked Office Files issue In Power Automate Inspired by the workaround described by Pieter Veenstra System Updates in SharePoint from Power Automate using the ValidateUpdateListItem endpoint to help with the locked file issue, this post covers file version creation as well.
File Locked Issue File lock issues in Power Automate can occur due to:
The file being opened by a user. The file being updated by a Power Automate flow, which may take up to 6 minutes to release the lock.
posts
Power Automate updating multi line field with more than 255 characters
Power Automate flow succeeded despite failure to update multi line text field within a SharePoint Library Updating multi-line text fields in a SharePoint Library from Power Automate flows, especially when the content exceeds 255 characters might fail if the field is not updated to allow unlimited length. This can cause workflows to fail silently.
In a recent scenario, an action was added to a Power Automate flow to update a SharePoint Library’s multi-line text field named ‘ErrorLog’ with error details captured during the flow’s execution.
posts
DateTime Handling in Power Automate
DateTime Handling in Power Automate Manipulating dates and times in Power Automate is a requirement at times. This post covers a few useful scenerios.
Add To Time For instance, adding a specific number of months to a date retrieved from an action using AddToTime function:
addToTime(body(‘Wait_for_an_approval_2’)?[‘completionDate’], int(body(‘Get_file_properties’)?[‘ReviewFrequency’]?[‘Value’]), ‘Month’, ‘dd/MM/yyyy HH:mm’)
Substract Time Specific number of months can be substracted from the date retrieved from an action
string(subtractFromTime(items(‘Apply_to_each’)?[‘DueDate’],1,‘Month’,‘dd/MM/yyyy HH:mm’))
Format Date Time Formatting date to a specific string format is essential otherwise update of data fields might fail because of culture differences.
posts
Power Automate fix for InvalidTemplate: Unable to process template language expressions
Power Automate fix for InvalidTemplate: Unable to process template language expressions InvalidTemplate. Unable to process template language expressions in action can happen with actions within PowerAutomate. In my scenerio I added the encodian action ‘Convert_to_PDF’ and was resubmitting a flow for testing and kept getting the error message.
InvalidTemplate. Unable to process template language expressions in action ‘Convert_to_PDF’ inputs at line ‘0’ and column ‘0’: ‘The template language expression ‘json(decodeBase64(secrets(‘X-MS-APIM-Tokens’)))[’$connections’][‘shared_encodiandocumentmanager’][‘connectionId’]’ cannot be evaluated because property ‘shared_encodiandocumentmanager’ doesn’t exist, available properties are ‘shared_sharepointonline, shared_office365, shared_approvals, shared_teams_1’.
posts
Publishing Major Versions of Files in SharePoint with Power Automate
Publishing Major Versions of Files in SharePoint with Power Automate This post covers how to publish major versions for Office documents (Word, Excel, or PowerPoint) in SharePoint using Power Automate, especially after an approval task using the checkin and publish REST endpoints. This applies to libraries having minor versions enabled
Just for context, a Power Automate approval flow with trigger for a selected file needed publishing for the selected file as major version after being approved.
posts
Power Automate - Restore deleted flows
I accidentally deleted a power automate flow and needed a way of restoring it. I stumbled on Restore deleted flows to restore the deleted flows.
However the action List Flows as Admin (v2) was not returning all the flows, hence the deleted flow was missing. If it happens , enables the pagination setting of the action withing settings tab and set the threshold to ensure the number is more than number of flows you have in the environment.
posts
JSON Data Handling in Power Automate: outputs versus body
JSON Data Handling in Power Automate : outputs versus body In Power Automate, JSON data output from various actions is key to connect each other.
Accessing Action Outputs Accessing the outputs of a specific action, such as the action ‘Get file properties’, the spcific property can be accessed via the outputs, for instance file name with extension.:
outputs(‘Get_file_properties’)?[‘body/{FilenameWithExtension}’]
Referencing Action Body A streamlined way is to reference the body directly making it simpler.
posts
Optimizing Email HTML for Outlook
Optimizing Email HTML for Outlook using the ‘Send Email’ action within Power Automate When crafting attention-grabbing emails, the HTML structure plays a pivotal role. I recently encountered challenges in achieving consistent formatting across Outlook desktop and web versions using the Send Email action within Power Automate.
Using div Tags for Responsiveness At first, I experimented with divs to ensure responsiveness and modern HTML formatting. The code appeared as follows:
<style> .
Tag: Trigger
posts
Power Automate - Trigger a Flow from multiple Libraries/lists and sites
Introduction In this blog post, we’ll explore how to trigger a single Power Automate flow from multiple SharePoint libraries, lists, and sites. This approach is particularly useful for standardizing workflows across different document libraries and sites, avoiding the need to replicate flows multiple times. This not only simplifies maintenance but also streamlines deployment.
The For a selected file or For a selected item trigger action is key to achieving this. While the Manually trigger a flow action was considered, it does not pass the necessary context (site URL, library ID/name, and item ID) to the flow, making it unsuitable for this scenario.
Tag: PowerShell
posts
Updating Multiline Text Field Properties in SharePoint Using PowerShell
Introduction Managing multiline text fields in SharePoint can be tricky, especially when certain field properties are not visible or editable at the library/list level, even though they are available at the site level.
For example, at the site level, you can configure properties such as:
Append Changes to Text Number of Lines Field Type: Plain Text, Rich Text, or Enhanced Rich Text However, these settings may not appear at the library/list level, as shown below:
posts
Retrieve Effective Permissions of an user within SharePoint Sites Using PowerShell
Managing permissions in SharePoint can be challenging, especially when users are granted access through various means such as direct permissions, shared links, SharePoint groups, or M365 groups. To simplify this process, you can use the effectivepermissions endpoint to retrieve and analyze permissions assigned to users at the site, list/library, and item/file/folder levels.
This blog post demonstrates how to use PowerShell to identify and retrieve effective permissions for end users across SharePoint sites.
posts
Searching Sensitivity Labels in SharePoint
Searching Sensitivity Labels in SharePoint Sensitivity labels are a powerful tool for protecting documents, offering features like watermarks, encryption, and access control at the file level. However, the default Sensitivity column in SharePoint has limitations—it cannot be filtered, indexed, or bulk updated. This blog post explores ways to search for sensitivity label values in SharePoint and highlights some challenges and potential solutions.
Challenges with Sensitivity Labels in SharePoint The crawled managed property InformationProtectionLabelId refers to the sensitivity label’s GUID/ID, which is not user-friendly for end users to easily search.
posts
Finding Storage Nearing Exceeding Quota with PowerShell
Monitoring Storage Quotas with PowerShell Managing storage quotas in Microsoft 365 is critical to ensure uninterrupted service and optimal performance. This blog post demonstrates how to use a PowerShell script to monitor storage usage across SharePoint Online sites and identify sites nearing or exceeding their storage quotas.
Script Overview The script connects to the SharePoint Online admin center, retrieves site storage details, calculates the percentage of storage used, and generates a report for sites exceeding 80% of their allocated storage quota.
posts
Pinning Fields to the Filter Pane in SharePoint Libraries Using PowerShell
Introduction In SharePoint Online, the filter pane is a powerful feature that allows users to quickly filter and find relevant data in libraries and lists. However, by default, not all fields are visible in the filter pane. To enhance usability, you can pin specific fields to the top of the filter pane using PowerShell or the REST API.
This blog post demonstrates how to use PowerShell and the REST API to pin fields to the filter pane in SharePoint libraries.
posts
PowerShell: Finding and Deleting Files in SharePoint Libraries
Introduction Managing files in SharePoint libraries can be challenging, especially when dealing with test data or bulk operations. For instance, you may need to find and delete files containing specific names or patterns to reset a testing environment. This blog post demonstrates how to use PowerShell to locate and delete files in SharePoint libraries, including associated data in lists, to streamline the testing process.
In this example, we had PDF files containing a series of receipts that were split into individual files using Power Automate with the Encodian connector.
posts
PowerShell: Identifying SharePoint Site Creation Sources
Introduction Understanding how a SharePoint site was created is crucial for governance, compliance, and troubleshooting. In Microsoft 365, SharePoint sites can be created through various methods, such as Microsoft Teams, Viva Engage, the SharePoint Admin Center, and more. However, identifying the exact creation source can sometimes be challenging.
For example, exporting the list of active sites from the SharePoint Admin Center may not always provide accurate information. Communication sites, for instance, may incorrectly show their creation source as “Microsoft M365 Group,” even though they can only be created from the SharePoint Admin Center.
posts
Issues with Default Sensitivity Labels in SharePoint Document Libraries
Introduction Default sensitivity labels can be set at the document library level in SharePoint to help manage and protect your data.
However, there are some limitations and issues that you should be aware of like the default sensitivity label does not automatically update existing files within SharePoint and there might be delay in applying the sensitivity label within M365 app. This is described in the documentation for Configuring a default sensitivity label for a SharePoint document library.
posts
Ensure Taxonomy Feature in SharePoint Sites Connected to Private/Shared Teams Channels
Introduction Taxonomy feature is not activated by default in SharePoint sites linked to a private or shared Teams Channels. When attempting to add content types with managed metadata columns, you may encounter an error message stating “Taxonomy disabled”.
To resolve this issue, you can enable the taxonomy feature with the ID 73ef14b1-13a9-416b-a9b5-ececa2b0604c using the PowerShell cmdlet Enable-PnPFeature before adding the content types to the sites with the template TEAMCHANNEL#1.
Script to check whether feature taxonomy is enabled Get-PnPFeature -Scope Site | Where-Object { $_.
posts
Automate the Removal of Expired Sharing Links in SharePoint with PowerShell
Sharing is a great feature for collaboration. However, depending on how items, files, or folders are shared, a sharing link might be created or unique permissions on these items are created. It is possible to set an expiration date on sharing links in SharePoint and OneDrive. For more details, please refer to How to set an expiration date on sharing links in SharePoint and OneDrive. Microsoft introduced the capability to set an expiry date for all types of sharing links: “Anyone”, company-wide (aka.
posts
Deletion of company-wide and anonymous sharing links with PowerShell
Sharing is a powerful feature for collaboration. However depending on how items, files or folders are shared, a sharing link might be created or unique permissions on these items are created. The sharing link is created when the copy links is clicked from the sharing pop up options when people other those already have existing access are picked.
However by default, if sharing options have not been configured, links to “People in ” or “Anyone” (if external sharing is allowed) is selected
posts
Overcoming Limitations of SharePoint Sites Associated with Teams Private and Shared Channels: Tips and Hacks
Introduction Microsoft Teams offers private and shared channels as specialized collaboration spaces to cater to different organizational needs. While these channels provide enhanced security and collaboration features, they come with specific limitations and management challenges, particularly around the associated SharePoint sites.
This post covers some limitations, and management tips for SharePoint sites associated with private and shared channels, including PowerShell hacks and governance practices to overcome these challenges.
Managing SharePoint Sites for Private and Shared Channels SharePoint sites associated with private and shared channels are special types of sites with the limitations as identified by Gregory in his blog post Why you should never mess with Private and Shared Channel SharePoint Sites related to the inability to attach to a hub directly, being accessible from the Teams interface mainly, and inability to manage permissions at the site level, and with constrained external sharing.
posts
Identifying Duplicate Microsoft 365 Group Names Using PowerShell
Introduction It is possible to create M365 Groups and Teams with the same name, and there is currently no built-in way to prevent this. The new Team/Site/M365 Group is created with a random number appended to the Team name for the SharePoint site and m365 Group email address.
Having duplicate names can cause confusion and increase risks, including:
Wrongly Granting Permissions: Users may accidentally grant permissions to the wrong M365 Group or Team, leading to unauthorized access.
posts
Update Teams Channel Tab display name using PnP PowerShell
Introduction Renaming the ‘Files’ tab in Microsoft Teams to something more meaningful for your business, such as “All Access,” can enhance user experience. It can help to differentiate other document libraries added as tabs. The Files has been renamed to Shared for chats to show all the files and links that were sent in the chat, making it easier to find them- all in one place. However, it is not possible to rename the Files and Posts tabs from the UI within channels.
posts
Adding M365 Group/Teams Owners and Members to SharePoint Group with PnP PowerShell
Introduction There are situations where you might want to reuse the M365 Group principals to assign permissions to other sites without creating additional Entra ID groups. This can be useful for:
Adding M365 group members to a SharePoint site, such as an intranet site for ‘Human Resources’ managed by the ‘Human Resources’ M365 Group/Teams or a hub site managed by a ‘Service Desk’ M365 Group/Teams. Adding M365 group members to custom or out-of-the-box SharePoint groups, such as adding particular M365 group owners or members to custom groups created for additional libraries within a different site.
posts
Prevent Guests from Being Added to a Specific Microsoft 365 Group or Microsoft Teams team using PnP PowerShell
Introduction By default, guest access for Microsoft 365 groups is enabled within the tenant. This can be controlled either to allow or block guest access at the tenant level or for individual Microsoft 365 groups / Teams. For more information, check out Manage guest access in Microsoft 365 groups.
PowerShell Script to Prevent Guest Access Below is a PowerShell script that allows you to disable/enable guest access for specific Microsoft 365 groups.
posts
Automate Renewal of Expiring M365 Groups Using PowerShell
Introduction Managing the lifecycle of Microsoft 365 Groups is important to prevent accidental deletion of M365 Groups. It is a good practice to set lifecycle expiration policy to control sprawl. However that means that the group will get automatically deleted after they expire. The Teams/M365 groups owners will get email notifications to renew within a certain timeframe , however if the owners missed the renewal notifications for different reasons, it may lead to accidental data loss.
posts
Manage 'Everyone' and 'Everyone except external users' claim within a SharePoint site using PowerShell
Introduction As part of Microsoft 365 Copilot readiness, you may want to find where “Everyone and “Everyone except external users” claims are granted permissions which is a cause of oversharing. This blog post will guide you through using PowerShell to manage and audit the “Everyone” and “Everyone except external users” claims within your SharePoint site collection.
For more insights on why the “Everyone except external users” group is riskier than “People in your organization,” refer to Copilot for Microsoft 365 Data Ready – Where “Everyone except external users” group is more risky than “People in your organization” links!
posts
PowerShell: Fetch Files with Retention or Sensitivity Labels in SharePoint Online
Introduction Understanding the sensitivity and retention labels applied to files in your SharePoint Online sites is essential for maintaining data security and compliance. These labels enable you to manage and protect your data by defining retention periods and handling sensitive information appropriately. This is particularly important for initiatives like the Microsoft 365 Copilot rollout, ensuring that the correct files are stored within the appropriate SharePoint sites. For example, if a SharePoint site is a public Team site, files labeled as confidential should be moved to a private Team site or existing Team site updated from public to private.
posts
PnP Powershell GetPnPflow using asAdmin parameter
As part of the multi tenant app registration for PnP PowerShell deprecated on the 9th September 2024, we need to have our own app registration and grant the required permissions. Read more from Changes in PnP Management Shell registration in Microsoft 365
For the cmdlet Get-PnPFlow it requires permissions Azure: management.azure.com which is Azure Service Management
Simply adding the permission as it does not require admin consent and executing the cmdlet below yields no results
posts
Audit Service Principal Access to SharePoint Sites with Sites.Selected Permissions
Ensuring the security and compliance of your SharePoint environment is crucial, especially when dealing with service principals, Entra ID apps, or federated identities. These entities often have elevated permissions that, if mismanaged, can lead to unauthorized access and potential data breaches. Regularly auditing these permissions is a best practice for maintaining a secure and compliant SharePoint environment.
Application only or granular access to individual site instead of whole tenant, scope called “Sites.
posts
Remove Expired Sharing Links and Update Sharing Link Role to Read
Updating the expiration time and role for sharing links is still limited. Although it seems possible through the Graph API Update permission, I have been unable to pass the roles as body parameters.
Graph Explorer Attempts Using the following script:
Invoke-PnPGraphMethod -Url "v1.0/drives/$driveId/items/$driveItemId/permissions/$($ShareLink.Id)" -Method Patch -Content @{ roles = @("read") } threw the error message
“Invalid input: No Information provided to update the specifed permission”
From the UI Anyone link can’t be edited Organisation link can’t be edited Specific people links can be edited Using the network tab from the browser developer tools enables identifying the endpoint to update specific people links only.
posts
Enhanced Version Controls/Intelligent Versioning Trim with PowerShell
Microsoft has introduced Enhanced Version Controls, previously known as Intelligent Versioning, as part of its public preview in May 2024. This feature, detailed in the Microsoft 365 Roadmap 145802, aims to help administrators manage file versions more effectively, reducing storage costs by removing unnecessary versions.
Extract from the Roadmap
We are introducing new version controls that help tenant and site admins or document library owners reduce the storage footprint driven by low value file versions.
posts
Get SharePoint site sharing Settings with PowerShell
Managing sharing settings for SharePoint sites is crucial for maintaining a secure and well-governed environment. With the help of PowerShell, administrators can efficiently retrieve and manage these settings across their SharePoint Online tenant. This ensures that sensitive information is not overshared and that your organisation’s data remains secure.
Importance of Reviewing Sharing Settings Reviewing sharing settings is essential to prevent oversharing, which can lead to data breaches and unauthorized access to sensitive information.
posts
Empowering Secure Collaboration: Configuring SharePoint Tenant and Site Settings with PowerShell to prevent oversharing
Sharing lies at the heart of collaboration within SharePoint, facilitating seamless communication and teamwork. However, effective management of sharing settings is crucial to maintain data security and prevent unintended exposure. This is particularly important in light of tools like M365 Copilot.
An extract from Announcing SharePoint advanced management innovations for the AI and Copilot era
“With Copilot and AI, security has become a concern. Not because Copilot allows people to access anything more than they could previously; it just allows them to find information they have access to faster.
posts
PowerShell: Removing Web API Permissions for SPFx Solutions used by EntraId SharePoint Online Web Client Extensibility
The script checks the ‘SharePoint Online Web Client Extensibility’ Principal within Entra ID for the actual assigned permissions as the SPFx solutions requests are all be added to that single shared permission group.
As hilghlighted by “Wes Hackett”:
I’ve personally seen plenty of tenants with Mailbox permissions with no corresponding solutions live in the app catalogs. Early SPFx doc examples encouraged the use of MS Graph into Mailbox permissions in one of the how to learn samples, older tenants sometimes have this breadcrumb left behind.
posts
Retrieve SPFx Details from Tenant and Site Collection App Catalogs Using PowerShell
Have you ever needed to gather detailed information about SPFx solutions installed in your SharePoint environment, such as API permissions, for auditing, inventory, or compliance purposes? The PowerShell script below helps you retrieve these details from both the tenant-level and site collection app catalogs for auditing with the aim to improve security posture by removing unneeded apps and access rights.
To execute this script, you must have Global Administrator or SharePoint Administrator roles.
posts
Optimizing PowerShell Scripts to check for unique permissions in SharePoint: REST API vs. Get-PnPListItem
When working with large SharePoint sites, checking for unique permissions can be a time-consuming task. This blog post explores methods to optimize PowerShell scripts for fetching property HasUniqueRoleAssignments to determine unique permissions, including using PnP PowerShell and the SharePoint REST API. We compare their performance and highlight the advantages and limitations of each approach.
Using PnP PowerShell PnP PowerShell provides an efficient way to interact with SharePoint Online and retrieve list items to check for unique permissions.
posts
Copy SharePoint list structure with data - ALM
If you have built Power Platform solutions using SharePoint as a datasource, you may want to export the list structure along with its data from the source environment (e.g., DEV) and deploy it across different environments such as Test, UAT, and PROD. Fortunately, the PnP Provisioning from PnP PowerShell provides this capability. Power Platform solutions can be deployed using pipelines after the SharePoint structure is deployed.
Export Structure and Data from SharePoint Lists PnP PowerShell makes this process straightforward with Get-PnPSiteTemplate:
posts
Delete M365 connected Team Site using PowerShell
If a M365 group connected Team site is deleted from SharePoint Admin Centre, from the UI it is not possible to delete the site from the deleted sites to be able to resuse the URL or name of the deleted site.
The end user is presented with the following prompt This site belongs to a Microsoft 365 group. Deleting the site will delete the group and all its resources, including the Outlook mailbox and calendar, and any Teams channels.
posts
Teams Chats - default Sharing Links to 'People Currently in this Chat
Have you ever wondered how to default the default sharing link in Teams chats to ‘People currently in this chat’? By default, if “Anyone” is disabled within the tenant, the sharing link is set to “People in my organization”. This can be a challenge when you want to limit access to only those in the current chat. All files uploaded to a Teams Chat are stored in the uploader’s OneDrive for Business.
posts
Oversight of Sharing Information in SharePoint sites using PowerShell with CSOM, REST and PnP PowerShell
Effective oversight of sharing links and sharing information are paramount to ensuring data security, compliance, and optimal collaboration experiences.
As organisations migrate to M365 environments, they inherit powerful collaboration tools that facilitate seamless sharing of documents and resources. However, without proper governance, these capabilities can lead to unintended consequences such as data breaches, compliance violations, and loss of intellectual property.
Sharing is a powerful feature for collaboration. However depending on how items, files or folders are shared, a sharing link might be created or unique permissions on these items are created.
posts
SharePoint Portals Site collections Inventory
As part of the M365 Copilot rollout , questions were raised on the /portals/Community and /portals/hub as both ‘Everyone Except External Users’ was granted access raising concerns on the content on the site. These are legacy sites and are currently inaccessible. Historically, these sites were accessible via the legacy SharePoint admin centre, however, they are not available through the modern SharePoint admin centre interface.
Thanks to Gregory Zelfond’s blog post What are all these site collections in SharePoint?
posts
SharePoint Storage Monitoring Against Allocated Quota using PowerShell
There is limited space allocated to the tenant. To ensure business continuity and smooth ongoing operation, it is imperative to keep an eye on its usage and take relevant actions suited to the circumstances. By default a SharePoint site is allocated 25 TB by default and OneDrive for Business site is allocated 1 TB by default. These settings can be amended manually to a different quota to control SharePoint site. The script will help to proactively monitor percent used against quota for each SharePoint site.
posts
Update Choice values of List Items in SharePoint List
#Parameters $SiteURL = “https://contoso.sharepoint.com/teams/app-ar" $ListName = “Remittances”
$dateTime = (Get-Date).toString(“dd-MM-yyyy”) $invocation = (Get-Variable MyInvocation).Value $directorypath = Split-Path $invocation.MyCommand.Path $fileName = “\RemittanceDuplicateReport-” + $dateTime + “.csv” $OutPutView = $directorypath + $fileName
Connect-PnPOnline -url $SiteURL -Interactive
$ListItems = Get-PnPListItem -List $ListName -PageSize 500 | Where {$_.FieldValues.Month -eq ‘202402’ } #Array for Results Data $DataCollection = @() ForEach($Item in $ListItems) { #Collect data $Data = New-Object PSObject -Property @{ SourceRef = $Item[“DocumentSourceReference”] GroupingRef = $Item[“GroupingReference”] Provider = $Item[“Provider”].
posts
Update Choice values of List Items in SharePoint List
Maintaining up-to-date list items, especially when dealing with choice fields, can be a daunting task sepcially after choice field values are updated. We need a way to update these old values to the correct new ones.
The Challenge SharePoint lists use choice fields to categorise items. Over time, the need to update these choice values can arise, whether due to changes in terminology, business processes, or error correction. Manually updating these values across numerous list items is not only time-consuming but also prone to human error.
posts
Overcoming SharePoint's List View Threshold with CAML Queries in PowerShell
Overcoming SharePoint’s List View Threshold with CAML Queries in PowerShell Encountering the list view threshold error in SharePoint when dealing with lists exceeding 5,000 items is a common challenge. Using CAML queries within PowerShell scripts offers a server-side solution to efficiently filter and retrieve data, yet is prone to the list view threshold error.
Sample script This is the sample PowerShell script querying the specified SharePoint list using CAML query.
posts
Find orphaned choice values in SharePoint list/libraries using PowerShell
Find orphaned choice values in SharePoint list/libraries using PowerShell One common issue is orphaned choice values in SharePoint lists which may affect subsequent update to the list item. This can occur when list items contain values that are no longer valid according to the list’s choice field values. This post covers a PowerShell script to identify these orphaned choice values in SharePoint lists to either update them or add them back to the list of choice field values.
posts
Updating SharePoint Site Logo and Thumbnail with PowerShell
Update SharePoint Site Logo and Thumbnail with PowerShell In SharePoint Online sites, the distinction between the Site Logo and Site Thumbnail is crucial. The site logo appears in the site header, while the site thumbnail is used in search results, site cards, file copying/moving, and other areas.
Both site logo and thumbnail are part of SharePoint branding. This post covers how to update the site logo and thumbnail across multiple SharePoint sites within a hub using PowerShell.
posts
Update Content Type of List Items in SharePoint List
Update Content Type of List Items in SharePoint List A content type in SharePoint is a reusable collection of metadata (columns) allowing to organise, manage and handle content in a consistent way. If the content type of files and items need to be updated because of required changes how particular content have to be managed, it can be a daunting laborious task if done manually. PowerShell can help automating the update of content types and corresponding metadata (columns).
posts
Teamifying an Existing M365 Group with PowerShell
Teamifying an Existing M365 Group with PowerShell Within M365 , SharePoint and Teams together provides a rich collaboaration platform. When a team site is created from SharePoint admin centre, it is not associated with a Teams despite a M365 group is created in the background. To extend SharePoint collaboration features , there is a need to “teamify” an existing Microsoft 365 Group, essentially attaching a new Teams instance to it to allow use of channels and other apps.
posts
Get Total Count of SharePoint Files, Folders, and Items with PnP PowerShell
Get Total Count of SharePoint Files, Folders, and Items with PnP PowerShell This PowerShell script powered by PnP PowerShell can help to get total count of files, folders, and list items across SharePoint tenant. This script is invaluable for administrators looking to perform audits, verify data migrations, or simply keep tabs on the content sprawl within their environments. The use case of this script was to get a total number of items that would be ingested into a third party application Records365 (provided by RecordPoint) to ensure the number tally for compliance purposes and identify any gaps.
posts
Handling Special Characters within CSV with PowerShell using Encoding
When working with CSV files in PowerShell with special characters you might encounter an issue where special characters (e.g., em dashes —) are incorrectly represented as a question mark inside a diamond �. This common issue arises due to PowerShell’s default encoding not matching the encoding used in the CSV file.
Problem Statement The root of this problem lies in the encoding mismatch. Encoding is a method of converting characters into a format that can be easily stored or transmitted.
posts
Find SharePoint Framework (SPFx) Packages with PowerShell in Tenant and Site Collection App Catalogs
Find SharePoint Framework (SPFx) Packages with PowerShell in Tenant and Site Collection App Catalogs This post covers a PowerShell script to generate an inventory of SPFx installations within your SharePoint Online environment which will help you maintain oversight of your SPFx solutions, ensuring they are up-to-date and compliant. The script was particularly useful in pinpointing sites within the tenant where third-party applications, specifically an analytics SPFx component, were deployed. This was crucial for ensuring that data collection was confined to designated sites, such as the intranet in my case study.
posts
Empowering Secure Collaboration: Configuring OneDrive Tenant and Site Settings
Empowering Secure Collaboration: Configuring OneDrive Tenant Settings with PowerShell OneDrive makes it easy to collaborate by sharing files and folders with others. OneDrive is the storage space for personal productivity and not meant for collaboration. Data stored within OneDrive are
Files shared to chats within Teams Files shared with end user by other OneDrive users. OneNote Personal lists and Document storage Shortcuts to SharePoint sites/libraries Favourites Loops within chats Streams In this article, we’ll explore into how PowerShell can empower SharePoint administrators to configure OneDrive sharing settings proactively at the tenant level, addressing oversharing concerns for the M365 Copilot rollout.
posts
Deletion of sharing links with PowerShell
Deletion of sharing links with PowerShell As organisations look to deploy Copilot for Microsoft 365, ensuring the security and proper governance of shared content is important. The rollout of Copilot introduces advanced AI capabilities across Microsoft 365 apps using content from SharePoint/OneDrive, making it even more essential to manage sharing links judiciously to tackle the issue of oversharing.
Sharing is a powerful feature for collaboration. However depending on how items, files or folders are shared, a sharing link might be created or unique permissions on these items are created.
posts
Manage SharePoint Premium - SharePoint Advanced Management Settings Using PowerShell to protect data in M365 Copilot Rollout
Manage SharePoint Premium - SharePoint Advanced Management Settings Using PowerShell to protect data in M365 Copilot Rollout SharePoint Premium - SharePoint Advanced Management offers features to help prevent data oversharing and accidental leaks, which is crucial for a successful rollout of M365 Copilot. This guide will show you how to manage these settings using PowerShell.
For an overview, read the Microsoft SharePoint Premium - SharePoint Advanced Management overview.
This post covers how to manage SharePoint Premium - SharePoint Advanced Management settings at both the tenant and site level using PowerShell.
posts
Restrict certain SharePoint sites from tenant search and M365 Copilot using PowerShell
Excluding certain SharePoint sites from search would mean the contents from the excluded sites won’t be available to M365 tenant search and M365 Copilot using Restricted SharePoint Search feature.
The downsides using this feature are:
Limited Findability: By excluding certain SharePoint sites from search, you limit the findability of data. Users would need to know the specific sites where the data resides in order to search for it. This can hinder efficient data retrieval and records management.
posts
Empowering Secure Collaboration: Configuring Microsoft Loop Sharing Tenant and Site Settings with PowerShell
Empowering Secure Collaboration: Configuring Microsoft Loop Sharing SharePoint Tenant and Site Settings with PowerShell Guest users can be invited to collaborate within Microsoft Loop in the tenant. Refer How to work with guest users using Microsoft Loop how sharing within Loop works.
This post focuses on using PowerShell to control the Microsoft Loop sharing settings to help securing data especially with M365 Copilot which can expose data not previously accessible by other means.
posts
Sharing Options Updates - Send Email Button Greyed Out
Sharing Options Updates - Send Email button greyed out Starting from March 2024, there has been a notable change in SharePoint’s sharing options. If a user is not allowed to share on a SharePoint site (for instance, when a user is a member and only owners have sharing privileges), the Send Email button appears greyed out. Additionally, a warning message is displayed: Sharing is limited on this item. You can only copy links for people who have existing access, and you can’t invite anyone new.
posts
PowerShell Script to Query Unique Permissions in SharePoint
Query Unique Permissions in SharePoint using CSOM and PnP PowerShell Managing permissions in SharePoint is a critical aspect of maintaining data security and compliance within organisations. However, as SharePoint environments grow in complexity, manually auditing and managing permissions becomes increasingly challenging. To address this challenge, PowerShell scripts can be leveraged to automate the auditing process, providing administrators with valuable insights into permission structures across SharePoint sites and libraries.
What do SharePoint permissions have to do with Copilot for Microsoft 365?
posts
Working with psm1 Files in PowerShell
Working with PowerShell Script Module Files:psm1 Have you ever utilized a psm1 file to create reusable functions across multiple ps1 files? If so, you might have encountered the frustration of edits not reflecting immediately due to module caching.
I recently faced this issue when updating a psm1 file; despite making changes, the updates didn’t take effect immediately. The issue stemmed from module caching.
The only solution I found to load the updated psm1 file was to terminate the PowerShell session and start a new one.
posts
How to Redirect PowerShell Terminal Output to a File
How to Redirect PowerShell Terminal Output to a File The PowerShell console buffer, while useful, has its limitations. When dealing with thousands of lines of output, you may encounter performance issues or even lose older output due to truncation. However, there’s a straightforward solution to ensure all output is retained for later review: redirect the output to a file.
You can accomplish this by using the redirection operator > operator, followed by the name of the file where you want the output to be stored.
posts
Managing Service Principal Permission Requests using PowerShell
Managing Service Principal Permission Requests using PowerShell Permission to the “SharePoint Online Client” service principal can be granted either in declarative method within SPFx solutions or directly. This post explores how to handle both declarative and direct permission grants using SPO PowerShell , ClI for M365 and PnP PowerShell.
PnP PowerShell Get all service principal permission grants Gets the collection of permission grants for the “SharePoint Online Client” service principal using the cmdlet Get-PnPTenantServicePrincipalPermissionGrants
posts
Get Folder Item properties using PnP PowerShell : Get-PnPFolderItem versus Get-PnPListItem
Get Folder Item properties using PnP PowerShell : Get-PnPFolderItem versus Get-PnPListItem Introduction In this blog post, we will explore an alternative approach to retrieving folder item properties using PnP PowerShell. We will discuss the limitations of the Get-PnPFolderItem cmdlet and demonstrate how to use Get-PnPListItem to overcome those limitations.
The Limitations of Get-PnPFolderItem The Get-PnPFolderItem cmdlet is not suitable for working with large libraries. When attempting to retrieve items from a large library, you may encounter the following error message:
posts
Deploying SPFx Packages from Tenant App Catalog to Hub Site and Associated Sites
Deploying SharePoint Framework (SPFx) Packages from Tenant App Catalog to Hub Site and Associated Sites There is the blog post how Deploying and Installing SharePoint Framework (SPFx) solutions using PnP PowerShell to Hub Site and Associated Sites using site collection app catalog. This post covers how to perform same objective but using the tenant level app catalog if the SPFx packages have not been added to all sites globally during deployment in the tenant level app catalog and instead need targeted deployment or upgrades on specific sites.
posts
Custom document library template using PnP PowerShell
Custom document library template using PnP PowerShell Creating custom list templates is now possible to create both custom document libraries and lists.
This article explores the option how to use a combination of list design and PowerShell script to provision multiple instances of document libraries using a CSV file and how to create a document library from a custom list template from UI.
First we can create a list design for our library based on an existing configured document library with custom content types, fields and views.
posts
Retracting SPFx Solutions from Hub Site and associated sites using PnP PowerShell
Retracting SPFx Solutions from Hub Site and associated sites using PnP PowerShell SharePoint Framework (SPFx) solutions are a powerful tool for extending and customizing SharePoint sites. However, managing these solutions across multiple sites in a SharePoint tenant can be a daunting task. Fortunately, PnP PowerShell provides automation capabilities that can streamline these operations and ensure consistency across the tenant.
The blog post Deploying SharePoint Framework (SPFx) Packages from Tenant App Catalog to Hub Site and Associated Sites covers how to deploy SPFx solutions across a hub site and associated sites.
posts
Automating Site Reindexing with PowerShell
Automating Site Reindexing with PowerShell Introduction Keeping your SharePoint environment up-to-date is crucial, especially after making schema changes. One important aspect of maintaining accurate and relevant search results is to regularly reindex sites, libraries, or lists. In this blog post, we will explore a streamlined approach using PnP PowerShell to automate the reindexing process. By leveraging this script, you can ensure that your search results reflect the latest changes in your SharePoint environment.
posts
PowerShell: Set and Remove SharePoint Site Thumbnail Logo
For many organizations, maintaining a consistent brand identity across SharePoint sites is crucial. The distinction between “Site Logo” and “Site Logo Thumbnail” is essential, as they serve different purposes across SharePoint and the Microsoft 365 ecosystem. The site logo appears in the site header, while the site logo thumbnail is used in search results, site cards, when copying/moving files, and other critical areas. It plays a vital role in helping end users differentiate between various SharePoint Online (SPO) sites and Teams.
posts
Unveiling Audit Logs with PnP and Cli for M365 PowerShell
Unveiling Audit Logs with PnP PowerShell for the last 7 days Understanding and tracking activities within your M365 environment is crucial for maintaining security and compliance. Audit Logs offer a wealth of information, and in this post, we’ll delve into the methods to retrieve and analyze them. Specifically, we’ll focus on leveraging the Office 365 Management Activity API reference through the Get-PnPUnifiedAuditLog PnP PowerShell cmdlet. It is a great alternative if you are only a SharePoint Administrator with no global admin or Purview Audit logs access.
posts
Recreating Deleted Owners Group for M365-Connected SharePoint Sites
Recreating Deleted Owners Group for M365-Connected SharePoint Sites If out-of-the-box (OOB) groups such as owners, members, or visitors have been deleted accidentally from your SharePoint site, this article may assist you in recovering those vanished groups specifically for M365 linked Team site. I recently encountered a distress call from an end user facing data access issues on a SharePoint Team site. To my dismay, I discovered that the SharePoint Owners group had been accidentally deleted, prompting me to seek and implement a solution to restore access.
posts
A Guide to Contributing to PnP PowerShell
A Guide to Contributing to PnP PowerShell Contributing to PnP PowerShell is a rewarding journey. Whether you’re a seasoned contributor or a beginner, this guide aims to simplify the process and keep it handy for your next contribution.
Prerequisites To set up the development to start hacking on PnP PowerShell, install the following
Install Git Install PowerShell 7 Install Visual Code or Visual Studio Code Install .NET SDK 6 (https://dotnet.microsoft.com/download/dotnet/6.0) Forking and cloning First things first, make a copy of the repository to start working on your changes.
posts
Discovering All Checked Out Files including those with no checked in versions with PnP PowerShell
Discovering All Checked Out Files including those with no checked in versions There are scenarios when files uploaded won’t have “checked-in version” which will make the files visible only to their uploader. Two possible scenarios that can lead to the situation:
Mandatory Metadata Requirements: When there are mandatory fields configured on the libraries and end users use Onedrive as a medium to upload the files to SharePoint via a shortcut to OneDrive.
posts
How to Hide the 'See All' Button in the Highlighted Content Web Part using PnP PowerShell
How to Hide the “See All” Button in the Highlighted Content Web Part using PnP PowerShell Recently, I encountered an issue with the “Show Title and Commands” toggle in the out-of-the-box Highlighted Content web part. It stopped working on both my development and customer tenant. I’ve raised the issue on the Microsoft Forum and also opened a case with Microsoft to investigate the backend.
While awaiting a resolution from Microsoft, I decided to find a workaround.
posts
Ensuring Owners Are Members
Ensure Owners Are Members M365Group Microsoft 365 (M365) Groups serve as a central hub for collaboration across various M365 applications like Teams, Planner, SharePoint, and more. While M365 roles include Owners, Members, and Guests, it’s crucial to understand that being an owner doesn’t always inherit member privileges. In this article, we’ll explore why it’s imperative to have M365 Group owners also serve as active members for seamless group management and productivity.
posts
Get a CSV of all my pull requests from Github using Github CLI and PowerShell
Github does not provide an easy way to export all your pull requests for review or sharing with anyone. Below is a great post to show how to do it using BASH.
GitHub: Get a CSV containing my pull requests (PRs)
If you are using windows machine, PowerShell is your friend.
Install GitHub CLI via command line
winget install --id GitHub.cli Enter Y to the question
Do you agree to all the source agreements terms?
posts
Troubleshooting SharePoint Storage Reports with PowerShell
Troubleshooting SharePoint Storage Reports with PowerShell As the amount of data stored in SharePoint grows, it becomes important to monitor and manage storage usage. In this blog post, we will explore how to generate storage reports for SharePoint sites using PowerShell. These reports will provide insights into the storage usage of sites and individual files, including file versions and the size of the recycle bin. However the reports can only give a glimpse of at least 60-90% of storage.
Tag: REST API
posts
Updating Multiline Text Field Properties in SharePoint Using PowerShell
Introduction Managing multiline text fields in SharePoint can be tricky, especially when certain field properties are not visible or editable at the library/list level, even though they are available at the site level.
For example, at the site level, you can configure properties such as:
Append Changes to Text Number of Lines Field Type: Plain Text, Rich Text, or Enhanced Rich Text However, these settings may not appear at the library/list level, as shown below:
posts
Pinning Fields to the Filter Pane in SharePoint Libraries Using PowerShell
Introduction In SharePoint Online, the filter pane is a powerful feature that allows users to quickly filter and find relevant data in libraries and lists. However, by default, not all fields are visible in the filter pane. To enhance usability, you can pin specific fields to the top of the filter pane using PowerShell or the REST API.
This blog post demonstrates how to use PowerShell and the REST API to pin fields to the filter pane in SharePoint libraries.
posts
PowerShell: Identifying SharePoint Site Creation Sources
Introduction Understanding how a SharePoint site was created is crucial for governance, compliance, and troubleshooting. In Microsoft 365, SharePoint sites can be created through various methods, such as Microsoft Teams, Viva Engage, the SharePoint Admin Center, and more. However, identifying the exact creation source can sometimes be challenging.
For example, exporting the list of active sites from the SharePoint Admin Center may not always provide accurate information. Communication sites, for instance, may incorrectly show their creation source as “Microsoft M365 Group,” even though they can only be created from the SharePoint Admin Center.
posts
Automate the Removal of Expired Sharing Links in SharePoint with PowerShell
Sharing is a great feature for collaboration. However, depending on how items, files, or folders are shared, a sharing link might be created or unique permissions on these items are created. It is possible to set an expiration date on sharing links in SharePoint and OneDrive. For more details, please refer to How to set an expiration date on sharing links in SharePoint and OneDrive. Microsoft introduced the capability to set an expiry date for all types of sharing links: “Anyone”, company-wide (aka.
posts
Viva Connections Experiences to manage Home Site through REST API
Introduction The SharePoint Home Site experiences have moved to Viva Connections and is managed from the Microsoft 365 admin centre through the Viva Connections admin centre
I started exploring how to manage these SharePoint Home Sites/Viva Experiences using browser’s developer tools, considering I had little luck with the SPO PowerShell, PnP PowerShell, and CLI for M365. These PowerShell experiences will be updated at some point to work with the updated Viva Connections Experience.
posts
Remove Expired Sharing Links and Update Sharing Link Role to Read
Updating the expiration time and role for sharing links is still limited. Although it seems possible through the Graph API Update permission, I have been unable to pass the roles as body parameters.
Graph Explorer Attempts Using the following script:
Invoke-PnPGraphMethod -Url "v1.0/drives/$driveId/items/$driveItemId/permissions/$($ShareLink.Id)" -Method Patch -Content @{ roles = @("read") } threw the error message
“Invalid input: No Information provided to update the specifed permission”
From the UI Anyone link can’t be edited Organisation link can’t be edited Specific people links can be edited Using the network tab from the browser developer tools enables identifying the endpoint to update specific people links only.
posts
Retrieve SPFx Details from Tenant and Site Collection App Catalogs Using PowerShell
Have you ever needed to gather detailed information about SPFx solutions installed in your SharePoint environment, such as API permissions, for auditing, inventory, or compliance purposes? The PowerShell script below helps you retrieve these details from both the tenant-level and site collection app catalogs for auditing with the aim to improve security posture by removing unneeded apps and access rights.
To execute this script, you must have Global Administrator or SharePoint Administrator roles.
posts
Power Automate : Move File bypassing locked issue using CreateCopyJobs endpoint
The SharePoint - Move file action can be used to move files, however the file can’t be moved if the file was accessed by the current Power Automate flow for any processing reslutng in a locked file error.
{ “status”: 400, “message”: “File ‘Shared Documents/Attendances/To Be Processed/Attendance -16072024.xlsx’ cannot be moved because it is in locked mode.\r\nclientRequestId: d6df7566-881f-4f14-8548-c5fac1eda46d\r\nserviceRequestId: 606841a1-40f0-9000-9c69-507df9b21720” }
Handling Locked Files There are two options to handlelocked files when using SharePoint - Move file action:
posts
Power Automate: Retrieve User Details
This post covers how to leverage SharePoint REST API to get user details from Power Automate using the Send an Http request to SharePoint action.
Within a Power Automate flow follow the steps below to retrieve a user details.
Send an Http request to SharePoint action renamed to Get Page Author Details Site Address: https://test.sharepoint.com Method: GET URI: _api/Web/GetUserById(14) Here’s the output from the API:
Here’s the output from the API:
posts
Power Automate: Retrieve Users from a SharePoint Group
This post covers how to leverage SharePoint REST API to get users from a SharePoint group from Power Automate using the Send an Http request to SharePoint action. In the example below a SharePoint Group has been defined for approvers of a particular process and needed to be retrieved to be assigned an approval task.
Within a Power Automate flow follow the steps below to retrieve users from a SharePoint group.
posts
Power Automate : Update Author and Editor of a Page
This post outlines how to use Power Automate to update author and editor of a Page within SharePoint using the Send an Http request to SharePoint action.
Within a Power Automate flow, follow the following steps
Add Send an Http request to SharePoint renamed to Update Author Properties Property Value Site Address The SharePoint site URL Method POST Uri See Uri below Headers See Headers table below Body See Body below Uri _api/web/lists/GetByTitle(‘Site%20Pages’)/items(1)/ValidateUpdateListItem()`
Tag: Effective Permissions
posts
Retrieve Effective Permissions of an user within SharePoint Sites Using PowerShell
Managing permissions in SharePoint can be challenging, especially when users are granted access through various means such as direct permissions, shared links, SharePoint groups, or M365 groups. To simplify this process, you can use the effectivepermissions endpoint to retrieve and analyze permissions assigned to users at the site, list/library, and item/file/folder levels.
This blog post demonstrates how to use PowerShell to identify and retrieve effective permissions for end users across SharePoint sites.
Tag: Permissions
posts
Retrieve Effective Permissions of an user within SharePoint Sites Using PowerShell
Managing permissions in SharePoint can be challenging, especially when users are granted access through various means such as direct permissions, shared links, SharePoint groups, or M365 groups. To simplify this process, you can use the effectivepermissions endpoint to retrieve and analyze permissions assigned to users at the site, list/library, and item/file/folder levels.
This blog post demonstrates how to use PowerShell to identify and retrieve effective permissions for end users across SharePoint sites.
posts
Copy Column View Formatting to different environment using PnP PowerShell
Copy Column and View Formatting using PnP PowerShell There is a great sample script how to backup all column, view and content type formatting by Dan Toft. If you need to copy column and view formatting across different environments, such as from Dev to Test, UAT, and Prod, especially when dealing with multiple lists/libraries, the script may help you.
PnP PowerShell Script param ( [Parameter(Mandatory=$false)] [string]$SourceSiteUrl = "https://contoso.sharepoint.com/teams/d-app-test", [Parameter(Mandatory=$false)] [string]$DestinationSiteUrl = "https://contoso.
posts
Ensuring Owners Are Members
Ensure Owners Are Members M365Group Microsoft 365 (M365) Groups serve as a central hub for collaboration across various M365 applications like Teams, Planner, SharePoint, and more. While M365 roles include Owners, Members, and Guests, it’s crucial to understand that being an owner doesn’t always inherit member privileges. In this article, we’ll explore why it’s imperative to have M365 Group owners also serve as active members for seamless group management and productivity.
Tag: PnP
posts
Retrieve Effective Permissions of an user within SharePoint Sites Using PowerShell
Managing permissions in SharePoint can be challenging, especially when users are granted access through various means such as direct permissions, shared links, SharePoint groups, or M365 groups. To simplify this process, you can use the effectivepermissions endpoint to retrieve and analyze permissions assigned to users at the site, list/library, and item/file/folder levels.
This blog post demonstrates how to use PowerShell to identify and retrieve effective permissions for end users across SharePoint sites.
posts
Finding Storage Nearing Exceeding Quota with PowerShell
Monitoring Storage Quotas with PowerShell Managing storage quotas in Microsoft 365 is critical to ensure uninterrupted service and optimal performance. This blog post demonstrates how to use a PowerShell script to monitor storage usage across SharePoint Online sites and identify sites nearing or exceeding their storage quotas.
Script Overview The script connects to the SharePoint Online admin center, retrieves site storage details, calculates the percentage of storage used, and generates a report for sites exceeding 80% of their allocated storage quota.
posts
Deletion of company-wide and anonymous sharing links with PowerShell
Sharing is a powerful feature for collaboration. However depending on how items, files or folders are shared, a sharing link might be created or unique permissions on these items are created. The sharing link is created when the copy links is clicked from the sharing pop up options when people other those already have existing access are picked.
However by default, if sharing options have not been configured, links to “People in ” or “Anyone” (if external sharing is allowed) is selected
posts
Adding M365 Group/Teams Owners and Members to SharePoint Group with PnP PowerShell
Introduction There are situations where you might want to reuse the M365 Group principals to assign permissions to other sites without creating additional Entra ID groups. This can be useful for:
Adding M365 group members to a SharePoint site, such as an intranet site for ‘Human Resources’ managed by the ‘Human Resources’ M365 Group/Teams or a hub site managed by a ‘Service Desk’ M365 Group/Teams. Adding M365 group members to custom or out-of-the-box SharePoint groups, such as adding particular M365 group owners or members to custom groups created for additional libraries within a different site.
posts
Automate Renewal of Expiring M365 Groups Using PowerShell
Introduction Managing the lifecycle of Microsoft 365 Groups is important to prevent accidental deletion of M365 Groups. It is a good practice to set lifecycle expiration policy to control sprawl. However that means that the group will get automatically deleted after they expire. The Teams/M365 groups owners will get email notifications to renew within a certain timeframe , however if the owners missed the renewal notifications for different reasons, it may lead to accidental data loss.
posts
PowerShell: Fetch Files with Retention or Sensitivity Labels in SharePoint Online
Introduction Understanding the sensitivity and retention labels applied to files in your SharePoint Online sites is essential for maintaining data security and compliance. These labels enable you to manage and protect your data by defining retention periods and handling sensitive information appropriately. This is particularly important for initiatives like the Microsoft 365 Copilot rollout, ensuring that the correct files are stored within the appropriate SharePoint sites. For example, if a SharePoint site is a public Team site, files labeled as confidential should be moved to a private Team site or existing Team site updated from public to private.
posts
PnP Powershell GetPnPflow using asAdmin parameter
As part of the multi tenant app registration for PnP PowerShell deprecated on the 9th September 2024, we need to have our own app registration and grant the required permissions. Read more from Changes in PnP Management Shell registration in Microsoft 365
For the cmdlet Get-PnPFlow it requires permissions Azure: management.azure.com which is Azure Service Management
Simply adding the permission as it does not require admin consent and executing the cmdlet below yields no results
posts
Enhanced Version Controls/Intelligent Versioning Trim with PowerShell
Microsoft has introduced Enhanced Version Controls, previously known as Intelligent Versioning, as part of its public preview in May 2024. This feature, detailed in the Microsoft 365 Roadmap 145802, aims to help administrators manage file versions more effectively, reducing storage costs by removing unnecessary versions.
Extract from the Roadmap
We are introducing new version controls that help tenant and site admins or document library owners reduce the storage footprint driven by low value file versions.
posts
Oversight of Sharing Information in SharePoint sites using PowerShell with CSOM, REST and PnP PowerShell
Effective oversight of sharing links and sharing information are paramount to ensuring data security, compliance, and optimal collaboration experiences.
As organisations migrate to M365 environments, they inherit powerful collaboration tools that facilitate seamless sharing of documents and resources. However, without proper governance, these capabilities can lead to unintended consequences such as data breaches, compliance violations, and loss of intellectual property.
Sharing is a powerful feature for collaboration. However depending on how items, files or folders are shared, a sharing link might be created or unique permissions on these items are created.
posts
Overcoming SharePoint's List View Threshold with CAML Queries in PowerShell
Overcoming SharePoint’s List View Threshold with CAML Queries in PowerShell Encountering the list view threshold error in SharePoint when dealing with lists exceeding 5,000 items is a common challenge. Using CAML queries within PowerShell scripts offers a server-side solution to efficiently filter and retrieve data, yet is prone to the list view threshold error.
Sample script This is the sample PowerShell script querying the specified SharePoint list using CAML query.
posts
Find orphaned choice values in SharePoint list/libraries using PowerShell
Find orphaned choice values in SharePoint list/libraries using PowerShell One common issue is orphaned choice values in SharePoint lists which may affect subsequent update to the list item. This can occur when list items contain values that are no longer valid according to the list’s choice field values. This post covers a PowerShell script to identify these orphaned choice values in SharePoint lists to either update them or add them back to the list of choice field values.
posts
Working with psm1 Files in PowerShell
Working with PowerShell Script Module Files:psm1 Have you ever utilized a psm1 file to create reusable functions across multiple ps1 files? If so, you might have encountered the frustration of edits not reflecting immediately due to module caching.
I recently faced this issue when updating a psm1 file; despite making changes, the updates didn’t take effect immediately. The issue stemmed from module caching.
The only solution I found to load the updated psm1 file was to terminate the PowerShell session and start a new one.
posts
Get Folder Item properties using PnP PowerShell : Get-PnPFolderItem versus Get-PnPListItem
Get Folder Item properties using PnP PowerShell : Get-PnPFolderItem versus Get-PnPListItem Introduction In this blog post, we will explore an alternative approach to retrieving folder item properties using PnP PowerShell. We will discuss the limitations of the Get-PnPFolderItem cmdlet and demonstrate how to use Get-PnPListItem to overcome those limitations.
The Limitations of Get-PnPFolderItem The Get-PnPFolderItem cmdlet is not suitable for working with large libraries. When attempting to retrieve items from a large library, you may encounter the following error message:
posts
Custom document library template using PnP PowerShell
Custom document library template using PnP PowerShell Creating custom list templates is now possible to create both custom document libraries and lists.
This article explores the option how to use a combination of list design and PowerShell script to provision multiple instances of document libraries using a CSV file and how to create a document library from a custom list template from UI.
First we can create a list design for our library based on an existing configured document library with custom content types, fields and views.
posts
Automating Site Reindexing with PowerShell
Automating Site Reindexing with PowerShell Introduction Keeping your SharePoint environment up-to-date is crucial, especially after making schema changes. One important aspect of maintaining accurate and relevant search results is to regularly reindex sites, libraries, or lists. In this blog post, we will explore a streamlined approach using PnP PowerShell to automate the reindexing process. By leveraging this script, you can ensure that your search results reflect the latest changes in your SharePoint environment.
posts
PowerShell: Set and Remove SharePoint Site Thumbnail Logo
For many organizations, maintaining a consistent brand identity across SharePoint sites is crucial. The distinction between “Site Logo” and “Site Logo Thumbnail” is essential, as they serve different purposes across SharePoint and the Microsoft 365 ecosystem. The site logo appears in the site header, while the site logo thumbnail is used in search results, site cards, when copying/moving files, and other critical areas. It plays a vital role in helping end users differentiate between various SharePoint Online (SPO) sites and Teams.
posts
Unveiling Audit Logs with PnP and Cli for M365 PowerShell
Unveiling Audit Logs with PnP PowerShell for the last 7 days Understanding and tracking activities within your M365 environment is crucial for maintaining security and compliance. Audit Logs offer a wealth of information, and in this post, we’ll delve into the methods to retrieve and analyze them. Specifically, we’ll focus on leveraging the Office 365 Management Activity API reference through the Get-PnPUnifiedAuditLog PnP PowerShell cmdlet. It is a great alternative if you are only a SharePoint Administrator with no global admin or Purview Audit logs access.
posts
A Guide to Contributing to PnP PowerShell
A Guide to Contributing to PnP PowerShell Contributing to PnP PowerShell is a rewarding journey. Whether you’re a seasoned contributor or a beginner, this guide aims to simplify the process and keep it handy for your next contribution.
Prerequisites To set up the development to start hacking on PnP PowerShell, install the following
Install Git Install PowerShell 7 Install Visual Code or Visual Studio Code Install .NET SDK 6 (https://dotnet.microsoft.com/download/dotnet/6.0) Forking and cloning First things first, make a copy of the repository to start working on your changes.
posts
Discovering All Checked Out Files including those with no checked in versions with PnP PowerShell
Discovering All Checked Out Files including those with no checked in versions There are scenarios when files uploaded won’t have “checked-in version” which will make the files visible only to their uploader. Two possible scenarios that can lead to the situation:
Mandatory Metadata Requirements: When there are mandatory fields configured on the libraries and end users use Onedrive as a medium to upload the files to SharePoint via a shortcut to OneDrive.
posts
Copy Column View Formatting to different environment using PnP PowerShell
Copy Column and View Formatting using PnP PowerShell There is a great sample script how to backup all column, view and content type formatting by Dan Toft. If you need to copy column and view formatting across different environments, such as from Dev to Test, UAT, and Prod, especially when dealing with multiple lists/libraries, the script may help you.
PnP PowerShell Script param ( [Parameter(Mandatory=$false)] [string]$SourceSiteUrl = "https://contoso.sharepoint.com/teams/d-app-test", [Parameter(Mandatory=$false)] [string]$DestinationSiteUrl = "https://contoso.
Tag: Security
posts
Retrieve Effective Permissions of an user within SharePoint Sites Using PowerShell
Managing permissions in SharePoint can be challenging, especially when users are granted access through various means such as direct permissions, shared links, SharePoint groups, or M365 groups. To simplify this process, you can use the effectivepermissions endpoint to retrieve and analyze permissions assigned to users at the site, list/library, and item/file/folder levels.
This blog post demonstrates how to use PowerShell to identify and retrieve effective permissions for end users across SharePoint sites.
posts
Configuring Default Sharing Links in SharePoint: Ensuring 'Specific People' Access
Introduction Updating the default sharing link from the User Interface at both the site level and tenant level to Specific People (only the people the user specifies) might not work always as expected. This issue could be due to the outdated setting DefaultSharingLinkType being updated behind the scenes.
I tested this on a Team site by updating the default sharing setting from the SharePoint Admin Centre to “People you choose”. However, the default sharing link for new sharing links did not reflect this setting.
posts
How to Delete App Users in Power Platform Admin Center
In the Power Platform Admin Center, you may have added app users that you no longer need. To view the list of app users added to an environment, navigate to the following URL https://admin.powerplatform.microsoft.com/manage/environments/c1725b9e-0000-0000-0000-000d3ad0000/appusers, replacing c1725b9e-0000-0000-0000-000d3ad0000 with your environment ID:
To delete an app user, click on the ellipsis (…) next to the app user and select the Delete button.
However, you may encounter a misleading error message:
✖ Failed to delete app user: User with SystemUserId= is not disabled.
posts
Secure Power Platform Deployments with Azure DevOps Workload Identity Federation
Client secrets have traditionally been the go-to method for deploying Power Platform solutions from Azure DevOps, utilizing app registrations from the Azure platform. However, my personal experience has shown that this approach can be problematic, especially when you are not an application admin. It often involves wasting time figuring out why deployments have failed due to expired or missing client secrets. Even when reaching out to someone with application admin rights, they might generate a new client secret but forget to update the service connections for each service connection within Azure DevOps or the application admin does not have access requiring to reach out to someone else who have access, causing further disruptions.
posts
M365 Developer Tenant Challenges
My Visual Studio subscription was deactivated, resulting in the loss of my Azure subscription and licenses to access Microsoft Teams within my M365 developer tenant.
This post covers my attempts to recover access in vain.
Access to Microsoft Teams I thought I could extend my access to Microsoft Teams by opting for a free trial for Microsoft 365 E5 (no Teams) and Teams Premium - Microsoft Teams Premium.
However, this did not restore access to Microsoft Teams despite waiting multiple hours after I added the above licenses.
posts
Understanding Copilot Studio Agents App Registration
When you create an Agent within Copilot Studio, a corresponding App registration is automatically generated. These app registrations are named after the Agent, suffixed with “(Microsoft Copilot Studio)”. You can view these app registrations in the Azure Portal under App registrations > All applications.
Agent Certificates and Federated Identity Each app registration associated with a Copilot Studio Agent includes three certificates and two federated credentials as of January 2025. These components enable secure communication between agents and your data sources and services.
posts
Automate the Removal of Expired Sharing Links in SharePoint with PowerShell
Sharing is a great feature for collaboration. However, depending on how items, files, or folders are shared, a sharing link might be created or unique permissions on these items are created. It is possible to set an expiration date on sharing links in SharePoint and OneDrive. For more details, please refer to How to set an expiration date on sharing links in SharePoint and OneDrive. Microsoft introduced the capability to set an expiry date for all types of sharing links: “Anyone”, company-wide (aka.
posts
Overcoming Limitations of SharePoint Sites Associated with Teams Private and Shared Channels: Tips and Hacks
Introduction Microsoft Teams offers private and shared channels as specialized collaboration spaces to cater to different organizational needs. While these channels provide enhanced security and collaboration features, they come with specific limitations and management challenges, particularly around the associated SharePoint sites.
This post covers some limitations, and management tips for SharePoint sites associated with private and shared channels, including PowerShell hacks and governance practices to overcome these challenges.
Managing SharePoint Sites for Private and Shared Channels SharePoint sites associated with private and shared channels are special types of sites with the limitations as identified by Gregory in his blog post Why you should never mess with Private and Shared Channel SharePoint Sites related to the inability to attach to a hub directly, being accessible from the Teams interface mainly, and inability to manage permissions at the site level, and with constrained external sharing.
posts
Adding M365 Group/Teams Owners and Members to SharePoint Group with PnP PowerShell
Introduction There are situations where you might want to reuse the M365 Group principals to assign permissions to other sites without creating additional Entra ID groups. This can be useful for:
Adding M365 group members to a SharePoint site, such as an intranet site for ‘Human Resources’ managed by the ‘Human Resources’ M365 Group/Teams or a hub site managed by a ‘Service Desk’ M365 Group/Teams. Adding M365 group members to custom or out-of-the-box SharePoint groups, such as adding particular M365 group owners or members to custom groups created for additional libraries within a different site.
posts
Prevent Guests from Being Added to a Specific Microsoft 365 Group or Microsoft Teams team using PnP PowerShell
Introduction By default, guest access for Microsoft 365 groups is enabled within the tenant. This can be controlled either to allow or block guest access at the tenant level or for individual Microsoft 365 groups / Teams. For more information, check out Manage guest access in Microsoft 365 groups.
PowerShell Script to Prevent Guest Access Below is a PowerShell script that allows you to disable/enable guest access for specific Microsoft 365 groups.
posts
Manage 'Everyone' and 'Everyone except external users' claim within a SharePoint site using PowerShell
Introduction As part of Microsoft 365 Copilot readiness, you may want to find where “Everyone and “Everyone except external users” claims are granted permissions which is a cause of oversharing. This blog post will guide you through using PowerShell to manage and audit the “Everyone” and “Everyone except external users” claims within your SharePoint site collection.
For more insights on why the “Everyone except external users” group is riskier than “People in your organization,” refer to Copilot for Microsoft 365 Data Ready – Where “Everyone except external users” group is more risky than “People in your organization” links!
posts
PowerShell: Fetch Files with Retention or Sensitivity Labels in SharePoint Online
Introduction Understanding the sensitivity and retention labels applied to files in your SharePoint Online sites is essential for maintaining data security and compliance. These labels enable you to manage and protect your data by defining retention periods and handling sensitive information appropriately. This is particularly important for initiatives like the Microsoft 365 Copilot rollout, ensuring that the correct files are stored within the appropriate SharePoint sites. For example, if a SharePoint site is a public Team site, files labeled as confidential should be moved to a private Team site or existing Team site updated from public to private.
posts
Audit Service Principal Access to SharePoint Sites with Sites.Selected Permissions
Ensuring the security and compliance of your SharePoint environment is crucial, especially when dealing with service principals, Entra ID apps, or federated identities. These entities often have elevated permissions that, if mismanaged, can lead to unauthorized access and potential data breaches. Regularly auditing these permissions is a best practice for maintaining a secure and compliant SharePoint environment.
Application only or granular access to individual site instead of whole tenant, scope called “Sites.
posts
Remove Expired Sharing Links and Update Sharing Link Role to Read
Updating the expiration time and role for sharing links is still limited. Although it seems possible through the Graph API Update permission, I have been unable to pass the roles as body parameters.
Graph Explorer Attempts Using the following script:
Invoke-PnPGraphMethod -Url "v1.0/drives/$driveId/items/$driveItemId/permissions/$($ShareLink.Id)" -Method Patch -Content @{ roles = @("read") } threw the error message
“Invalid input: No Information provided to update the specifed permission”
From the UI Anyone link can’t be edited Organisation link can’t be edited Specific people links can be edited Using the network tab from the browser developer tools enables identifying the endpoint to update specific people links only.
posts
PowerShell: Removing Web API Permissions for SPFx Solutions used by EntraId SharePoint Online Web Client Extensibility
The script checks the ‘SharePoint Online Web Client Extensibility’ Principal within Entra ID for the actual assigned permissions as the SPFx solutions requests are all be added to that single shared permission group.
As hilghlighted by “Wes Hackett”:
I’ve personally seen plenty of tenants with Mailbox permissions with no corresponding solutions live in the app catalogs. Early SPFx doc examples encouraged the use of MS Graph into Mailbox permissions in one of the how to learn samples, older tenants sometimes have this breadcrumb left behind.
posts
Retrieve SPFx Details from Tenant and Site Collection App Catalogs Using PowerShell
Have you ever needed to gather detailed information about SPFx solutions installed in your SharePoint environment, such as API permissions, for auditing, inventory, or compliance purposes? The PowerShell script below helps you retrieve these details from both the tenant-level and site collection app catalogs for auditing with the aim to improve security posture by removing unneeded apps and access rights.
To execute this script, you must have Global Administrator or SharePoint Administrator roles.
posts
Oversight of Sharing Information in SharePoint sites using PowerShell with CSOM, REST and PnP PowerShell
Effective oversight of sharing links and sharing information are paramount to ensuring data security, compliance, and optimal collaboration experiences.
As organisations migrate to M365 environments, they inherit powerful collaboration tools that facilitate seamless sharing of documents and resources. However, without proper governance, these capabilities can lead to unintended consequences such as data breaches, compliance violations, and loss of intellectual property.
Sharing is a powerful feature for collaboration. However depending on how items, files or folders are shared, a sharing link might be created or unique permissions on these items are created.
posts
PowerShell Script to Query Unique Permissions in SharePoint
Query Unique Permissions in SharePoint using CSOM and PnP PowerShell Managing permissions in SharePoint is a critical aspect of maintaining data security and compliance within organisations. However, as SharePoint environments grow in complexity, manually auditing and managing permissions becomes increasingly challenging. To address this challenge, PowerShell scripts can be leveraged to automate the auditing process, providing administrators with valuable insights into permission structures across SharePoint sites and libraries.
What do SharePoint permissions have to do with Copilot for Microsoft 365?
posts
Recreating Deleted Owners Group for M365-Connected SharePoint Sites
Recreating Deleted Owners Group for M365-Connected SharePoint Sites If out-of-the-box (OOB) groups such as owners, members, or visitors have been deleted accidentally from your SharePoint site, this article may assist you in recovering those vanished groups specifically for M365 linked Team site. I recently encountered a distress call from an end user facing data access issues on a SharePoint Team site. To my dismay, I discovered that the SharePoint Owners group had been accidentally deleted, prompting me to seek and implement a solution to restore access.
Tag: M365 Agent Toolkit
posts
Building a Copilot Agent with Teams Toolkit and Microsoft Graph Plugin to list my ToDo Tasks
Introduction This guide walks you through creating a Copilot agent using Teams Toolkit and Microsoft Graph API. By leveraging OpenAPI specifications, Kiota, and Teams Toolkit, you can build a plugin to interact with Microsoft Graph endpoints. I used the blog post Copilot Graph API QnA Plugin by Franck Cornu as inspiration with some variation to apply it to get my ToDo tasks.
Plugins for Copilot agents rely on OpenAPI specifications. While the complete Microsoft Graph OpenAPI specification exists, it is a massive file (34MB) and not practical for performance reasons.
Tag: Governance
posts
Searching Sensitivity Labels in SharePoint
Searching Sensitivity Labels in SharePoint Sensitivity labels are a powerful tool for protecting documents, offering features like watermarks, encryption, and access control at the file level. However, the default Sensitivity column in SharePoint has limitations—it cannot be filtered, indexed, or bulk updated. This blog post explores ways to search for sensitivity label values in SharePoint and highlights some challenges and potential solutions.
Challenges with Sensitivity Labels in SharePoint The crawled managed property InformationProtectionLabelId refers to the sensitivity label’s GUID/ID, which is not user-friendly for end users to easily search.
posts
PowerShell: Identifying SharePoint Site Creation Sources
Introduction Understanding how a SharePoint site was created is crucial for governance, compliance, and troubleshooting. In Microsoft 365, SharePoint sites can be created through various methods, such as Microsoft Teams, Viva Engage, the SharePoint Admin Center, and more. However, identifying the exact creation source can sometimes be challenging.
For example, exporting the list of active sites from the SharePoint Admin Center may not always provide accurate information. Communication sites, for instance, may incorrectly show their creation source as “Microsoft M365 Group,” even though they can only be created from the SharePoint Admin Center.
posts
Issues with Default Sensitivity Labels in SharePoint Document Libraries
Introduction Default sensitivity labels can be set at the document library level in SharePoint to help manage and protect your data.
However, there are some limitations and issues that you should be aware of like the default sensitivity label does not automatically update existing files within SharePoint and there might be delay in applying the sensitivity label within M365 app. This is described in the documentation for Configuring a default sensitivity label for a SharePoint document library.
posts
Automate the Removal of Expired Sharing Links in SharePoint with PowerShell
Sharing is a great feature for collaboration. However, depending on how items, files, or folders are shared, a sharing link might be created or unique permissions on these items are created. It is possible to set an expiration date on sharing links in SharePoint and OneDrive. For more details, please refer to How to set an expiration date on sharing links in SharePoint and OneDrive. Microsoft introduced the capability to set an expiry date for all types of sharing links: “Anyone”, company-wide (aka.
posts
Deletion of company-wide and anonymous sharing links with PowerShell
Sharing is a powerful feature for collaboration. However depending on how items, files or folders are shared, a sharing link might be created or unique permissions on these items are created. The sharing link is created when the copy links is clicked from the sharing pop up options when people other those already have existing access are picked.
However by default, if sharing options have not been configured, links to “People in ” or “Anyone” (if external sharing is allowed) is selected
posts
Overcoming Limitations of SharePoint Sites Associated with Teams Private and Shared Channels: Tips and Hacks
Introduction Microsoft Teams offers private and shared channels as specialized collaboration spaces to cater to different organizational needs. While these channels provide enhanced security and collaboration features, they come with specific limitations and management challenges, particularly around the associated SharePoint sites.
This post covers some limitations, and management tips for SharePoint sites associated with private and shared channels, including PowerShell hacks and governance practices to overcome these challenges.
Managing SharePoint Sites for Private and Shared Channels SharePoint sites associated with private and shared channels are special types of sites with the limitations as identified by Gregory in his blog post Why you should never mess with Private and Shared Channel SharePoint Sites related to the inability to attach to a hub directly, being accessible from the Teams interface mainly, and inability to manage permissions at the site level, and with constrained external sharing.
posts
Identifying Duplicate Microsoft 365 Group Names Using PowerShell
Introduction It is possible to create M365 Groups and Teams with the same name, and there is currently no built-in way to prevent this. The new Team/Site/M365 Group is created with a random number appended to the Team name for the SharePoint site and m365 Group email address.
Having duplicate names can cause confusion and increase risks, including:
Wrongly Granting Permissions: Users may accidentally grant permissions to the wrong M365 Group or Team, leading to unauthorized access.
posts
Adding M365 Group/Teams Owners and Members to SharePoint Group with PnP PowerShell
Introduction There are situations where you might want to reuse the M365 Group principals to assign permissions to other sites without creating additional Entra ID groups. This can be useful for:
Adding M365 group members to a SharePoint site, such as an intranet site for ‘Human Resources’ managed by the ‘Human Resources’ M365 Group/Teams or a hub site managed by a ‘Service Desk’ M365 Group/Teams. Adding M365 group members to custom or out-of-the-box SharePoint groups, such as adding particular M365 group owners or members to custom groups created for additional libraries within a different site.
posts
Prevent Guests from Being Added to a Specific Microsoft 365 Group or Microsoft Teams team using PnP PowerShell
Introduction By default, guest access for Microsoft 365 groups is enabled within the tenant. This can be controlled either to allow or block guest access at the tenant level or for individual Microsoft 365 groups / Teams. For more information, check out Manage guest access in Microsoft 365 groups.
PowerShell Script to Prevent Guest Access Below is a PowerShell script that allows you to disable/enable guest access for specific Microsoft 365 groups.
posts
Manage 'Everyone' and 'Everyone except external users' claim within a SharePoint site using PowerShell
Introduction As part of Microsoft 365 Copilot readiness, you may want to find where “Everyone and “Everyone except external users” claims are granted permissions which is a cause of oversharing. This blog post will guide you through using PowerShell to manage and audit the “Everyone” and “Everyone except external users” claims within your SharePoint site collection.
For more insights on why the “Everyone except external users” group is riskier than “People in your organization,” refer to Copilot for Microsoft 365 Data Ready – Where “Everyone except external users” group is more risky than “People in your organization” links!
posts
Audit Service Principal Access to SharePoint Sites with Sites.Selected Permissions
Ensuring the security and compliance of your SharePoint environment is crucial, especially when dealing with service principals, Entra ID apps, or federated identities. These entities often have elevated permissions that, if mismanaged, can lead to unauthorized access and potential data breaches. Regularly auditing these permissions is a best practice for maintaining a secure and compliant SharePoint environment.
Application only or granular access to individual site instead of whole tenant, scope called “Sites.
posts
Remove Expired Sharing Links and Update Sharing Link Role to Read
Updating the expiration time and role for sharing links is still limited. Although it seems possible through the Graph API Update permission, I have been unable to pass the roles as body parameters.
Graph Explorer Attempts Using the following script:
Invoke-PnPGraphMethod -Url "v1.0/drives/$driveId/items/$driveItemId/permissions/$($ShareLink.Id)" -Method Patch -Content @{ roles = @("read") } threw the error message
“Invalid input: No Information provided to update the specifed permission”
From the UI Anyone link can’t be edited Organisation link can’t be edited Specific people links can be edited Using the network tab from the browser developer tools enables identifying the endpoint to update specific people links only.
posts
Get SharePoint site sharing Settings with PowerShell
Managing sharing settings for SharePoint sites is crucial for maintaining a secure and well-governed environment. With the help of PowerShell, administrators can efficiently retrieve and manage these settings across their SharePoint Online tenant. This ensures that sensitive information is not overshared and that your organisation’s data remains secure.
Importance of Reviewing Sharing Settings Reviewing sharing settings is essential to prevent oversharing, which can lead to data breaches and unauthorized access to sensitive information.
posts
Empowering Secure Collaboration: Configuring SharePoint Tenant and Site Settings with PowerShell to prevent oversharing
Sharing lies at the heart of collaboration within SharePoint, facilitating seamless communication and teamwork. However, effective management of sharing settings is crucial to maintain data security and prevent unintended exposure. This is particularly important in light of tools like M365 Copilot.
An extract from Announcing SharePoint advanced management innovations for the AI and Copilot era
“With Copilot and AI, security has become a concern. Not because Copilot allows people to access anything more than they could previously; it just allows them to find information they have access to faster.
posts
Oversight of Sharing Information in SharePoint sites using PowerShell with CSOM, REST and PnP PowerShell
Effective oversight of sharing links and sharing information are paramount to ensuring data security, compliance, and optimal collaboration experiences.
As organisations migrate to M365 environments, they inherit powerful collaboration tools that facilitate seamless sharing of documents and resources. However, without proper governance, these capabilities can lead to unintended consequences such as data breaches, compliance violations, and loss of intellectual property.
Sharing is a powerful feature for collaboration. However depending on how items, files or folders are shared, a sharing link might be created or unique permissions on these items are created.
posts
Deletion of sharing links with PowerShell
Deletion of sharing links with PowerShell As organisations look to deploy Copilot for Microsoft 365, ensuring the security and proper governance of shared content is important. The rollout of Copilot introduces advanced AI capabilities across Microsoft 365 apps using content from SharePoint/OneDrive, making it even more essential to manage sharing links judiciously to tackle the issue of oversharing.
Sharing is a powerful feature for collaboration. However depending on how items, files or folders are shared, a sharing link might be created or unique permissions on these items are created.
posts
Restrict certain SharePoint sites from tenant search and M365 Copilot using PowerShell
Excluding certain SharePoint sites from search would mean the contents from the excluded sites won’t be available to M365 tenant search and M365 Copilot using Restricted SharePoint Search feature.
The downsides using this feature are:
Limited Findability: By excluding certain SharePoint sites from search, you limit the findability of data. Users would need to know the specific sites where the data resides in order to search for it. This can hinder efficient data retrieval and records management.
posts
Empowering Secure Collaboration: Configuring Microsoft Loop Sharing Tenant and Site Settings with PowerShell
Empowering Secure Collaboration: Configuring Microsoft Loop Sharing SharePoint Tenant and Site Settings with PowerShell Guest users can be invited to collaborate within Microsoft Loop in the tenant. Refer How to work with guest users using Microsoft Loop how sharing within Loop works.
This post focuses on using PowerShell to control the Microsoft Loop sharing settings to help securing data especially with M365 Copilot which can expose data not previously accessible by other means.
posts
SharePoint Search: Excluding Columns from Search Results
SharePoint Search: Excluding Columns from Search Results SharePoint empowers users to manage and organize vast amounts of data efficiently. However, not all data within a SharePoint site might need to be searchable. Do you miss the functionality to control visibility of sensitive or irrelevant information in column.
The Challenge You might have encountered instances where you need certain columns in your SharePoint lists or libraries to be excluded from search results.
posts
Sharing Options Updates - Send Email Button Greyed Out
Sharing Options Updates - Send Email button greyed out Starting from March 2024, there has been a notable change in SharePoint’s sharing options. If a user is not allowed to share on a SharePoint site (for instance, when a user is a member and only owners have sharing privileges), the Send Email button appears greyed out. Additionally, a warning message is displayed: Sharing is limited on this item. You can only copy links for people who have existing access, and you can’t invite anyone new.
posts
PowerShell Script to Query Unique Permissions in SharePoint
Query Unique Permissions in SharePoint using CSOM and PnP PowerShell Managing permissions in SharePoint is a critical aspect of maintaining data security and compliance within organisations. However, as SharePoint environments grow in complexity, manually auditing and managing permissions becomes increasingly challenging. To address this challenge, PowerShell scripts can be leveraged to automate the auditing process, providing administrators with valuable insights into permission structures across SharePoint sites and libraries.
What do SharePoint permissions have to do with Copilot for Microsoft 365?
posts
Recreating Deleted Owners Group for M365-Connected SharePoint Sites
Recreating Deleted Owners Group for M365-Connected SharePoint Sites If out-of-the-box (OOB) groups such as owners, members, or visitors have been deleted accidentally from your SharePoint site, this article may assist you in recovering those vanished groups specifically for M365 linked Team site. I recently encountered a distress call from an end user facing data access issues on a SharePoint Team site. To my dismay, I discovered that the SharePoint Owners group had been accidentally deleted, prompting me to seek and implement a solution to restore access.
Tag: M365
posts
Searching Sensitivity Labels in SharePoint
Searching Sensitivity Labels in SharePoint Sensitivity labels are a powerful tool for protecting documents, offering features like watermarks, encryption, and access control at the file level. However, the default Sensitivity column in SharePoint has limitations—it cannot be filtered, indexed, or bulk updated. This blog post explores ways to search for sensitivity label values in SharePoint and highlights some challenges and potential solutions.
Challenges with Sensitivity Labels in SharePoint The crawled managed property InformationProtectionLabelId refers to the sensitivity label’s GUID/ID, which is not user-friendly for end users to easily search.
posts
Troubleshooting M365 Tenant Latency Issues
Latency Issues Accessing Microsoft 365 Sites - SharePoint, Admin Center When using a SaaS (Software as a Service) product like Microsoft 365, troubleshooting performance issues can be challenging due to the lack of server-level access. This limitation makes it difficult to analyze network traffic or monitor server resources like CPU, RAM, or storage, which could impact the performance of SharePoint sites.
We were experiencing errors, timeouts, delays, and non-functional features for users.
posts
Issues with Default Sensitivity Labels in SharePoint Document Libraries
Introduction Default sensitivity labels can be set at the document library level in SharePoint to help manage and protect your data.
However, there are some limitations and issues that you should be aware of like the default sensitivity label does not automatically update existing files within SharePoint and there might be delay in applying the sensitivity label within M365 app. This is described in the documentation for Configuring a default sensitivity label for a SharePoint document library.
posts
Comparing File Collaboration and Search Features: SharePoint vs. Microsoft Teams
Introduction Microsoft Teams provides a unified platform for end users to collaborate on files stored within SharePoint. However, there are notable differences between the two platforms that can influence your decision on when to use SharePoint and when to use Teams.
Search Functionality Contextual Search Contextual search on libraries does not exist within Teams, while SharePoint offers richer contextual search at library, site, organization, and hub levels. Issue with Results from Shared Channels There is an issue searching contents within shared channels where the shared channel name is shown as Mock Team Name which is not helpful identitying the source of the search results without opening the file.
posts
Adding M365 Group/Teams Owners and Members to SharePoint Group with PnP PowerShell
Introduction There are situations where you might want to reuse the M365 Group principals to assign permissions to other sites without creating additional Entra ID groups. This can be useful for:
Adding M365 group members to a SharePoint site, such as an intranet site for ‘Human Resources’ managed by the ‘Human Resources’ M365 Group/Teams or a hub site managed by a ‘Service Desk’ M365 Group/Teams. Adding M365 group members to custom or out-of-the-box SharePoint groups, such as adding particular M365 group owners or members to custom groups created for additional libraries within a different site.
posts
Managing Microsoft 365 Group Settings with PnP PowerShell and Microsoft Graph
Introduction Managing Microsoft 365 Group settings is crucial for maintaining a compliant and secure environment.PowerShell and Microsoft Graph can be used to configure various group settings, including naming policies, guest access, and more.
As a regular user of PnP PowerShell, I aimed to replicate the functionality of the Microsoft Entra cmdlets for configuring group settings using PnP PowerShell.
Example Script to Update naming policy Settings The following PowerShell script updates the naming group settings using the Microsoft Graph API and PnP PowerShell.
posts
Sharing Options Updates - Send Email Button Greyed Out
Sharing Options Updates - Send Email button greyed out Starting from March 2024, there has been a notable change in SharePoint’s sharing options. If a user is not allowed to share on a SharePoint site (for instance, when a user is a member and only owners have sharing privileges), the Send Email button appears greyed out. Additionally, a warning message is displayed: Sharing is limited on this item. You can only copy links for people who have existing access, and you can’t invite anyone new.
posts
PowerShell: Set and Remove SharePoint Site Thumbnail Logo
For many organizations, maintaining a consistent brand identity across SharePoint sites is crucial. The distinction between “Site Logo” and “Site Logo Thumbnail” is essential, as they serve different purposes across SharePoint and the Microsoft 365 ecosystem. The site logo appears in the site header, while the site logo thumbnail is used in search results, site cards, when copying/moving files, and other critical areas. It plays a vital role in helping end users differentiate between various SharePoint Online (SPO) sites and Teams.
posts
Recreating Deleted Owners Group for M365-Connected SharePoint Sites
Recreating Deleted Owners Group for M365-Connected SharePoint Sites If out-of-the-box (OOB) groups such as owners, members, or visitors have been deleted accidentally from your SharePoint site, this article may assist you in recovering those vanished groups specifically for M365 linked Team site. I recently encountered a distress call from an end user facing data access issues on a SharePoint Team site. To my dismay, I discovered that the SharePoint Owners group had been accidentally deleted, prompting me to seek and implement a solution to restore access.
Tag: Microsoft Search
posts
Searching Sensitivity Labels in SharePoint
Searching Sensitivity Labels in SharePoint Sensitivity labels are a powerful tool for protecting documents, offering features like watermarks, encryption, and access control at the file level. However, the default Sensitivity column in SharePoint has limitations—it cannot be filtered, indexed, or bulk updated. This blog post explores ways to search for sensitivity label values in SharePoint and highlights some challenges and potential solutions.
Challenges with Sensitivity Labels in SharePoint The crawled managed property InformationProtectionLabelId refers to the sensitivity label’s GUID/ID, which is not user-friendly for end users to easily search.
Tag: Purview
posts
Searching Sensitivity Labels in SharePoint
Searching Sensitivity Labels in SharePoint Sensitivity labels are a powerful tool for protecting documents, offering features like watermarks, encryption, and access control at the file level. However, the default Sensitivity column in SharePoint has limitations—it cannot be filtered, indexed, or bulk updated. This blog post explores ways to search for sensitivity label values in SharePoint and highlights some challenges and potential solutions.
Challenges with Sensitivity Labels in SharePoint The crawled managed property InformationProtectionLabelId refers to the sensitivity label’s GUID/ID, which is not user-friendly for end users to easily search.
posts
Issues with Default Sensitivity Labels in SharePoint Document Libraries
Introduction Default sensitivity labels can be set at the document library level in SharePoint to help manage and protect your data.
However, there are some limitations and issues that you should be aware of like the default sensitivity label does not automatically update existing files within SharePoint and there might be delay in applying the sensitivity label within M365 app. This is described in the documentation for Configuring a default sensitivity label for a SharePoint document library.
Tag: Sensitivity Labels
posts
Searching Sensitivity Labels in SharePoint
Searching Sensitivity Labels in SharePoint Sensitivity labels are a powerful tool for protecting documents, offering features like watermarks, encryption, and access control at the file level. However, the default Sensitivity column in SharePoint has limitations—it cannot be filtered, indexed, or bulk updated. This blog post explores ways to search for sensitivity label values in SharePoint and highlights some challenges and potential solutions.
Challenges with Sensitivity Labels in SharePoint The crawled managed property InformationProtectionLabelId refers to the sensitivity label’s GUID/ID, which is not user-friendly for end users to easily search.
posts
Issues with Default Sensitivity Labels in SharePoint Document Libraries
Introduction Default sensitivity labels can be set at the document library level in SharePoint to help manage and protect your data.
However, there are some limitations and issues that you should be aware of like the default sensitivity label does not automatically update existing files within SharePoint and there might be delay in applying the sensitivity label within M365 app. This is described in the documentation for Configuring a default sensitivity label for a SharePoint document library.
Tag: Excel for Business
posts
Read Rows in Excel Using Power Automate with 'Create Table' Action
Read Rows in Excel Using Power Automate with ‘Create Table’ Action When working with Excel files that need to be imported into a SharePoint list, you may encounter scenarios where the data is not already in table format. This can be challenging, especially if the Excel files are automatically generated by an external system and cannot be manually updated.
This blog post demonstrates how to dynamically convert raw data into a table using the Create Table action in Power Automate and subsequently read rows using the List rows present in a table action.
posts
Get Library Drive Id using Power Automate
When using Power Automate with Excel for Business actions, the drive ID for a library is automatically determined. However, if you deploy a Power Automate solution across different environments and use a library as a datasource environment variable, referencing this variable in the flow can result in an error due to an invalid drive ID.
Referencing the variable in the Power Automate flow, it will throw an error message failing to work our the drive id of the library.
Tag: Import Data
posts
Read Rows in Excel Using Power Automate with 'Create Table' Action
Read Rows in Excel Using Power Automate with ‘Create Table’ Action When working with Excel files that need to be imported into a SharePoint list, you may encounter scenarios where the data is not already in table format. This can be challenging, especially if the Excel files are automatically generated by an external system and cannot be manually updated.
This blog post demonstrates how to dynamically convert raw data into a table using the Create Table action in Power Automate and subsequently read rows using the List rows present in a table action.
Tag: OFFSET Excel Function
posts
Read Rows in Excel Using Power Automate with 'Create Table' Action
Read Rows in Excel Using Power Automate with ‘Create Table’ Action When working with Excel files that need to be imported into a SharePoint list, you may encounter scenarios where the data is not already in table format. This can be challenging, especially if the Excel files are automatically generated by an external system and cannot be manually updated.
This blog post demonstrates how to dynamically convert raw data into a table using the Create Table action in Power Automate and subsequently read rows using the List rows present in a table action.
Tag: PowerAutomate
posts
Read Rows in Excel Using Power Automate with 'Create Table' Action
Read Rows in Excel Using Power Automate with ‘Create Table’ Action When working with Excel files that need to be imported into a SharePoint list, you may encounter scenarios where the data is not already in table format. This can be challenging, especially if the Excel files are automatically generated by an external system and cannot be manually updated.
This blog post demonstrates how to dynamically convert raw data into a table using the Create Table action in Power Automate and subsequently read rows using the List rows present in a table action.
posts
Power Automate: Save Run Flow URL to SharePoint List Item
Power Automate: Save Run Flow URL to SharePoint List Item When running a Power Automate flow, capturing and saving the flow’s run URL to a SharePoint list item can simplify troubleshooting and auditing. This allows you to easily revisit the flow run details in case of failures or for review purposes. However, note that flow run URLs are only available for 30 days, so older links may no longer work.
posts
Exploring some Limitations of Copilot in Power Automate
Exploring some Limitations of Copilot in Power Automate I was thrilled when Copilot became available in the UK region within Power Automate around mid-November 2023. To understand its functionalities and limitations, I started exploring. Please refer to Understanding the Cloud Flows Designer, which outlines some limitations and described the Flows Designer experience.
Creating New Flows While creating a new flow using the prompt “Start an approval process and update the item in a SharePoint list when a new item is created,” I noticed a functional flow generated.
posts
Converting a HTTP Trigger into a Child Workflow in Power Automate
Converting a HTTP Trigger into a Child Workflow in Power Automate Using a HTTP trigger requires Premium licence and with the Child Workflow in a solution alleviates the need of premium license.
Other advantages using a solution:
Application Lifecycle Management: Facilitates deployment. Child Workflow: Allows for a more modular and manageable flow structure. Easier Ownership Management: Simplifies updates to the flow owner. I recreated the child workflow within the solution selecting the Manually trigger a flow trigger and updated the parent flow to use the flow as child workflow.
posts
Updating Approval Details in SharePoint Library using 'Send HTTP Request to SharePoint' in Power Automate
Updating Approval Details in SharePoint Library using ‘Send HTTP Request to SharePoint’ in Power Automate In Power Automate, there are two methods for updating file properties:
Send HTTP Request to SharePoint Update File Properties While the latter suffices for most cases, I opted for the “Send HTTP Request to SharePoint” in specific scenarios:
To avoid triggering a new file version using system update. When modifying system columns such as author or modified date.
Tag: Internal Name
posts
Power Automate: Retrieve SharePoint Library Internal Name
Power Automate: Retrieve SharePoint Library Internal Name When working with Power Automate, you may encounter scenarios where you need the internal name of a SharePoint library. For example, when creating a file in a library using Power Automate, the internal name is often required. Instead of manually adding the internal name as an environment variable, you can dynamically retrieve it using the Send an HTTP Request to SharePoint action.
This blog post demonstrates how to retrieve the internal name of a SharePoint library using its ID or display name.
Tag: Library
posts
Power Automate: Retrieve SharePoint Library Internal Name
Power Automate: Retrieve SharePoint Library Internal Name When working with Power Automate, you may encounter scenarios where you need the internal name of a SharePoint library. For example, when creating a file in a library using Power Automate, the internal name is often required. Instead of manually adding the internal name as an environment variable, you can dynamically retrieve it using the Send an HTTP Request to SharePoint action.
This blog post demonstrates how to retrieve the internal name of a SharePoint library using its ID or display name.
posts
SharePoint - working round restore a library link missing
Introduction Have you ever encountered the frustrating situation where the Restore a library link in SharePoint is missing or inconsistently available? This can be a significant issue when you need to restore a library urgently.
The Problem Typically, you would expect to see the link ‘Restore This Library’ in the SharePoint interface: Restore library
However, in some cases, this link might be missing:
Restore Library Missing
The Workaround After some investigation, I discovered a workaround.
posts
Getting Storage Metrics for a SharePoint site
Gaining an overview of what takes up space in a SharePoint site is crucial for monitoring large files or a significant number of versions.
Unfortunately, the storage metrics link, <siteurl>/_layouts/15/storman.aspx, won’t work for libraries with more than 5,000 files without nested folders. While this might go against information architecture principles, creating folders is an option to avoid the list view threshold error.
Here’s a PowerShell script to help you get storage metrics for your SharePoint site:
posts
Counting Files and folders within SharePoint Libraries using PnP PowerShell
Counting Files and Folders within SharePoint Libraries using PnP PowerShell This post shows a PowerShell script using PnP PowerShell module to count the number of files and folders within a SharePoint library. It might be useful doing an inventory of file count.
$SiteURL = "Counting Files within a SharePoint Library using PnP PowerShell" # Generate a unique log file name using today's date $dateTime = (Get-Date).toString("dd-MM-yyyy") $invocation = (Get-Variable MyInvocation).Value $directorypath = Split-Path $invocation.
Tag: Send an HTTP request to SharePoint
posts
Power Automate: Retrieve SharePoint Library Internal Name
Power Automate: Retrieve SharePoint Library Internal Name When working with Power Automate, you may encounter scenarios where you need the internal name of a SharePoint library. For example, when creating a file in a library using Power Automate, the internal name is often required. Instead of manually adding the internal name as an environment variable, you can dynamically retrieve it using the Send an HTTP Request to SharePoint action.
This blog post demonstrates how to retrieve the internal name of a SharePoint library using its ID or display name.
posts
Publishing Major Versions of Files in SharePoint with Power Automate
Publishing Major Versions of Files in SharePoint with Power Automate This post covers how to publish major versions for Office documents (Word, Excel, or PowerPoint) in SharePoint using Power Automate, especially after an approval task using the checkin and publish REST endpoints. This applies to libraries having minor versions enabled
Just for context, a Power Automate approval flow with trigger for a selected file needed publishing for the selected file as major version after being approved.
Tag: Document ID
posts
PnP PowerShell: Enabling and Configuring Document ID in SharePoint
PnP PowerShell: Enabling and Configuring Document ID in SharePoint The Document ID feature in SharePoint is a powerful tool that assigns a unique ID to files, making it easier to reference and track documents. The script within the post activates and configures the Document ID feature using PnP PowerShell. Additionally, it covers the Set-PnPSiteDocumentIdPrefix cmdlet, which simplifies the process of setting a custom prefix for Document IDs.
Why Use Document IDs?
Tag: Property Bag
posts
PnP PowerShell: Enabling and Configuring Document ID in SharePoint
PnP PowerShell: Enabling and Configuring Document ID in SharePoint The Document ID feature in SharePoint is a powerful tool that assigns a unique ID to files, making it easier to reference and track documents. The script within the post activates and configures the Document ID feature using PnP PowerShell. Additionally, it covers the Set-PnPSiteDocumentIdPrefix cmdlet, which simplifies the process of setting a custom prefix for Document IDs.
Why Use Document IDs?
Tag: OneDrive
posts
Finding Storage Nearing Exceeding Quota with PowerShell
Monitoring Storage Quotas with PowerShell Managing storage quotas in Microsoft 365 is critical to ensure uninterrupted service and optimal performance. This blog post demonstrates how to use a PowerShell script to monitor storage usage across SharePoint Online sites and identify sites nearing or exceeding their storage quotas.
Script Overview The script connects to the SharePoint Online admin center, retrieves site storage details, calculates the percentage of storage used, and generates a report for sites exceeding 80% of their allocated storage quota.
posts
Teams Chats - default Sharing Links to 'People Currently in this Chat
Have you ever wondered how to default the default sharing link in Teams chats to ‘People currently in this chat’? By default, if “Anyone” is disabled within the tenant, the sharing link is set to “People in my organization”. This can be a challenge when you want to limit access to only those in the current chat. All files uploaded to a Teams Chat are stored in the uploader’s OneDrive for Business.
posts
Empowering Secure Collaboration: Configuring OneDrive Tenant and Site Settings
Empowering Secure Collaboration: Configuring OneDrive Tenant Settings with PowerShell OneDrive makes it easy to collaborate by sharing files and folders with others. OneDrive is the storage space for personal productivity and not meant for collaboration. Data stored within OneDrive are
Files shared to chats within Teams Files shared with end user by other OneDrive users. OneNote Personal lists and Document storage Shortcuts to SharePoint sites/libraries Favourites Loops within chats Streams In this article, we’ll explore into how PowerShell can empower SharePoint administrators to configure OneDrive sharing settings proactively at the tenant level, addressing oversharing concerns for the M365 Copilot rollout.
posts
Discovering All Checked Out Files including those with no checked in versions with PnP PowerShell
Discovering All Checked Out Files including those with no checked in versions There are scenarios when files uploaded won’t have “checked-in version” which will make the files visible only to their uploader. Two possible scenarios that can lead to the situation:
Mandatory Metadata Requirements: When there are mandatory fields configured on the libraries and end users use Onedrive as a medium to upload the files to SharePoint via a shortcut to OneDrive.
Tag: Azure DevOps
posts
Logic Apps: System Assigned Identity and Source Control
Introduction Azure Logic Apps provide a powerful alternative to Power Automate for building workflows and integrations in the cloud. While both tools share similarities, Logic Apps offer unique advantages, especially for enterprise-scale solutions. However, managing Logic Apps in source control and deploying them via Azure DevOps pipelines comes with its own set of challenges.
This blog post explores the differences between Logic Apps and Power Automate, highlights the limitations of Logic Apps in source control, and provides insights into handling system-assigned identities and API versions during deployment.
posts
Eliminating the Need for PATs in Azure DevOps for Power Platform CI/CD
Introduction The PAT(Personal Access Token) is the Azure DevOps personal access token which can be generated from your account settings and used for authentication when performing Git operations.
Cons using PATs Not conducive for teamwork: If the PAT belongs to a team member who leaves the organization, the release manager or another team member will have to generate their own PAT and update the pipeline. Security risks: Similar to a password, a PAT poses risks if leaked.
posts
Sharing Connection References with Service Principal in Azure DevOps for Power Platform ALM
Introduction When setting up your Azure DevOps pipeline for deploying a Power Platform solution, you may encounter an error message if your solution relies on connection references.
The reason given was : An unexpected error occurred.
This generic message does not provide much help and can occur for multiple reasons. In my scenario, it was related to the connection references in the target environment not being shared with the service principal.
posts
Secure Power Platform Deployments with Azure DevOps Workload Identity Federation
Client secrets have traditionally been the go-to method for deploying Power Platform solutions from Azure DevOps, utilizing app registrations from the Azure platform. However, my personal experience has shown that this approach can be problematic, especially when you are not an application admin. It often involves wasting time figuring out why deployments have failed due to expired or missing client secrets. Even when reaching out to someone with application admin rights, they might generate a new client secret but forget to update the service connections for each service connection within Azure DevOps or the application admin does not have access requiring to reach out to someone else who have access, causing further disruptions.
posts
Azure DevOps Spfx Deployment Workload Identity Federation
Introduction Thanks to Kinga Kazala for her timely article Deploy SPFx app using pipeline’s Workload Identity federation, which showcases how to use Workload Identity Federation to alleviate the need for using Entra app secrets or certificates. This method simplifies the setup process, especially when there’s reliance on a single person who might be unavailable.
We initially set up the SPFx pipeline for the Test environment using certificates with CLI for M365.
posts
Azure DevOps Powerplatform Deployment error due to timing issue
If it takes too long to deploy the solution, time out issues might occur. In this instance consider checking and updating the MaxAsyncWaitTime. Its value has been increased to 120 which means the deployment process will wait up to 120 seconds (or 2 minutes) for asynchronous operations such as import power platform solution to complete fixing the timing out issue.
The fix is to amend the MaxAsyncWaitTime to 120
- task: PowerPlatformImportSolution@2 inputs: authenticationType: PowerPlatformSPN PowerPlatformSPN: 'powerplatform-t-connection' Environment: 'https://contoso-st.
posts
Overcoming challenges with Azure DevOps Pipelines using Self-Hosted Build Agents for Power Platform Managed Solutions
Overcoming Challenges with Azure DevOps Pipelines using Self-Hosted Build Agents for Power Platform Managed Solutions Application Lifecycle Management (ALM) for Power Platform solutions can be effectively managed using Azure DevOps, providing a robust framework for automating deployments, version control, and continuous integration and delivery, thereby enhancing productivity and reducing manual errors. Refer to the posts for more details: Power Platform ALM & Pipelines w/ Matt Devaney and Converting to Modern YAML Pipeline: Application Lifecycle Management in Azure DevOps for Power Platform
posts
Converting to Modern YAML Pipeline: Application Lifecycle Management in Azure DevOps for Power Platform
Converting to Modern YAML Pipeline: Application Lifecycle Management in Azure DevOps for Power Platform There are loads of posts explaining Application Lifecycle Management for the Power Platform using Azure DevOps most using the graphical classical pipeline. The latest post I read on this is Application Lifecycle Management for the Power Platform using Azure DevOps by Luise Freese which is brilliant.
Please read article covering difference between YAML and Classic UI to explain why you may want the modern YAML pipeline.
posts
Unable to find Power Platform in Azure DevOps
Unable to find Power Platform in Azure DevOps Issue I was Unable to find the powerplatform in Azure devops
Solution The solution is to install the Extension: Power Platform Build Tools (2.0.5) to Organisation.
This will enable the Power Platform service connection.
References Unable to find the powerplatform in Azure devops
posts
Coauthoring in power apps issues
Coauthoring with power apps issues Coauthoring in power apps allows multiple power apps developers to work on the same canvas app. Despite being an experimental feature we decided to give a try to speed up the development process. We used the blog post [How To Setup Power Apps Co-Authoring - Azure DevOps Version] (https://www.matthewdevaney.com/how-to-setup-power-apps-co-authoring-azure-dev-ops-version/). The tutorial covers step-by-step instructions for enabling co-authoring for canvas apps in Power Apps using Azure DevOps repository.
Tag: Logic Apps
posts
Logic Apps: System Assigned Identity and Source Control
Introduction Azure Logic Apps provide a powerful alternative to Power Automate for building workflows and integrations in the cloud. While both tools share similarities, Logic Apps offer unique advantages, especially for enterprise-scale solutions. However, managing Logic Apps in source control and deploying them via Azure DevOps pipelines comes with its own set of challenges.
This blog post explores the differences between Logic Apps and Power Automate, highlights the limitations of Logic Apps in source control, and provides insights into handling system-assigned identities and API versions during deployment.
Tag: Source Control
posts
Logic Apps: System Assigned Identity and Source Control
Introduction Azure Logic Apps provide a powerful alternative to Power Automate for building workflows and integrations in the cloud. While both tools share similarities, Logic Apps offer unique advantages, especially for enterprise-scale solutions. However, managing Logic Apps in source control and deploying them via Azure DevOps pipelines comes with its own set of challenges.
This blog post explores the differences between Logic Apps and Power Automate, highlights the limitations of Logic Apps in source control, and provides insights into handling system-assigned identities and API versions during deployment.
Tag: System Assigned
posts
Logic Apps: System Assigned Identity and Source Control
Introduction Azure Logic Apps provide a powerful alternative to Power Automate for building workflows and integrations in the cloud. While both tools share similarities, Logic Apps offer unique advantages, especially for enterprise-scale solutions. However, managing Logic Apps in source control and deploying them via Azure DevOps pipelines comes with its own set of challenges.
This blog post explores the differences between Logic Apps and Power Automate, highlights the limitations of Logic Apps in source control, and provides insights into handling system-assigned identities and API versions during deployment.
Tag: CSS
posts
List formatting conditionally display different actions to call a power automate flow
Introduction In SharePoint, you can enhance user interactions by conditionally triggering different Power Automate flows based on specific conditions in a list or library. This is achieved using JSON column formatting and the executeFlow action. By dynamically linking flows to specific conditions, you can streamline processes and improve automation.
List formatting provides a powerful feature to control the flow of a process from filling mandatory fields, create approval tasks. Depending on the status of the list item, different power automate flows can be called.
posts
Adding a Copy Button to Code Blocks in Hugo with Netlify
Introduction Adding a “Copy Code” button to code blocks in your Hugo blog can significantly enhance the user experience, especially for technical blogs. With the help of GitHub Copilot, I implemented a solution to add a copy button above code blocks, styled similarly to GitHub’s copy button.
This blog post walks you through the steps to achieve this functionality using JavaScript and CSS. By the end, you’ll have a fully functional “Copy” button that appears in the top of your code blocks.
posts
Enhance List Formatting for Multi-Line Text fields challenges
Enhance List Formatting for Multi-Line Text fields challenges Summary The following sample shows how you can view more of a truncated multi line text column on click. Column formatting in SharePoint is a powerful tool to customize how data is displayed. Multi-line text fields, however, present unique challenges when applying these formats. This guide explores a method to expand truncated multi-line text on click and discusses its limitations.
Understanding the Concept The objective is to provide users with a preview of truncated text and enable expansion on hover.
posts
Executing a Flow from Column Formatting from a page using the Embed Webpart
Executing a Flow from Column Formatting from a page using the Embed Webpart I encountered an intriguing challenge: triggering a flow from column formatting within a List View Webpart. Initially, I successfully created a button within a list to execute a flow on a specific item, following the steps outlined in Microsoft’s documentation here. It worked seamlessly within the list interface directly.
However, when attempting to add the list with the formatting column using the list view webpart on a page to allow end-users to trigger the flow the results were different.
Tag: HTML
posts
List formatting conditionally display different actions to call a power automate flow
Introduction In SharePoint, you can enhance user interactions by conditionally triggering different Power Automate flows based on specific conditions in a list or library. This is achieved using JSON column formatting and the executeFlow action. By dynamically linking flows to specific conditions, you can streamline processes and improve automation.
List formatting provides a powerful feature to control the flow of a process from filling mandatory fields, create approval tasks. Depending on the status of the list item, different power automate flows can be called.
posts
Enhance List Formatting for Multi-Line Text fields challenges
Enhance List Formatting for Multi-Line Text fields challenges Summary The following sample shows how you can view more of a truncated multi line text column on click. Column formatting in SharePoint is a powerful tool to customize how data is displayed. Multi-line text fields, however, present unique challenges when applying these formats. This guide explores a method to expand truncated multi-line text on click and discusses its limitations.
Understanding the Concept The objective is to provide users with a preview of truncated text and enable expansion on hover.
posts
Executing a Flow from Column Formatting from a page using the Embed Webpart
Executing a Flow from Column Formatting from a page using the Embed Webpart I encountered an intriguing challenge: triggering a flow from column formatting within a List View Webpart. Initially, I successfully created a button within a list to execute a flow on a specific item, following the steps outlined in Microsoft’s documentation here. It worked seamlessly within the list interface directly.
However, when attempting to add the list with the formatting column using the list view webpart on a page to allow end-users to trigger the flow the results were different.
posts
Optimizing Email HTML for Outlook
Optimizing Email HTML for Outlook using the ‘Send Email’ action within Power Automate When crafting attention-grabbing emails, the HTML structure plays a pivotal role. I recently encountered challenges in achieving consistent formatting across Outlook desktop and web versions using the Send Email action within Power Automate.
Using div Tags for Responsiveness At first, I experimented with divs to ensure responsiveness and modern HTML formatting. The code appeared as follows:
<style> .
Tag: JSON
posts
List formatting conditionally display different actions to call a power automate flow
Introduction In SharePoint, you can enhance user interactions by conditionally triggering different Power Automate flows based on specific conditions in a list or library. This is achieved using JSON column formatting and the executeFlow action. By dynamically linking flows to specific conditions, you can streamline processes and improve automation.
List formatting provides a powerful feature to control the flow of a process from filling mandatory fields, create approval tasks. Depending on the status of the list item, different power automate flows can be called.
posts
JSON Data Handling in Power Automate: Double Quotes
When using Power Automate action Send an Http request to SharePoint specially to send data in the body to a REST API call, for instance to create a news link from a SharePoint List Item, you might encounter issues if the body contains double quotes in the title or description. This blog post will walk you through the problem and provide solutions to handle double quotes in JSON strings.
Problem Overview Using the Send an Http request to SharePoint action to create a news link can fail if the JSON body contains double quotes.
posts
JSON Data Handling in Power Automate: outputs versus body
JSON Data Handling in Power Automate : outputs versus body In Power Automate, JSON data output from various actions is key to connect each other.
Accessing Action Outputs Accessing the outputs of a specific action, such as the action ‘Get file properties’, the spcific property can be accessed via the outputs, for instance file name with extension.:
outputs(‘Get_file_properties’)?[‘body/{FilenameWithExtension}’]
Referencing Action Body A streamlined way is to reference the body directly making it simpler.
posts
Enhance List Formatting for Multi-Line Text fields challenges
Enhance List Formatting for Multi-Line Text fields challenges Summary The following sample shows how you can view more of a truncated multi line text column on click. Column formatting in SharePoint is a powerful tool to customize how data is displayed. Multi-line text fields, however, present unique challenges when applying these formats. This guide explores a method to expand truncated multi-line text on click and discusses its limitations.
Understanding the Concept The objective is to provide users with a preview of truncated text and enable expansion on hover.
posts
Executing a Flow from Column Formatting from a page using the Embed Webpart
Executing a Flow from Column Formatting from a page using the Embed Webpart I encountered an intriguing challenge: triggering a flow from column formatting within a List View Webpart. Initially, I successfully created a button within a list to execute a flow on a specific item, following the steps outlined in Microsoft’s documentation here. It worked seamlessly within the list interface directly.
However, when attempting to add the list with the formatting column using the list view webpart on a page to allow end-users to trigger the flow the results were different.
Tag: List formatting
posts
List formatting conditionally display different actions to call a power automate flow
Introduction In SharePoint, you can enhance user interactions by conditionally triggering different Power Automate flows based on specific conditions in a list or library. This is achieved using JSON column formatting and the executeFlow action. By dynamically linking flows to specific conditions, you can streamline processes and improve automation.
List formatting provides a powerful feature to control the flow of a process from filling mandatory fields, create approval tasks. Depending on the status of the list item, different power automate flows can be called.
posts
Update managed metadata field using list formatting
Using column formatting in SharePoint, you can update the values of other fields using the setValue function. This approach allows you to create dynamic functionality in your lists and libraries without extensive development, helping to avoid accumulating technical debt.
Updating a Managed Metadata field, however, is not as straightforward as simply specifying the display value. The field expects a specific format that includes the term’s ID (termId).
Understanding Column Formatting Column formatting in SharePoint involves using a combination of inline CSS, HTML, and JSON to control how fields in lists and libraries are displayed.
posts
Internal References in SharePoint Column Formatting for Document libraries: leveraging Name, Folder and Path properties
SharePoint Column Formatting for Document libraries: Leveraging Name, Folder and Path properties While referencing [$Title] in lists is straightforward, document libraries demand a nuanced approach. Instead of [$Name], had to delve into the intricacies of internal names like $FileLeafRef and $FileRef when working with column formatting.
$FileLeafRef: Denotes the name of the file.
$FileRef: Represents the server-relative URL of the file.
Initial attempts to incorporate $FileSystemObjectType for folder identification was challenging, indicating that not all document library internal column names are supported.
posts
Enhance List Formatting for Multi-Line Text fields challenges
Enhance List Formatting for Multi-Line Text fields challenges Summary The following sample shows how you can view more of a truncated multi line text column on click. Column formatting in SharePoint is a powerful tool to customize how data is displayed. Multi-line text fields, however, present unique challenges when applying these formats. This guide explores a method to expand truncated multi-line text on click and discusses its limitations.
Understanding the Concept The objective is to provide users with a preview of truncated text and enable expansion on hover.
posts
Executing a Flow from Column Formatting from a page using the Embed Webpart
Executing a Flow from Column Formatting from a page using the Embed Webpart I encountered an intriguing challenge: triggering a flow from column formatting within a List View Webpart. Initially, I successfully created a button within a list to execute a flow on a specific item, following the steps outlined in Microsoft’s documentation here. It worked seamlessly within the list interface directly.
However, when attempting to add the list with the formatting column using the list view webpart on a page to allow end-users to trigger the flow the results were different.
Tag: SetValue
posts
List formatting conditionally display different actions to call a power automate flow
Introduction In SharePoint, you can enhance user interactions by conditionally triggering different Power Automate flows based on specific conditions in a list or library. This is achieved using JSON column formatting and the executeFlow action. By dynamically linking flows to specific conditions, you can streamline processes and improve automation.
List formatting provides a powerful feature to control the flow of a process from filling mandatory fields, create approval tasks. Depending on the status of the list item, different power automate flows can be called.
Tag: Trigger Flow
posts
List formatting conditionally display different actions to call a power automate flow
Introduction In SharePoint, you can enhance user interactions by conditionally triggering different Power Automate flows based on specific conditions in a list or library. This is achieved using JSON column formatting and the executeFlow action. By dynamically linking flows to specific conditions, you can streamline processes and improve automation.
List formatting provides a powerful feature to control the flow of a process from filling mandatory fields, create approval tasks. Depending on the status of the list item, different power automate flows can be called.
posts
Executing a Flow from Column Formatting from a page using the Embed Webpart
Executing a Flow from Column Formatting from a page using the Embed Webpart I encountered an intriguing challenge: triggering a flow from column formatting within a List View Webpart. Initially, I successfully created a button within a list to execute a flow on a specific item, following the steps outlined in Microsoft’s documentation here. It worked seamlessly within the list interface directly.
However, when attempting to add the list with the formatting column using the list view webpart on a page to allow end-users to trigger the flow the results were different.
Tag: Save Flow URL
posts
Power Automate: Save Run Flow URL to SharePoint List Item
Power Automate: Save Run Flow URL to SharePoint List Item When running a Power Automate flow, capturing and saving the flow’s run URL to a SharePoint list item can simplify troubleshooting and auditing. This allows you to easily revisit the flow run details in case of failures or for review purposes. However, note that flow run URLs are only available for 30 days, so older links may no longer work.
Tag: View Formatting
posts
Power Automate: Save Run Flow URL to SharePoint List Item
Power Automate: Save Run Flow URL to SharePoint List Item When running a Power Automate flow, capturing and saving the flow’s run URL to a SharePoint list item can simplify troubleshooting and auditing. This allows you to easily revisit the flow run details in case of failures or for review purposes. However, note that flow run URLs are only available for 30 days, so older links may no longer work.
Tag: DNS
posts
Troubleshooting M365 Tenant Latency Issues
Latency Issues Accessing Microsoft 365 Sites - SharePoint, Admin Center When using a SaaS (Software as a Service) product like Microsoft 365, troubleshooting performance issues can be challenging due to the lack of server-level access. This limitation makes it difficult to analyze network traffic or monitor server resources like CPU, RAM, or storage, which could impact the performance of SharePoint sites.
We were experiencing errors, timeouts, delays, and non-functional features for users.
Tag: Latency
posts
Troubleshooting M365 Tenant Latency Issues
Latency Issues Accessing Microsoft 365 Sites - SharePoint, Admin Center When using a SaaS (Software as a Service) product like Microsoft 365, troubleshooting performance issues can be challenging due to the lack of server-level access. This limitation makes it difficult to analyze network traffic or monitor server resources like CPU, RAM, or storage, which could impact the performance of SharePoint sites.
We were experiencing errors, timeouts, delays, and non-functional features for users.
Tag: Network
posts
Troubleshooting M365 Tenant Latency Issues
Latency Issues Accessing Microsoft 365 Sites - SharePoint, Admin Center When using a SaaS (Software as a Service) product like Microsoft 365, troubleshooting performance issues can be challenging due to the lack of server-level access. This limitation makes it difficult to analyze network traffic or monitor server resources like CPU, RAM, or storage, which could impact the performance of SharePoint sites.
We were experiencing errors, timeouts, delays, and non-functional features for users.
Tag: Troubleshooting
posts
Troubleshooting M365 Tenant Latency Issues
Latency Issues Accessing Microsoft 365 Sites - SharePoint, Admin Center When using a SaaS (Software as a Service) product like Microsoft 365, troubleshooting performance issues can be challenging due to the lack of server-level access. This limitation makes it difficult to analyze network traffic or monitor server resources like CPU, RAM, or storage, which could impact the performance of SharePoint sites.
We were experiencing errors, timeouts, delays, and non-functional features for users.
Tag: Copy Button
posts
Adding a Copy Button to Code Blocks in Hugo with Netlify
Introduction Adding a “Copy Code” button to code blocks in your Hugo blog can significantly enhance the user experience, especially for technical blogs. With the help of GitHub Copilot, I implemented a solution to add a copy button above code blocks, styled similarly to GitHub’s copy button.
This blog post walks you through the steps to achieve this functionality using JavaScript and CSS. By the end, you’ll have a fully functional “Copy” button that appears in the top of your code blocks.
Tag: GitHub Copilot
posts
Adding a Copy Button to Code Blocks in Hugo with Netlify
Introduction Adding a “Copy Code” button to code blocks in your Hugo blog can significantly enhance the user experience, especially for technical blogs. With the help of GitHub Copilot, I implemented a solution to add a copy button above code blocks, styled similarly to GitHub’s copy button.
This blog post walks you through the steps to achieve this functionality using JavaScript and CSS. By the end, you’ll have a fully functional “Copy” button that appears in the top of your code blocks.
Tag: Hugo
posts
Adding a Copy Button to Code Blocks in Hugo with Netlify
Introduction Adding a “Copy Code” button to code blocks in your Hugo blog can significantly enhance the user experience, especially for technical blogs. With the help of GitHub Copilot, I implemented a solution to add a copy button above code blocks, styled similarly to GitHub’s copy button.
This blog post walks you through the steps to achieve this functionality using JavaScript and CSS. By the end, you’ll have a fully functional “Copy” button that appears in the top of your code blocks.
posts
Enable Giscus for Hugo Blog
Enable Giscus for Hugo Blog I recently switched to Giscus for comments on my blog post, inspired by its popularity among other bloggers. Giscus, a commenting system powered by GitHub Discussions, offers a seamless way to engage with readers. If you’re using Hugo for your blog hosted on GitHub, linking Giscus to your posts is straightforward.
Note: The following setup guide is based on instructions generated by GitHub Copilot, which I successfully followed to integrate Giscus into my blog.
posts
Embed GitHub Gist in Hugo posts
Embed GitHub Gist in Hugo posts I was approached by Divya Akula with a suggestion to use a link to GitHub for my script and I really bought in the idea because I used to do it on Wordpress. I started googling and trying out solutions which did not work and messed up my blog repo. Fortunately being MVP I have access to GitHub Copilot and asked Copilot with a simple prompt which gave me a simple straight forward looking solution.
posts
Creating New Posts with Hugo
Creating New Posts with Hugo In this post, we will walk through the process of creating a new post in Hugo, a popular static site generator.
Step 1: Navigate to Your Hugo Site First, navigate to the directory where your Hugo site is configured. You can do this using the cd command in terminal:
cd .\Hugo\sites\M365Blog\ Step 2: Create a New Post Next, use the hugo new command to create a new post:
posts
How to Ensure Your Netlify Site is Search Engine Crawlable
How to Ensure Your Netlify Site is Search Engine Crawlable There are numerous posts to describe how to convert Wordpress to Hugo. I followed the instructions from blog post How to move your blog from Wordpress to Hugo to start with and hosted it on Netlify, it’s essential to ensure that search engines can crawl and index your site properly. Follow these steps to make sure your site is discoverable:
Tag: JavaScript
posts
Adding a Copy Button to Code Blocks in Hugo with Netlify
Introduction Adding a “Copy Code” button to code blocks in your Hugo blog can significantly enhance the user experience, especially for technical blogs. With the help of GitHub Copilot, I implemented a solution to add a copy button above code blocks, styled similarly to GitHub’s copy button.
This blog post walks you through the steps to achieve this functionality using JavaScript and CSS. By the end, you’ll have a fully functional “Copy” button that appears in the top of your code blocks.
Tag: netlify
posts
Adding a Copy Button to Code Blocks in Hugo with Netlify
Introduction Adding a “Copy Code” button to code blocks in your Hugo blog can significantly enhance the user experience, especially for technical blogs. With the help of GitHub Copilot, I implemented a solution to add a copy button above code blocks, styled similarly to GitHub’s copy button.
This blog post walks you through the steps to achieve this functionality using JavaScript and CSS. By the end, you’ll have a fully functional “Copy” button that appears in the top of your code blocks.
posts
Enable Giscus for Hugo Blog
Enable Giscus for Hugo Blog I recently switched to Giscus for comments on my blog post, inspired by its popularity among other bloggers. Giscus, a commenting system powered by GitHub Discussions, offers a seamless way to engage with readers. If you’re using Hugo for your blog hosted on GitHub, linking Giscus to your posts is straightforward.
Note: The following setup guide is based on instructions generated by GitHub Copilot, which I successfully followed to integrate Giscus into my blog.
posts
How to Ensure Your Netlify Site is Search Engine Crawlable
How to Ensure Your Netlify Site is Search Engine Crawlable There are numerous posts to describe how to convert Wordpress to Hugo. I followed the instructions from blog post How to move your blog from Wordpress to Hugo to start with and hosted it on Netlify, it’s essential to ensure that search engines can crawl and index your site properly. Follow these steps to make sure your site is discoverable:
Tag: File
posts
PowerShell: Finding and Deleting Files in SharePoint Libraries
Introduction Managing files in SharePoint libraries can be challenging, especially when dealing with test data or bulk operations. For instance, you may need to find and delete files containing specific names or patterns to reset a testing environment. This blog post demonstrates how to use PowerShell to locate and delete files in SharePoint libraries, including associated data in lists, to streamline the testing process.
In this example, we had PDF files containing a series of receipts that were split into individual files using Power Automate with the Encodian connector.
posts
Get Drive ID and Drive Item ID for File for Further Microsoft Graph Operations using PnP PowerShell
Introduction When working with files in SharePoint, the drive ID and drive item ID are essential parameters for further manipulation using Microsoft Graph API. The drive ID is a base64 encoded string composed of the site ID, web ID, and list ID for a particular SharePoint library. For more details, refer to Microsoft Graph: Encoding and decoding the drive ID by Mikael Svenson. The item ID part appears to be a base32 encoding of the SharePoint item’s unique ID, though the exact mechanics are still being explored.
posts
Getting Storage Metrics for a SharePoint site
Gaining an overview of what takes up space in a SharePoint site is crucial for monitoring large files or a significant number of versions.
Unfortunately, the storage metrics link, <siteurl>/_layouts/15/storman.aspx, won’t work for libraries with more than 5,000 files without nested folders. While this might go against information architecture principles, creating folders is an option to avoid the list view threshold error.
Here’s a PowerShell script to help you get storage metrics for your SharePoint site:
posts
Publishing Major Versions of Files in SharePoint with Power Automate
Publishing Major Versions of Files in SharePoint with Power Automate This post covers how to publish major versions for Office documents (Word, Excel, or PowerPoint) in SharePoint using Power Automate, especially after an approval task using the checkin and publish REST endpoints. This applies to libraries having minor versions enabled
Just for context, a Power Automate approval flow with trigger for a selected file needed publishing for the selected file as major version after being approved.
Tag: lists
posts
PowerShell: Finding and Deleting Files in SharePoint Libraries
Introduction Managing files in SharePoint libraries can be challenging, especially when dealing with test data or bulk operations. For instance, you may need to find and delete files containing specific names or patterns to reset a testing environment. This blog post demonstrates how to use PowerShell to locate and delete files in SharePoint libraries, including associated data in lists, to streamline the testing process.
In this example, we had PDF files containing a series of receipts that were split into individual files using Power Automate with the Encodian connector.
posts
Get Total Count of SharePoint Files, Folders, and Items with PnP PowerShell
Get Total Count of SharePoint Files, Folders, and Items with PnP PowerShell This PowerShell script powered by PnP PowerShell can help to get total count of files, folders, and list items across SharePoint tenant. This script is invaluable for administrators looking to perform audits, verify data migrations, or simply keep tabs on the content sprawl within their environments. The use case of this script was to get a total number of items that would be ingested into a third party application Records365 (provided by RecordPoint) to ensure the number tally for compliance purposes and identify any gaps.
posts
Get Folder Item properties using PnP PowerShell : Get-PnPFolderItem versus Get-PnPListItem
Get Folder Item properties using PnP PowerShell : Get-PnPFolderItem versus Get-PnPListItem Introduction In this blog post, we will explore an alternative approach to retrieving folder item properties using PnP PowerShell. We will discuss the limitations of the Get-PnPFolderItem cmdlet and demonstrate how to use Get-PnPListItem to overcome those limitations.
The Limitations of Get-PnPFolderItem The Get-PnPFolderItem cmdlet is not suitable for working with large libraries. When attempting to retrieve items from a large library, you may encounter the following error message:
Tag: Agent
posts
Embedding Copilot Studio Agent in a SharePoint Page
Introduction Embedding a Copilot Studio Agent within a SharePoint page can significantly enhance user experience by providing seamless access to AI-powered assistance directly within the context of a SharePoint site. While there are examples of achieving this using SPFx (SharePoint Framework), I wanted to explore whether this could be done using out-of-the-box (OOB) features without custom development.
In this blog post, I will walk you through the steps to embed a Copilot Studio Agent into a SharePoint page using the Embed Webpart and site settings.
posts
SharePoint Agent and Responsible AI in Mental Health Support
Introduction Balancing AI safety measures and practical functionality for SharePoint Agents is key for some use cases due to the lack of customisation of the inbuilt content safety against the four categories: harm, self-harm, sex, and hate. A particular use case we wanted to explore was its use for mental health support agents in the form of virtual mental health first aiders. My partner in crime Lee Ford and I explored what we could do without tripping the Responsible AI principles and flagging Content Safety categories.
posts
Exploring Ways to Access SharePoint Agent
Introduction SharePoint Agent is the easiest way to get started with building your own grounded Agents from your SharePoint data. The possibilities are vast, from HR agents to legal agents. If more configuration and features are required, the Copilot Studio or Azure AI Foundry could help.
Each SharePoint site comes with its own default Agent scoped to data within the site. As of today (i.e. March 2025), the default SharePoint agent can’t be modified.
Tag: Embed WebPart
posts
Embedding Copilot Studio Agent in a SharePoint Page
Introduction Embedding a Copilot Studio Agent within a SharePoint page can significantly enhance user experience by providing seamless access to AI-powered assistance directly within the context of a SharePoint site. While there are examples of achieving this using SPFx (SharePoint Framework), I wanted to explore whether this could be done using out-of-the-box (OOB) features without custom development.
In this blog post, I will walk you through the steps to embed a Copilot Studio Agent into a SharePoint page using the Embed Webpart and site settings.
posts
Executing a Flow from Column Formatting from a page using the Embed Webpart
Executing a Flow from Column Formatting from a page using the Embed Webpart I encountered an intriguing challenge: triggering a flow from column formatting within a List View Webpart. Initially, I successfully created a button within a list to execute a flow on a specific item, following the steps outlined in Microsoft’s documentation here. It worked seamlessly within the list interface directly.
However, when attempting to add the list with the formatting column using the list view webpart on a page to allow end-users to trigger the flow the results were different.
Tag: Azure AI Content Safety
posts
SharePoint Agent and Responsible AI in Mental Health Support
Introduction Balancing AI safety measures and practical functionality for SharePoint Agents is key for some use cases due to the lack of customisation of the inbuilt content safety against the four categories: harm, self-harm, sex, and hate. A particular use case we wanted to explore was its use for mental health support agents in the form of virtual mental health first aiders. My partner in crime Lee Ford and I explored what we could do without tripping the Responsible AI principles and flagging Content Safety categories.
Tag: Responsible AI
posts
SharePoint Agent and Responsible AI in Mental Health Support
Introduction Balancing AI safety measures and practical functionality for SharePoint Agents is key for some use cases due to the lack of customisation of the inbuilt content safety against the four categories: harm, self-harm, sex, and hate. A particular use case we wanted to explore was its use for mental health support agents in the form of virtual mental health first aiders. My partner in crime Lee Ford and I explored what we could do without tripping the Responsible AI principles and flagging Content Safety categories.
posts
Inheritance of Sharing Settings in Channel Associated SharePoint Sites
Inheritance of Sharing Settings in Channel Associated SharePoint Sites Channel associated SharePoint sites inherit the external and default sharing settings of the parent team except when the parent team default sharing link is set to “People with Existing Access” only during creation.
The two sections highlight the testing I have done by first updating the parent team sharing setting before creating a private or shared channel which creates the corresponding site in the background.
posts
Assigning Cognitive Services Roles in Azure AI Foundry to use Content Safety
Introduction Azure AI Foundry comes with built-in Safety + Security features, also known as Azure AI Services. However, you may encounter the following error message:
Your account does not have access to this resource, please contact your resource owner to get access
The Learn More link directs you to a possible fix: ensuring your account is assigned the role of Cognitive Services User for the Content Safety resource or Azure AI Services resource you’re using.
posts
MS Build AI Day: Generative AI using Azure OpenAI Service by Henk Boelman
Generative AI using Azure OpenAI Service session at MS Build AI Day by Henk Boelman I attended the session Generative AI using Azure OpenAI Service session at MS Build AI Day by Henk Boelman on the 19th Oct 2023. He demoed how to leverage Azure Open AI Service to “add your own data” combined with ChatGPT to retrieve information from your company owned data covering elements of generative AI and reinforcing some of the points highlighted in the Keynote such as prompt engineering, grounding, jail breaking, etc.
posts
Ms Build AI Day Keynote on the 19 Oct 2023
MS Build AI Day Keynote by Scott Hanselman On October 19, 2023, the inaugural MS Build AI Day at Excel London in Custom House marked a pivotal moment for the world of AI. As an attendee, I had the privilege of witnessing a groundbreaking keynote session led by none other than Scott Hanselman. Titled “Navigating the AI Landscape,” the keynote, introduced by Michael Wignall, the lead for MS Build, set the stage for an eventful day filled with insights, connections, and hands-on experiences.
Tag: Page Design
posts
Exploring Ways to Access SharePoint Agent
Introduction SharePoint Agent is the easiest way to get started with building your own grounded Agents from your SharePoint data. The possibilities are vast, from HR agents to legal agents. If more configuration and features are required, the Copilot Studio or Azure AI Foundry could help.
Each SharePoint site comes with its own default Agent scoped to data within the site. As of today (i.e. March 2025), the default SharePoint agent can’t be modified.
Tag: Blogging
posts
MVP Preparing for Renewal
Introduction Since January 2024, I have had the honor of being a Microsoft MVP. Now, it’s time to renew my MVP status, which requires gathering all my contributions to submit within the renewal application. I must admit, I haven’t been great at keeping track of my contributions every time I raise a Pull Request or write a blog post. But here’s what I’ve managed to pull together.
Pull Requests within Github I’ve successfully merged nearly 70 Pull Requests (PRs) in open-source PnP repositories, along with over 50 blog posts spanning areas like PowerShell, SharePoint, Azure DevOps, Power Automate, and M365 Copilot.
posts
Creating New Posts with Hugo
Creating New Posts with Hugo In this post, we will walk through the process of creating a new post in Hugo, a popular static site generator.
Step 1: Navigate to Your Hugo Site First, navigate to the directory where your Hugo site is configured. You can do this using the cd command in terminal:
cd .\Hugo\sites\M365Blog\ Step 2: Create a New Post Next, use the hugo new command to create a new post:
Tag: MVP Renewal
posts
MVP Preparing for Renewal
Introduction Since January 2024, I have had the honor of being a Microsoft MVP. Now, it’s time to renew my MVP status, which requires gathering all my contributions to submit within the renewal application. I must admit, I haven’t been great at keeping track of my contributions every time I raise a Pull Request or write a blog post. But here’s what I’ve managed to pull together.
Pull Requests within Github I’ve successfully merged nearly 70 Pull Requests (PRs) in open-source PnP repositories, along with over 50 blog posts spanning areas like PowerShell, SharePoint, Azure DevOps, Power Automate, and M365 Copilot.
Tag: Azure
posts
Inheritance of Sharing Settings in Channel Associated SharePoint Sites
Inheritance of Sharing Settings in Channel Associated SharePoint Sites Channel associated SharePoint sites inherit the external and default sharing settings of the parent team except when the parent team default sharing link is set to “People with Existing Access” only during creation.
The two sections highlight the testing I have done by first updating the parent team sharing setting before creating a private or shared channel which creates the corresponding site in the background.
posts
Assigning Cognitive Services Roles in Azure AI Foundry to use Content Safety
Introduction Azure AI Foundry comes with built-in Safety + Security features, also known as Azure AI Services. However, you may encounter the following error message:
Your account does not have access to this resource, please contact your resource owner to get access
The Learn More link directs you to a possible fix: ensuring your account is assigned the role of Cognitive Services User for the Content Safety resource or Azure AI Services resource you’re using.
posts
Azure Subscription Transfer
Transferring an Azure subscription to a new tenant can be a complex process. I recently followed the instructions from How can I move a subscription to a new tenant? to move an Azure subscription to a new test tenant. However, the new test tenant was not appearing in the list of tenants I could move the subscription to. I realized that the account I was using needed to be a global admin in both tenants.
posts
Azure Document Intelligence Studio - Neural vs. Template Training
Azure Document Intelligence Studio - Neural vs. Template Training Azure Document Intelligence Studio formally known as form recognizer is a powerful tool to extract data from documents at scale. Among its features, the ability to “train a new model” for data extraction from documents. This process comes with two distinct options: Neural and Template. Each has its unique advantages and use cases.
Neural Training The Neural option leverages deep learning algorithms to understand and process documents.
Tag: Azure AI Foundry
posts
Inheritance of Sharing Settings in Channel Associated SharePoint Sites
Inheritance of Sharing Settings in Channel Associated SharePoint Sites Channel associated SharePoint sites inherit the external and default sharing settings of the parent team except when the parent team default sharing link is set to “People with Existing Access” only during creation.
The two sections highlight the testing I have done by first updating the parent team sharing setting before creating a private or shared channel which creates the corresponding site in the background.
posts
Assigning Cognitive Services Roles in Azure AI Foundry to use Content Safety
Introduction Azure AI Foundry comes with built-in Safety + Security features, also known as Azure AI Services. However, you may encounter the following error message:
Your account does not have access to this resource, please contact your resource owner to get access
The Learn More link directs you to a possible fix: ensuring your account is assigned the role of Cognitive Services User for the Content Safety resource or Azure AI Services resource you’re using.
Tag: Cognitive Services
posts
Inheritance of Sharing Settings in Channel Associated SharePoint Sites
Inheritance of Sharing Settings in Channel Associated SharePoint Sites Channel associated SharePoint sites inherit the external and default sharing settings of the parent team except when the parent team default sharing link is set to “People with Existing Access” only during creation.
The two sections highlight the testing I have done by first updating the parent team sharing setting before creating a private or shared channel which creates the corresponding site in the background.
posts
Assigning Cognitive Services Roles in Azure AI Foundry to use Content Safety
Introduction Azure AI Foundry comes with built-in Safety + Security features, also known as Azure AI Services. However, you may encounter the following error message:
Your account does not have access to this resource, please contact your resource owner to get access
The Learn More link directs you to a possible fix: ensuring your account is assigned the role of Cognitive Services User for the Content Safety resource or Azure AI Services resource you’re using.
Tag: Content Safety
posts
Inheritance of Sharing Settings in Channel Associated SharePoint Sites
Inheritance of Sharing Settings in Channel Associated SharePoint Sites Channel associated SharePoint sites inherit the external and default sharing settings of the parent team except when the parent team default sharing link is set to “People with Existing Access” only during creation.
The two sections highlight the testing I have done by first updating the parent team sharing setting before creating a private or shared channel which creates the corresponding site in the background.
posts
Assigning Cognitive Services Roles in Azure AI Foundry to use Content Safety
Introduction Azure AI Foundry comes with built-in Safety + Security features, also known as Azure AI Services. However, you may encounter the following error message:
Your account does not have access to this resource, please contact your resource owner to get access
The Learn More link directs you to a possible fix: ensuring your account is assigned the role of Cognitive Services User for the Content Safety resource or Azure AI Services resource you’re using.
Tag: Default Sharing Link
posts
Configuring Default Sharing Links in SharePoint: Ensuring 'Specific People' Access
Introduction Updating the default sharing link from the User Interface at both the site level and tenant level to Specific People (only the people the user specifies) might not work always as expected. This issue could be due to the outdated setting DefaultSharingLinkType being updated behind the scenes.
I tested this on a Team site by updating the default sharing setting from the SharePoint Admin Centre to “People you choose”. However, the default sharing link for new sharing links did not reflect this setting.
Tag: ALM
posts
Eliminating the Need for PATs in Azure DevOps for Power Platform CI/CD
Introduction The PAT(Personal Access Token) is the Azure DevOps personal access token which can be generated from your account settings and used for authentication when performing Git operations.
Cons using PATs Not conducive for teamwork: If the PAT belongs to a team member who leaves the organization, the release manager or another team member will have to generate their own PAT and update the pipeline. Security risks: Similar to a password, a PAT poses risks if leaked.
posts
Sharing Connection References with Service Principal in Azure DevOps for Power Platform ALM
Introduction When setting up your Azure DevOps pipeline for deploying a Power Platform solution, you may encounter an error message if your solution relies on connection references.
The reason given was : An unexpected error occurred.
This generic message does not provide much help and can occur for multiple reasons. In my scenario, it was related to the connection references in the target environment not being shared with the service principal.
posts
Secure Power Platform Deployments with Azure DevOps Workload Identity Federation
Client secrets have traditionally been the go-to method for deploying Power Platform solutions from Azure DevOps, utilizing app registrations from the Azure platform. However, my personal experience has shown that this approach can be problematic, especially when you are not an application admin. It often involves wasting time figuring out why deployments have failed due to expired or missing client secrets. Even when reaching out to someone with application admin rights, they might generate a new client secret but forget to update the service connections for each service connection within Azure DevOps or the application admin does not have access requiring to reach out to someone else who have access, causing further disruptions.
posts
Guide to Preparing setting files for Power Platform managed solution deployment
Guide to Preparing setting files for Power Platform managed solution deployment This guide will walk you through the process of creating a settings file for Power Platform managed solution deployment. Refer to the posts for more details to set up Application Lifecycle Management (ALM) for power platform: Power Platform ALM & Pipelines w/ Matt Devaney and Converting to Modern YAML Pipeline: Application Lifecycle Management in Azure DevOps for Power Platform for detailed steps for ALM for power platform solutions.
posts
Power Platform Managed Solution Deployment with Connection References - Allow customisations
Power Platform Managed Solution Deployment with Connection References - Allow customisations This article explores the challenges and solutions associated with Power Platform managed solution deployment, specifically focusing on connection references and the “Allow Customisations” property.
Refer to the posts for more details to set up Application Lifecycle Management (ALM) for power platform: Power Platform ALM & Pipelines w/ Matt Devaney and Converting to Modern YAML Pipeline: Application Lifecycle Management in Azure DevOps for Power Platform
Tag: CICD
posts
Eliminating the Need for PATs in Azure DevOps for Power Platform CI/CD
Introduction The PAT(Personal Access Token) is the Azure DevOps personal access token which can be generated from your account settings and used for authentication when performing Git operations.
Cons using PATs Not conducive for teamwork: If the PAT belongs to a team member who leaves the organization, the release manager or another team member will have to generate their own PAT and update the pipeline. Security risks: Similar to a password, a PAT poses risks if leaked.
Tag: Connection references
posts
Sharing Connection References with Service Principal in Azure DevOps for Power Platform ALM
Introduction When setting up your Azure DevOps pipeline for deploying a Power Platform solution, you may encounter an error message if your solution relies on connection references.
The reason given was : An unexpected error occurred.
This generic message does not provide much help and can occur for multiple reasons. In my scenario, it was related to the connection references in the target environment not being shared with the service principal.
Tag: PAT
posts
Eliminating the Need for PATs in Azure DevOps for Power Platform CI/CD
Introduction The PAT(Personal Access Token) is the Azure DevOps personal access token which can be generated from your account settings and used for authentication when performing Git operations.
Cons using PATs Not conducive for teamwork: If the PAT belongs to a team member who leaves the organization, the release manager or another team member will have to generate their own PAT and update the pipeline. Security risks: Similar to a password, a PAT poses risks if leaked.
posts
Overcoming challenges with Azure DevOps Pipelines using Self-Hosted Build Agents for Power Platform Managed Solutions
Overcoming Challenges with Azure DevOps Pipelines using Self-Hosted Build Agents for Power Platform Managed Solutions Application Lifecycle Management (ALM) for Power Platform solutions can be effectively managed using Azure DevOps, providing a robust framework for automating deployments, version control, and continuous integration and delivery, thereby enhancing productivity and reducing manual errors. Refer to the posts for more details: Power Platform ALM & Pipelines w/ Matt Devaney and Converting to Modern YAML Pipeline: Application Lifecycle Management in Azure DevOps for Power Platform
Tag: Pipeline
posts
Eliminating the Need for PATs in Azure DevOps for Power Platform CI/CD
Introduction The PAT(Personal Access Token) is the Azure DevOps personal access token which can be generated from your account settings and used for authentication when performing Git operations.
Cons using PATs Not conducive for teamwork: If the PAT belongs to a team member who leaves the organization, the release manager or another team member will have to generate their own PAT and update the pipeline. Security risks: Similar to a password, a PAT poses risks if leaked.
posts
Converting to Modern YAML Pipeline: Application Lifecycle Management in Azure DevOps for Power Platform
Converting to Modern YAML Pipeline: Application Lifecycle Management in Azure DevOps for Power Platform There are loads of posts explaining Application Lifecycle Management for the Power Platform using Azure DevOps most using the graphical classical pipeline. The latest post I read on this is Application Lifecycle Management for the Power Platform using Azure DevOps by Luise Freese which is brilliant.
Please read article covering difference between YAML and Classic UI to explain why you may want the modern YAML pipeline.
Tag: Power Platform
posts
Eliminating the Need for PATs in Azure DevOps for Power Platform CI/CD
Introduction The PAT(Personal Access Token) is the Azure DevOps personal access token which can be generated from your account settings and used for authentication when performing Git operations.
Cons using PATs Not conducive for teamwork: If the PAT belongs to a team member who leaves the organization, the release manager or another team member will have to generate their own PAT and update the pipeline. Security risks: Similar to a password, a PAT poses risks if leaked.
posts
Sharing Connection References with Service Principal in Azure DevOps for Power Platform ALM
Introduction When setting up your Azure DevOps pipeline for deploying a Power Platform solution, you may encounter an error message if your solution relies on connection references.
The reason given was : An unexpected error occurred.
This generic message does not provide much help and can occur for multiple reasons. In my scenario, it was related to the connection references in the target environment not being shared with the service principal.
posts
Secure Power Platform Deployments with Azure DevOps Workload Identity Federation
Client secrets have traditionally been the go-to method for deploying Power Platform solutions from Azure DevOps, utilizing app registrations from the Azure platform. However, my personal experience has shown that this approach can be problematic, especially when you are not an application admin. It often involves wasting time figuring out why deployments have failed due to expired or missing client secrets. Even when reaching out to someone with application admin rights, they might generate a new client secret but forget to update the service connections for each service connection within Azure DevOps or the application admin does not have access requiring to reach out to someone else who have access, causing further disruptions.
posts
Getting Started with the Power Platform Developer Plan
I had to set up a new developer tenant as my previous tenant became unusable due to an expired Visual studio subscription. Fortunately, there is plenty of help and documentation available to guide you through the process. Here’s a step-by-step guide on how to get started with the Power Platform Developer Plan.
Steps to Enable the Power Platform Developer Plan Sign Up:
Visit the Power Apps Developer Plan website. Click on the “Start free” button.
posts
Power Automate: Using Arrays as Environment Variables
Introduction In Power Automate/Power Platform, environment variables within solutions are essential for managing and configuring flows across different environments. However, there is no direct way to declare an environment variable as an array. This blog post will cover how to use JSON to store arrays as environment variables, enabling you to manage complex data structures efficiently.
Available Environment Variable Types Power Automate offers various types of environment variables you can select and configure:
posts
Azure DevOps Powerplatform Deployment error due to timing issue
If it takes too long to deploy the solution, time out issues might occur. In this instance consider checking and updating the MaxAsyncWaitTime. Its value has been increased to 120 which means the deployment process will wait up to 120 seconds (or 2 minutes) for asynchronous operations such as import power platform solution to complete fixing the timing out issue.
The fix is to amend the MaxAsyncWaitTime to 120
- task: PowerPlatformImportSolution@2 inputs: authenticationType: PowerPlatformSPN PowerPlatformSPN: 'powerplatform-t-connection' Environment: 'https://contoso-st.
posts
Guide to Preparing setting files for Power Platform managed solution deployment
Guide to Preparing setting files for Power Platform managed solution deployment This guide will walk you through the process of creating a settings file for Power Platform managed solution deployment. Refer to the posts for more details to set up Application Lifecycle Management (ALM) for power platform: Power Platform ALM & Pipelines w/ Matt Devaney and Converting to Modern YAML Pipeline: Application Lifecycle Management in Azure DevOps for Power Platform for detailed steps for ALM for power platform solutions.
posts
Overcoming challenges with Azure DevOps Pipelines using Self-Hosted Build Agents for Power Platform Managed Solutions
Overcoming Challenges with Azure DevOps Pipelines using Self-Hosted Build Agents for Power Platform Managed Solutions Application Lifecycle Management (ALM) for Power Platform solutions can be effectively managed using Azure DevOps, providing a robust framework for automating deployments, version control, and continuous integration and delivery, thereby enhancing productivity and reducing manual errors. Refer to the posts for more details: Power Platform ALM & Pipelines w/ Matt Devaney and Converting to Modern YAML Pipeline: Application Lifecycle Management in Azure DevOps for Power Platform
posts
Power Platform Managed Solution Deployment with Connection References - Allow customisations
Power Platform Managed Solution Deployment with Connection References - Allow customisations This article explores the challenges and solutions associated with Power Platform managed solution deployment, specifically focusing on connection references and the “Allow Customisations” property.
Refer to the posts for more details to set up Application Lifecycle Management (ALM) for power platform: Power Platform ALM & Pipelines w/ Matt Devaney and Converting to Modern YAML Pipeline: Application Lifecycle Management in Azure DevOps for Power Platform
posts
Unable to find Power Platform in Azure DevOps
Unable to find Power Platform in Azure DevOps Issue I was Unable to find the powerplatform in Azure devops
Solution The solution is to install the Extension: Power Platform Build Tools (2.0.5) to Organisation.
This will enable the Power Platform service connection.
References Unable to find the powerplatform in Azure devops
Tag: Power Platform Admin Center
posts
How to Delete App Users in Power Platform Admin Center
In the Power Platform Admin Center, you may have added app users that you no longer need. To view the list of app users added to an environment, navigate to the following URL https://admin.powerplatform.microsoft.com/manage/environments/c1725b9e-0000-0000-0000-000d3ad0000/appusers, replacing c1725b9e-0000-0000-0000-000d3ad0000 with your environment ID:
To delete an app user, click on the ellipsis (…) next to the app user and select the Delete button.
However, you may encounter a misleading error message:
✖ Failed to delete app user: User with SystemUserId= is not disabled.
Tag: File Collaboration
posts
Comparing File Collaboration and Search Features: SharePoint vs. Microsoft Teams
Introduction Microsoft Teams provides a unified platform for end users to collaborate on files stored within SharePoint. However, there are notable differences between the two platforms that can influence your decision on when to use SharePoint and when to use Teams.
Search Functionality Contextual Search Contextual search on libraries does not exist within Teams, while SharePoint offers richer contextual search at library, site, organization, and hub levels. Issue with Results from Shared Channels There is an issue searching contents within shared channels where the shared channel name is shown as Mock Team Name which is not helpful identitying the source of the search results without opening the file.
Tag: Microsoft Teams
posts
Comparing File Collaboration and Search Features: SharePoint vs. Microsoft Teams
Introduction Microsoft Teams provides a unified platform for end users to collaborate on files stored within SharePoint. However, there are notable differences between the two platforms that can influence your decision on when to use SharePoint and when to use Teams.
Search Functionality Contextual Search Contextual search on libraries does not exist within Teams, while SharePoint offers richer contextual search at library, site, organization, and hub levels. Issue with Results from Shared Channels There is an issue searching contents within shared channels where the shared channel name is shown as Mock Team Name which is not helpful identitying the source of the search results without opening the file.
Tag: Search
posts
Comparing File Collaboration and Search Features: SharePoint vs. Microsoft Teams
Introduction Microsoft Teams provides a unified platform for end users to collaborate on files stored within SharePoint. However, there are notable differences between the two platforms that can influence your decision on when to use SharePoint and when to use Teams.
Search Functionality Contextual Search Contextual search on libraries does not exist within Teams, while SharePoint offers richer contextual search at library, site, organization, and hub levels. Issue with Results from Shared Channels There is an issue searching contents within shared channels where the shared channel name is shown as Mock Team Name which is not helpful identitying the source of the search results without opening the file.
posts
SharePoint Search for Documents: Modified Date and Title of Results
Introduction Have you ever encountered a situation where the search results in SharePoint show incorrect document titles and modified dates? This can be frustrating, especially when you rely on accurate metadata for document management. In this blog post, we’ll explore why this happens and how to resolve it.
Problem Statement A business user reported that the search results for a particular document displayed the wrong name and modified date. Upon investigation, we found that the title and modified date were being pulled from the document properties rather than the metadata shown in the SharePoint library.
posts
Exclude News Links from News WebPart in SharePoint Online
SharePoint Online offers the useful feature of news links to avoid duplication of news articles and promote existing posts across different sites. This is especially beneficial when news creation is enabled for various departments or directorates, allowing them to share significant news organization-wide.
However, the News WebPart might display both the news links and the original articles, resulting in duplicated content.
To manage this, you can utilize the OriginalSourceUrl column, which stores the link to the source news article.
posts
SharePoint Search: Excluding Columns from Search Results
SharePoint Search: Excluding Columns from Search Results SharePoint empowers users to manage and organize vast amounts of data efficiently. However, not all data within a SharePoint site might need to be searchable. Do you miss the functionality to control visibility of sensitive or irrelevant information in column.
The Challenge You might have encountered instances where you need certain columns in your SharePoint lists or libraries to be excluded from search results.
Tag: SharePoint Online
posts
Comparing File Collaboration and Search Features: SharePoint vs. Microsoft Teams
Introduction Microsoft Teams provides a unified platform for end users to collaborate on files stored within SharePoint. However, there are notable differences between the two platforms that can influence your decision on when to use SharePoint and when to use Teams.
Search Functionality Contextual Search Contextual search on libraries does not exist within Teams, while SharePoint offers richer contextual search at library, site, organization, and hub levels. Issue with Results from Shared Channels There is an issue searching contents within shared channels where the shared channel name is shown as Mock Team Name which is not helpful identitying the source of the search results without opening the file.
posts
PowerShell: Fetch Files with Retention or Sensitivity Labels in SharePoint Online
Introduction Understanding the sensitivity and retention labels applied to files in your SharePoint Online sites is essential for maintaining data security and compliance. These labels enable you to manage and protect your data by defining retention periods and handling sensitive information appropriately. This is particularly important for initiatives like the Microsoft 365 Copilot rollout, ensuring that the correct files are stored within the appropriate SharePoint sites. For example, if a SharePoint site is a public Team site, files labeled as confidential should be moved to a private Team site or existing Team site updated from public to private.
posts
PowerShell: Removing Web API Permissions for SPFx Solutions used by EntraId SharePoint Online Web Client Extensibility
The script checks the ‘SharePoint Online Web Client Extensibility’ Principal within Entra ID for the actual assigned permissions as the SPFx solutions requests are all be added to that single shared permission group.
As hilghlighted by “Wes Hackett”:
I’ve personally seen plenty of tenants with Mailbox permissions with no corresponding solutions live in the app catalogs. Early SPFx doc examples encouraged the use of MS Graph into Mailbox permissions in one of the how to learn samples, older tenants sometimes have this breadcrumb left behind.
posts
Retrieve SPFx Details from Tenant and Site Collection App Catalogs Using PowerShell
Have you ever needed to gather detailed information about SPFx solutions installed in your SharePoint environment, such as API permissions, for auditing, inventory, or compliance purposes? The PowerShell script below helps you retrieve these details from both the tenant-level and site collection app catalogs for auditing with the aim to improve security posture by removing unneeded apps and access rights.
To execute this script, you must have Global Administrator or SharePoint Administrator roles.
posts
How to Filter SharePoint Libraries to Return Less Than 5,000 Items
SharePoint Online has a list view threshold (LVT) of 5,000 items, which can cause performance issues if exceeded.
This post provides a workaround through filtering libraries/lists to stay within this limit and avoid common problems associated with large lists.
The Problem When a SharePoint library exceeds the 5,000-item threshold, various issues can arise. These include:
Inability to Browse Folders Navigating through folders becomes challenging and sometimes impossible through desktop office apps (Excel, Word,etc.
posts
Get Total Count of SharePoint Files, Folders, and Items with PnP PowerShell
Get Total Count of SharePoint Files, Folders, and Items with PnP PowerShell This PowerShell script powered by PnP PowerShell can help to get total count of files, folders, and list items across SharePoint tenant. This script is invaluable for administrators looking to perform audits, verify data migrations, or simply keep tabs on the content sprawl within their environments. The use case of this script was to get a total number of items that would be ingested into a third party application Records365 (provided by RecordPoint) to ensure the number tally for compliance purposes and identify any gaps.
posts
SharePoint Search: Excluding Columns from Search Results
SharePoint Search: Excluding Columns from Search Results SharePoint empowers users to manage and organize vast amounts of data efficiently. However, not all data within a SharePoint site might need to be searchable. Do you miss the functionality to control visibility of sensitive or irrelevant information in column.
The Challenge You might have encountered instances where you need certain columns in your SharePoint lists or libraries to be excluded from search results.
Tag: Microsoft Entra ID
posts
Secure Power Platform Deployments with Azure DevOps Workload Identity Federation
Client secrets have traditionally been the go-to method for deploying Power Platform solutions from Azure DevOps, utilizing app registrations from the Azure platform. However, my personal experience has shown that this approach can be problematic, especially when you are not an application admin. It often involves wasting time figuring out why deployments have failed due to expired or missing client secrets. Even when reaching out to someone with application admin rights, they might generate a new client secret but forget to update the service connections for each service connection within Azure DevOps or the application admin does not have access requiring to reach out to someone else who have access, causing further disruptions.
Tag: Workload Identity Federation
posts
Secure Power Platform Deployments with Azure DevOps Workload Identity Federation
Client secrets have traditionally been the go-to method for deploying Power Platform solutions from Azure DevOps, utilizing app registrations from the Azure platform. However, my personal experience has shown that this approach can be problematic, especially when you are not an application admin. It often involves wasting time figuring out why deployments have failed due to expired or missing client secrets. Even when reaching out to someone with application admin rights, they might generate a new client secret but forget to update the service connections for each service connection within Azure DevOps or the application admin does not have access requiring to reach out to someone else who have access, causing further disruptions.
posts
Azure DevOps Spfx Deployment Workload Identity Federation
Introduction Thanks to Kinga Kazala for her timely article Deploy SPFx app using pipeline’s Workload Identity federation, which showcases how to use Workload Identity Federation to alleviate the need for using Entra app secrets or certificates. This method simplifies the setup process, especially when there’s reliance on a single person who might be unavailable.
We initially set up the SPFx pipeline for the Test environment using certificates with CLI for M365.
Tag: Agents
posts
Understanding Copilot Studio Agents App Registration
When you create an Agent within Copilot Studio, a corresponding App registration is automatically generated. These app registrations are named after the Agent, suffixed with “(Microsoft Copilot Studio)”. You can view these app registrations in the Azure Portal under App registrations > All applications.
Agent Certificates and Federated Identity Each app registration associated with a Copilot Studio Agent includes three certificates and two federated credentials as of January 2025. These components enable secure communication between agents and your data sources and services.
Tag: App Registration
posts
Understanding Copilot Studio Agents App Registration
When you create an Agent within Copilot Studio, a corresponding App registration is automatically generated. These app registrations are named after the Agent, suffixed with “(Microsoft Copilot Studio)”. You can view these app registrations in the Azure Portal under App registrations > All applications.
Agent Certificates and Federated Identity Each app registration associated with a Copilot Studio Agent includes three certificates and two federated credentials as of January 2025. These components enable secure communication between agents and your data sources and services.
Tag: Copilot Studio
posts
Understanding Copilot Studio Agents App Registration
When you create an Agent within Copilot Studio, a corresponding App registration is automatically generated. These app registrations are named after the Agent, suffixed with “(Microsoft Copilot Studio)”. You can view these app registrations in the Azure Portal under App registrations > All applications.
Agent Certificates and Federated Identity Each app registration associated with a Copilot Studio Agent includes three certificates and two federated credentials as of January 2025. These components enable secure communication between agents and your data sources and services.
Tag: M365 Developer Tenant
posts
M365 Developer Tenant Challenges
My Visual Studio subscription was deactivated, resulting in the loss of my Azure subscription and licenses to access Microsoft Teams within my M365 developer tenant.
This post covers my attempts to recover access in vain.
Access to Microsoft Teams I thought I could extend my access to Microsoft Teams by opting for a free trial for Microsoft 365 E5 (no Teams) and Teams Premium - Microsoft Teams Premium.
However, this did not restore access to Microsoft Teams despite waiting multiple hours after I added the above licenses.
Tag: M365 Development
posts
M365 Developer Tenant Challenges
My Visual Studio subscription was deactivated, resulting in the loss of my Azure subscription and licenses to access Microsoft Teams within my M365 developer tenant.
This post covers my attempts to recover access in vain.
Access to Microsoft Teams I thought I could extend my access to Microsoft Teams by opting for a free trial for Microsoft 365 E5 (no Teams) and Teams Premium - Microsoft Teams Premium.
However, this did not restore access to Microsoft Teams despite waiting multiple hours after I added the above licenses.
posts
Azure DevOps Spfx Deployment Workload Identity Federation
Introduction Thanks to Kinga Kazala for her timely article Deploy SPFx app using pipeline’s Workload Identity federation, which showcases how to use Workload Identity Federation to alleviate the need for using Entra app secrets or certificates. This method simplifies the setup process, especially when there’s reliance on a single person who might be unavailable.
We initially set up the SPFx pipeline for the Test environment using certificates with CLI for M365.
posts
Upgrading SPFx to the Latest Version SPFx 1.20.0 - lessons learned
Introduction With the release of SPFx 1.20.0 in September 2024, I decided to upgrade an existing SPFx solution to the latest version following a post by Microsoft 365 & Power Platform Community on Linkedin This process can be challenging, especially when dealing with dependency version conflicts. In this blog post, I’ll walk you through the steps to upgrade your SPFx solution to version 1.20.0, including installing Node.js 18.18.0, using the CLI for Microsoft 365 to generate upgrade instructions, and addressing common issues.
posts
Fixing SPFx: Unable to Use the Latest Version in scaffolding project
Introduction The SharePoint Framework (SPFx) 1.20.0 has been generally available since September 2024. However, if you work with SPFx, you might encounter issues when trying to use the latest version. SPFx still requires Node.js 18.x.x. In this blog post, I’ll walk you through the steps I took to install Node.js 18.20.4 using NVM, install the SPFx toolchain, and troubleshoot an issue where the project scaffolding defaulted to an older version of SPFx.
posts
Audit Service Principal Access to SharePoint Sites with Sites.Selected Permissions
Ensuring the security and compliance of your SharePoint environment is crucial, especially when dealing with service principals, Entra ID apps, or federated identities. These entities often have elevated permissions that, if mismanaged, can lead to unauthorized access and potential data breaches. Regularly auditing these permissions is a best practice for maintaining a secure and compliant SharePoint environment.
Application only or granular access to individual site instead of whole tenant, scope called “Sites.
posts
PowerShell: Removing Web API Permissions for SPFx Solutions used by EntraId SharePoint Online Web Client Extensibility
The script checks the ‘SharePoint Online Web Client Extensibility’ Principal within Entra ID for the actual assigned permissions as the SPFx solutions requests are all be added to that single shared permission group.
As hilghlighted by “Wes Hackett”:
I’ve personally seen plenty of tenants with Mailbox permissions with no corresponding solutions live in the app catalogs. Early SPFx doc examples encouraged the use of MS Graph into Mailbox permissions in one of the how to learn samples, older tenants sometimes have this breadcrumb left behind.
posts
Retrieve SPFx Details from Tenant and Site Collection App Catalogs Using PowerShell
Have you ever needed to gather detailed information about SPFx solutions installed in your SharePoint environment, such as API permissions, for auditing, inventory, or compliance purposes? The PowerShell script below helps you retrieve these details from both the tenant-level and site collection app catalogs for auditing with the aim to improve security posture by removing unneeded apps and access rights.
To execute this script, you must have Global Administrator or SharePoint Administrator roles.
posts
Find SharePoint Framework (SPFx) Packages with PowerShell in Tenant and Site Collection App Catalogs
Find SharePoint Framework (SPFx) Packages with PowerShell in Tenant and Site Collection App Catalogs This post covers a PowerShell script to generate an inventory of SPFx installations within your SharePoint Online environment which will help you maintain oversight of your SPFx solutions, ensuring they are up-to-date and compliant. The script was particularly useful in pinpointing sites within the tenant where third-party applications, specifically an analytics SPFx component, were deployed. This was crucial for ensuring that data collection was confined to designated sites, such as the intranet in my case study.
posts
Managing Service Principal Permission Requests using PowerShell
Managing Service Principal Permission Requests using PowerShell Permission to the “SharePoint Online Client” service principal can be granted either in declarative method within SPFx solutions or directly. This post explores how to handle both declarative and direct permission grants using SPO PowerShell , ClI for M365 and PnP PowerShell.
PnP PowerShell Get all service principal permission grants Gets the collection of permission grants for the “SharePoint Online Client” service principal using the cmdlet Get-PnPTenantServicePrincipalPermissionGrants
posts
Deploying SPFx Packages from Tenant App Catalog to Hub Site and Associated Sites
Deploying SharePoint Framework (SPFx) Packages from Tenant App Catalog to Hub Site and Associated Sites There is the blog post how Deploying and Installing SharePoint Framework (SPFx) solutions using PnP PowerShell to Hub Site and Associated Sites using site collection app catalog. This post covers how to perform same objective but using the tenant level app catalog if the SPFx packages have not been added to all sites globally during deployment in the tenant level app catalog and instead need targeted deployment or upgrades on specific sites.
posts
Retracting SPFx Solutions from Hub Site and associated sites using PnP PowerShell
Retracting SPFx Solutions from Hub Site and associated sites using PnP PowerShell SharePoint Framework (SPFx) solutions are a powerful tool for extending and customizing SharePoint sites. However, managing these solutions across multiple sites in a SharePoint tenant can be a daunting task. Fortunately, PnP PowerShell provides automation capabilities that can streamline these operations and ensure consistency across the tenant.
The blog post Deploying SharePoint Framework (SPFx) Packages from Tenant App Catalog to Hub Site and Associated Sites covers how to deploy SPFx solutions across a hub site and associated sites.
Tag: MVP benefits
posts
M365 Developer Tenant Challenges
My Visual Studio subscription was deactivated, resulting in the loss of my Azure subscription and licenses to access Microsoft Teams within my M365 developer tenant.
This post covers my attempts to recover access in vain.
Access to Microsoft Teams I thought I could extend my access to Microsoft Teams by opting for a free trial for Microsoft 365 E5 (no Teams) and Teams Premium - Microsoft Teams Premium.
However, this did not restore access to Microsoft Teams despite waiting multiple hours after I added the above licenses.
Tag: Dataverse
posts
Getting Started with the Power Platform Developer Plan
I had to set up a new developer tenant as my previous tenant became unusable due to an expired Visual studio subscription. Fortunately, there is plenty of help and documentation available to guide you through the process. Here’s a step-by-step guide on how to get started with the Power Platform Developer Plan.
Steps to Enable the Power Platform Developer Plan Sign Up:
Visit the Power Apps Developer Plan website. Click on the “Start free” button.
posts
Power Automate fix for InvalidTemplate: Unable to process template language expressions
Power Automate fix for InvalidTemplate: Unable to process template language expressions InvalidTemplate. Unable to process template language expressions in action can happen with actions within PowerAutomate. In my scenerio I added the encodian action ‘Convert_to_PDF’ and was resubmitting a flow for testing and kept getting the error message.
InvalidTemplate. Unable to process template language expressions in action ‘Convert_to_PDF’ inputs at line ‘0’ and column ‘0’: ‘The template language expression ‘json(decodeBase64(secrets(‘X-MS-APIM-Tokens’)))[’$connections’][‘shared_encodiandocumentmanager’][‘connectionId’]’ cannot be evaluated because property ‘shared_encodiandocumentmanager’ doesn’t exist, available properties are ‘shared_sharepointonline, shared_office365, shared_approvals, shared_teams_1’.
Tag: Developer Plan
posts
Getting Started with the Power Platform Developer Plan
I had to set up a new developer tenant as my previous tenant became unusable due to an expired Visual studio subscription. Fortunately, there is plenty of help and documentation available to guide you through the process. Here’s a step-by-step guide on how to get started with the Power Platform Developer Plan.
Steps to Enable the Power Platform Developer Plan Sign Up:
Visit the Power Apps Developer Plan website. Click on the “Start free” button.
Tag: Directory
posts
Azure Subscription Transfer
Transferring an Azure subscription to a new tenant can be a complex process. I recently followed the instructions from How can I move a subscription to a new tenant? to move an Azure subscription to a new test tenant. However, the new test tenant was not appearing in the list of tenants I could move the subscription to. I realized that the account I was using needed to be a global admin in both tenants.
Tag: Environment
posts
Azure Subscription Transfer
Transferring an Azure subscription to a new tenant can be a complex process. I recently followed the instructions from How can I move a subscription to a new tenant? to move an Azure subscription to a new test tenant. However, the new test tenant was not appearing in the list of tenants I could move the subscription to. I realized that the account I was using needed to be a global admin in both tenants.
posts
Getting Started with the Power Platform Developer Plan
I had to set up a new developer tenant as my previous tenant became unusable due to an expired Visual studio subscription. Fortunately, there is plenty of help and documentation available to guide you through the process. Here’s a step-by-step guide on how to get started with the Power Platform Developer Plan.
Steps to Enable the Power Platform Developer Plan Sign Up:
Visit the Power Apps Developer Plan website. Click on the “Start free” button.
posts
Power Automate copy actions across different environments
Power Automate copy actions across different environments If an action is copied from a different environment, the action is not avaible from the My Clipboard, if not you are presented with the following message only.
Save time and paste your most-used Flow code snippets here.
Select the ellipsis menu on any trigger or action, then choose Copy to my Clipboard.
Note: Pasted code clears each time you log out of Power Automate.
Tag: Subscription
posts
Azure Subscription Transfer
Transferring an Azure subscription to a new tenant can be a complex process. I recently followed the instructions from How can I move a subscription to a new tenant? to move an Azure subscription to a new test tenant. However, the new test tenant was not appearing in the list of tenants I could move the subscription to. I realized that the account I was using needed to be a global admin in both tenants.
Tag: Transfer
posts
Azure Subscription Transfer
Transferring an Azure subscription to a new tenant can be a complex process. I recently followed the instructions from How can I move a subscription to a new tenant? to move an Azure subscription to a new test tenant. However, the new test tenant was not appearing in the list of tenants I could move the subscription to. I realized that the account I was using needed to be a global admin in both tenants.
Tag: Managed Metadata
posts
Ensure Taxonomy Feature in SharePoint Sites Connected to Private/Shared Teams Channels
Introduction Taxonomy feature is not activated by default in SharePoint sites linked to a private or shared Teams Channels. When attempting to add content types with managed metadata columns, you may encounter an error message stating “Taxonomy disabled”.
To resolve this issue, you can enable the taxonomy feature with the ID 73ef14b1-13a9-416b-a9b5-ececa2b0604c using the PowerShell cmdlet Enable-PnPFeature before adding the content types to the sites with the template TEAMCHANNEL#1.
Script to check whether feature taxonomy is enabled Get-PnPFeature -Scope Site | Where-Object { $_.
posts
Update managed metadata field using list formatting
Using column formatting in SharePoint, you can update the values of other fields using the setValue function. This approach allows you to create dynamic functionality in your lists and libraries without extensive development, helping to avoid accumulating technical debt.
Updating a Managed Metadata field, however, is not as straightforward as simply specifying the display value. The field expects a specific format that includes the term’s ID (termId).
Understanding Column Formatting Column formatting in SharePoint involves using a combination of inline CSS, HTML, and JSON to control how fields in lists and libraries are displayed.
Tag: Taxonomy
posts
Ensure Taxonomy Feature in SharePoint Sites Connected to Private/Shared Teams Channels
Introduction Taxonomy feature is not activated by default in SharePoint sites linked to a private or shared Teams Channels. When attempting to add content types with managed metadata columns, you may encounter an error message stating “Taxonomy disabled”.
To resolve this issue, you can enable the taxonomy feature with the ID 73ef14b1-13a9-416b-a9b5-ececa2b0604c using the PowerShell cmdlet Enable-PnPFeature before adding the content types to the sites with the template TEAMCHANNEL#1.
Script to check whether feature taxonomy is enabled Get-PnPFeature -Scope Site | Where-Object { $_.
Tag: TaxonomyFieldAdded
posts
Ensure Taxonomy Feature in SharePoint Sites Connected to Private/Shared Teams Channels
Introduction Taxonomy feature is not activated by default in SharePoint sites linked to a private or shared Teams Channels. When attempting to add content types with managed metadata columns, you may encounter an error message stating “Taxonomy disabled”.
To resolve this issue, you can enable the taxonomy feature with the ID 73ef14b1-13a9-416b-a9b5-ececa2b0604c using the PowerShell cmdlet Enable-PnPFeature before adding the content types to the sites with the template TEAMCHANNEL#1.
Script to check whether feature taxonomy is enabled Get-PnPFeature -Scope Site | Where-Object { $_.
Tag: Teams Channels
posts
Ensure Taxonomy Feature in SharePoint Sites Connected to Private/Shared Teams Channels
Introduction Taxonomy feature is not activated by default in SharePoint sites linked to a private or shared Teams Channels. When attempting to add content types with managed metadata columns, you may encounter an error message stating “Taxonomy disabled”.
To resolve this issue, you can enable the taxonomy feature with the ID 73ef14b1-13a9-416b-a9b5-ececa2b0604c using the PowerShell cmdlet Enable-PnPFeature before adding the content types to the sites with the template TEAMCHANNEL#1.
Script to check whether feature taxonomy is enabled Get-PnPFeature -Scope Site | Where-Object { $_.
Tag: Compliance
posts
Automate the Removal of Expired Sharing Links in SharePoint with PowerShell
Sharing is a great feature for collaboration. However, depending on how items, files, or folders are shared, a sharing link might be created or unique permissions on these items are created. It is possible to set an expiration date on sharing links in SharePoint and OneDrive. For more details, please refer to How to set an expiration date on sharing links in SharePoint and OneDrive. Microsoft introduced the capability to set an expiry date for all types of sharing links: “Anyone”, company-wide (aka.
posts
Overcoming Limitations of SharePoint Sites Associated with Teams Private and Shared Channels: Tips and Hacks
Introduction Microsoft Teams offers private and shared channels as specialized collaboration spaces to cater to different organizational needs. While these channels provide enhanced security and collaboration features, they come with specific limitations and management challenges, particularly around the associated SharePoint sites.
This post covers some limitations, and management tips for SharePoint sites associated with private and shared channels, including PowerShell hacks and governance practices to overcome these challenges.
Managing SharePoint Sites for Private and Shared Channels SharePoint sites associated with private and shared channels are special types of sites with the limitations as identified by Gregory in his blog post Why you should never mess with Private and Shared Channel SharePoint Sites related to the inability to attach to a hub directly, being accessible from the Teams interface mainly, and inability to manage permissions at the site level, and with constrained external sharing.
posts
PowerShell: Fetch Files with Retention or Sensitivity Labels in SharePoint Online
Introduction Understanding the sensitivity and retention labels applied to files in your SharePoint Online sites is essential for maintaining data security and compliance. These labels enable you to manage and protect your data by defining retention periods and handling sensitive information appropriately. This is particularly important for initiatives like the Microsoft 365 Copilot rollout, ensuring that the correct files are stored within the appropriate SharePoint sites. For example, if a SharePoint site is a public Team site, files labeled as confidential should be moved to a private Team site or existing Team site updated from public to private.
posts
Audit Service Principal Access to SharePoint Sites with Sites.Selected Permissions
Ensuring the security and compliance of your SharePoint environment is crucial, especially when dealing with service principals, Entra ID apps, or federated identities. These entities often have elevated permissions that, if mismanaged, can lead to unauthorized access and potential data breaches. Regularly auditing these permissions is a best practice for maintaining a secure and compliant SharePoint environment.
Application only or granular access to individual site instead of whole tenant, scope called “Sites.
posts
Remove Expired Sharing Links and Update Sharing Link Role to Read
Updating the expiration time and role for sharing links is still limited. Although it seems possible through the Graph API Update permission, I have been unable to pass the roles as body parameters.
Graph Explorer Attempts Using the following script:
Invoke-PnPGraphMethod -Url "v1.0/drives/$driveId/items/$driveItemId/permissions/$($ShareLink.Id)" -Method Patch -Content @{ roles = @("read") } threw the error message
“Invalid input: No Information provided to update the specifed permission”
From the UI Anyone link can’t be edited Organisation link can’t be edited Specific people links can be edited Using the network tab from the browser developer tools enables identifying the endpoint to update specific people links only.
Tag: Sharing Links
posts
Automate the Removal of Expired Sharing Links in SharePoint with PowerShell
Sharing is a great feature for collaboration. However, depending on how items, files, or folders are shared, a sharing link might be created or unique permissions on these items are created. It is possible to set an expiration date on sharing links in SharePoint and OneDrive. For more details, please refer to How to set an expiration date on sharing links in SharePoint and OneDrive. Microsoft introduced the capability to set an expiry date for all types of sharing links: “Anyone”, company-wide (aka.
posts
Deletion of company-wide and anonymous sharing links with PowerShell
Sharing is a powerful feature for collaboration. However depending on how items, files or folders are shared, a sharing link might be created or unique permissions on these items are created. The sharing link is created when the copy links is clicked from the sharing pop up options when people other those already have existing access are picked.
However by default, if sharing options have not been configured, links to “People in ” or “Anyone” (if external sharing is allowed) is selected
posts
Remove Expired Sharing Links and Update Sharing Link Role to Read
Updating the expiration time and role for sharing links is still limited. Although it seems possible through the Graph API Update permission, I have been unable to pass the roles as body parameters.
Graph Explorer Attempts Using the following script:
Invoke-PnPGraphMethod -Url "v1.0/drives/$driveId/items/$driveItemId/permissions/$($ShareLink.Id)" -Method Patch -Content @{ roles = @("read") } threw the error message
“Invalid input: No Information provided to update the specifed permission”
From the UI Anyone link can’t be edited Organisation link can’t be edited Specific people links can be edited Using the network tab from the browser developer tools enables identifying the endpoint to update specific people links only.
posts
Deletion of sharing links with PowerShell
Deletion of sharing links with PowerShell As organisations look to deploy Copilot for Microsoft 365, ensuring the security and proper governance of shared content is important. The rollout of Copilot introduces advanced AI capabilities across Microsoft 365 apps using content from SharePoint/OneDrive, making it even more essential to manage sharing links judiciously to tackle the issue of oversharing.
Sharing is a powerful feature for collaboration. However depending on how items, files or folders are shared, a sharing link might be created or unique permissions on these items are created.
Tag: Private Channel
posts
Overcoming Limitations of SharePoint Sites Associated with Teams Private and Shared Channels: Tips and Hacks
Introduction Microsoft Teams offers private and shared channels as specialized collaboration spaces to cater to different organizational needs. While these channels provide enhanced security and collaboration features, they come with specific limitations and management challenges, particularly around the associated SharePoint sites.
This post covers some limitations, and management tips for SharePoint sites associated with private and shared channels, including PowerShell hacks and governance practices to overcome these challenges.
Managing SharePoint Sites for Private and Shared Channels SharePoint sites associated with private and shared channels are special types of sites with the limitations as identified by Gregory in his blog post Why you should never mess with Private and Shared Channel SharePoint Sites related to the inability to attach to a hub directly, being accessible from the Teams interface mainly, and inability to manage permissions at the site level, and with constrained external sharing.
Tag: Shared Channel
posts
Overcoming Limitations of SharePoint Sites Associated with Teams Private and Shared Channels: Tips and Hacks
Introduction Microsoft Teams offers private and shared channels as specialized collaboration spaces to cater to different organizational needs. While these channels provide enhanced security and collaboration features, they come with specific limitations and management challenges, particularly around the associated SharePoint sites.
This post covers some limitations, and management tips for SharePoint sites associated with private and shared channels, including PowerShell hacks and governance practices to overcome these challenges.
Managing SharePoint Sites for Private and Shared Channels SharePoint sites associated with private and shared channels are special types of sites with the limitations as identified by Gregory in his blog post Why you should never mess with Private and Shared Channel SharePoint Sites related to the inability to attach to a hub directly, being accessible from the Teams interface mainly, and inability to manage permissions at the site level, and with constrained external sharing.
Tag: Channel
posts
Update Teams Channel Tab display name using PnP PowerShell
Introduction Renaming the ‘Files’ tab in Microsoft Teams to something more meaningful for your business, such as “All Access,” can enhance user experience. It can help to differentiate other document libraries added as tabs. The Files has been renamed to Shared for chats to show all the files and links that were sent in the chat, making it easier to find them- all in one place. However, it is not possible to rename the Files and Posts tabs from the UI within channels.
Tag: Display Name
posts
Update Teams Channel Tab display name using PnP PowerShell
Introduction Renaming the ‘Files’ tab in Microsoft Teams to something more meaningful for your business, such as “All Access,” can enhance user experience. It can help to differentiate other document libraries added as tabs. The Files has been renamed to Shared for chats to show all the files and links that were sent in the chat, making it easier to find them- all in one place. However, it is not possible to rename the Files and Posts tabs from the UI within channels.
Tag: M365 Groups
posts
Identifying Duplicate Microsoft 365 Group Names Using PowerShell
Introduction It is possible to create M365 Groups and Teams with the same name, and there is currently no built-in way to prevent this. The new Team/Site/M365 Group is created with a random number appended to the Team name for the SharePoint site and m365 Group email address.
Having duplicate names can cause confusion and increase risks, including:
Wrongly Granting Permissions: Users may accidentally grant permissions to the wrong M365 Group or Team, leading to unauthorized access.
posts
Automate Renewal of Expiring M365 Groups Using PowerShell
Introduction Managing the lifecycle of Microsoft 365 Groups is important to prevent accidental deletion of M365 Groups. It is a good practice to set lifecycle expiration policy to control sprawl. However that means that the group will get automatically deleted after they expire. The Teams/M365 groups owners will get email notifications to renew within a certain timeframe , however if the owners missed the renewal notifications for different reasons, it may lead to accidental data loss.
Tag: Name
posts
Identifying Duplicate Microsoft 365 Group Names Using PowerShell
Introduction It is possible to create M365 Groups and Teams with the same name, and there is currently no built-in way to prevent this. The new Team/Site/M365 Group is created with a random number appended to the Team name for the SharePoint site and m365 Group email address.
Having duplicate names can cause confusion and increase risks, including:
Wrongly Granting Permissions: Users may accidentally grant permissions to the wrong M365 Group or Team, leading to unauthorized access.
posts
Internal References in SharePoint Column Formatting for Document libraries: leveraging Name, Folder and Path properties
SharePoint Column Formatting for Document libraries: Leveraging Name, Folder and Path properties While referencing [$Title] in lists is straightforward, document libraries demand a nuanced approach. Instead of [$Name], had to delve into the intricacies of internal names like $FileLeafRef and $FileRef when working with column formatting.
$FileLeafRef: Denotes the name of the file.
$FileRef: Represents the server-relative URL of the file.
Initial attempts to incorporate $FileSystemObjectType for folder identification was challenging, indicating that not all document library internal column names are supported.
Tag: Tab
posts
Update Teams Channel Tab display name using PnP PowerShell
Introduction Renaming the ‘Files’ tab in Microsoft Teams to something more meaningful for your business, such as “All Access,” can enhance user experience. It can help to differentiate other document libraries added as tabs. The Files has been renamed to Shared for chats to show all the files and links that were sent in the chat, making it easier to find them- all in one place. However, it is not possible to rename the Files and Posts tabs from the UI within channels.
Tag: M365 Members
posts
Adding M365 Group/Teams Owners and Members to SharePoint Group with PnP PowerShell
Introduction There are situations where you might want to reuse the M365 Group principals to assign permissions to other sites without creating additional Entra ID groups. This can be useful for:
Adding M365 group members to a SharePoint site, such as an intranet site for ‘Human Resources’ managed by the ‘Human Resources’ M365 Group/Teams or a hub site managed by a ‘Service Desk’ M365 Group/Teams. Adding M365 group members to custom or out-of-the-box SharePoint groups, such as adding particular M365 group owners or members to custom groups created for additional libraries within a different site.
Tag: M365 Owners
posts
Adding M365 Group/Teams Owners and Members to SharePoint Group with PnP PowerShell
Introduction There are situations where you might want to reuse the M365 Group principals to assign permissions to other sites without creating additional Entra ID groups. This can be useful for:
Adding M365 group members to a SharePoint site, such as an intranet site for ‘Human Resources’ managed by the ‘Human Resources’ M365 Group/Teams or a hub site managed by a ‘Service Desk’ M365 Group/Teams. Adding M365 group members to custom or out-of-the-box SharePoint groups, such as adding particular M365 group owners or members to custom groups created for additional libraries within a different site.
posts
Recreating Deleted Owners Group for M365-Connected SharePoint Sites
Recreating Deleted Owners Group for M365-Connected SharePoint Sites If out-of-the-box (OOB) groups such as owners, members, or visitors have been deleted accidentally from your SharePoint site, this article may assist you in recovering those vanished groups specifically for M365 linked Team site. I recently encountered a distress call from an end user facing data access issues on a SharePoint Team site. To my dismay, I discovered that the SharePoint Owners group had been accidentally deleted, prompting me to seek and implement a solution to restore access.
Tag: Team site
posts
Adding M365 Group/Teams Owners and Members to SharePoint Group with PnP PowerShell
Introduction There are situations where you might want to reuse the M365 Group principals to assign permissions to other sites without creating additional Entra ID groups. This can be useful for:
Adding M365 group members to a SharePoint site, such as an intranet site for ‘Human Resources’ managed by the ‘Human Resources’ M365 Group/Teams or a hub site managed by a ‘Service Desk’ M365 Group/Teams. Adding M365 group members to custom or out-of-the-box SharePoint groups, such as adding particular M365 group owners or members to custom groups created for additional libraries within a different site.
posts
Recreating Deleted Owners Group for M365-Connected SharePoint Sites
Recreating Deleted Owners Group for M365-Connected SharePoint Sites If out-of-the-box (OOB) groups such as owners, members, or visitors have been deleted accidentally from your SharePoint site, this article may assist you in recovering those vanished groups specifically for M365 linked Team site. I recently encountered a distress call from an end user facing data access issues on a SharePoint Team site. To my dismay, I discovered that the SharePoint Owners group had been accidentally deleted, prompting me to seek and implement a solution to restore access.
Tag: Global settinga
posts
Managing Microsoft 365 Group Settings with PnP PowerShell and Microsoft Graph
Introduction Managing Microsoft 365 Group settings is crucial for maintaining a compliant and secure environment.PowerShell and Microsoft Graph can be used to configure various group settings, including naming policies, guest access, and more.
As a regular user of PnP PowerShell, I aimed to replicate the functionality of the Microsoft Entra cmdlets for configuring group settings using PnP PowerShell.
Example Script to Update naming policy Settings The following PowerShell script updates the naming group settings using the Microsoft Graph API and PnP PowerShell.
Tag: Group Settings
posts
Managing Microsoft 365 Group Settings with PnP PowerShell and Microsoft Graph
Introduction Managing Microsoft 365 Group settings is crucial for maintaining a compliant and secure environment.PowerShell and Microsoft Graph can be used to configure various group settings, including naming policies, guest access, and more.
As a regular user of PnP PowerShell, I aimed to replicate the functionality of the Microsoft Entra cmdlets for configuring group settings using PnP PowerShell.
Example Script to Update naming policy Settings The following PowerShell script updates the naming group settings using the Microsoft Graph API and PnP PowerShell.
Tag: Deployment
posts
Azure DevOps Spfx Deployment Workload Identity Federation
Introduction Thanks to Kinga Kazala for her timely article Deploy SPFx app using pipeline’s Workload Identity federation, which showcases how to use Workload Identity Federation to alleviate the need for using Entra app secrets or certificates. This method simplifies the setup process, especially when there’s reliance on a single person who might be unavailable.
We initially set up the SPFx pipeline for the Test environment using certificates with CLI for M365.
posts
Unable to find Power Platform in Azure DevOps
Unable to find Power Platform in Azure DevOps Issue I was Unable to find the powerplatform in Azure devops
Solution The solution is to install the Extension: Power Platform Build Tools (2.0.5) to Organisation.
This will enable the Power Platform service connection.
References Unable to find the powerplatform in Azure devops
posts
Deploying SPFx Packages from Tenant App Catalog to Hub Site and Associated Sites
Deploying SharePoint Framework (SPFx) Packages from Tenant App Catalog to Hub Site and Associated Sites There is the blog post how Deploying and Installing SharePoint Framework (SPFx) solutions using PnP PowerShell to Hub Site and Associated Sites using site collection app catalog. This post covers how to perform same objective but using the tenant level app catalog if the SPFx packages have not been added to all sites globally during deployment in the tenant level app catalog and instead need targeted deployment or upgrades on specific sites.
Tag: Pipelines
posts
Azure DevOps Spfx Deployment Workload Identity Federation
Introduction Thanks to Kinga Kazala for her timely article Deploy SPFx app using pipeline’s Workload Identity federation, which showcases how to use Workload Identity Federation to alleviate the need for using Entra app secrets or certificates. This method simplifies the setup process, especially when there’s reliance on a single person who might be unavailable.
We initially set up the SPFx pipeline for the Test environment using certificates with CLI for M365.
Tag: SPFx
posts
Azure DevOps Spfx Deployment Workload Identity Federation
Introduction Thanks to Kinga Kazala for her timely article Deploy SPFx app using pipeline’s Workload Identity federation, which showcases how to use Workload Identity Federation to alleviate the need for using Entra app secrets or certificates. This method simplifies the setup process, especially when there’s reliance on a single person who might be unavailable.
We initially set up the SPFx pipeline for the Test environment using certificates with CLI for M365.
posts
Upgrading SPFx to the Latest Version SPFx 1.20.0 - lessons learned
Introduction With the release of SPFx 1.20.0 in September 2024, I decided to upgrade an existing SPFx solution to the latest version following a post by Microsoft 365 & Power Platform Community on Linkedin This process can be challenging, especially when dealing with dependency version conflicts. In this blog post, I’ll walk you through the steps to upgrade your SPFx solution to version 1.20.0, including installing Node.js 18.18.0, using the CLI for Microsoft 365 to generate upgrade instructions, and addressing common issues.
posts
Fixing SPFx: Unable to Use the Latest Version in scaffolding project
Introduction The SharePoint Framework (SPFx) 1.20.0 has been generally available since September 2024. However, if you work with SPFx, you might encounter issues when trying to use the latest version. SPFx still requires Node.js 18.x.x. In this blog post, I’ll walk you through the steps I took to install Node.js 18.20.4 using NVM, install the SPFx toolchain, and troubleshoot an issue where the project scaffolding defaulted to an older version of SPFx.
posts
Audit Service Principal Access to SharePoint Sites with Sites.Selected Permissions
Ensuring the security and compliance of your SharePoint environment is crucial, especially when dealing with service principals, Entra ID apps, or federated identities. These entities often have elevated permissions that, if mismanaged, can lead to unauthorized access and potential data breaches. Regularly auditing these permissions is a best practice for maintaining a secure and compliant SharePoint environment.
Application only or granular access to individual site instead of whole tenant, scope called “Sites.
posts
PowerShell: Removing Web API Permissions for SPFx Solutions used by EntraId SharePoint Online Web Client Extensibility
The script checks the ‘SharePoint Online Web Client Extensibility’ Principal within Entra ID for the actual assigned permissions as the SPFx solutions requests are all be added to that single shared permission group.
As hilghlighted by “Wes Hackett”:
I’ve personally seen plenty of tenants with Mailbox permissions with no corresponding solutions live in the app catalogs. Early SPFx doc examples encouraged the use of MS Graph into Mailbox permissions in one of the how to learn samples, older tenants sometimes have this breadcrumb left behind.
posts
Retrieve SPFx Details from Tenant and Site Collection App Catalogs Using PowerShell
Have you ever needed to gather detailed information about SPFx solutions installed in your SharePoint environment, such as API permissions, for auditing, inventory, or compliance purposes? The PowerShell script below helps you retrieve these details from both the tenant-level and site collection app catalogs for auditing with the aim to improve security posture by removing unneeded apps and access rights.
To execute this script, you must have Global Administrator or SharePoint Administrator roles.
posts
Find SharePoint Framework (SPFx) Packages with PowerShell in Tenant and Site Collection App Catalogs
Find SharePoint Framework (SPFx) Packages with PowerShell in Tenant and Site Collection App Catalogs This post covers a PowerShell script to generate an inventory of SPFx installations within your SharePoint Online environment which will help you maintain oversight of your SPFx solutions, ensuring they are up-to-date and compliant. The script was particularly useful in pinpointing sites within the tenant where third-party applications, specifically an analytics SPFx component, were deployed. This was crucial for ensuring that data collection was confined to designated sites, such as the intranet in my case study.
posts
Managing Service Principal Permission Requests using PowerShell
Managing Service Principal Permission Requests using PowerShell Permission to the “SharePoint Online Client” service principal can be granted either in declarative method within SPFx solutions or directly. This post explores how to handle both declarative and direct permission grants using SPO PowerShell , ClI for M365 and PnP PowerShell.
PnP PowerShell Get all service principal permission grants Gets the collection of permission grants for the “SharePoint Online Client” service principal using the cmdlet Get-PnPTenantServicePrincipalPermissionGrants
posts
Troubleshooting NVM Setup Issues for SPFx Development
Troubleshooting NVM Setup Issues for SPFx Development I have not used my dev machine for SPFx development for over a year. Before diving into any new SPFx development, I followed the typical procedure of installing the latest Node.js version 18.19.0 supported by the current SPFx version (1.18.2) using nvm (node version management).nvm allows to maintain different development environment.
nvm install 18.19.0 Following this, I proceeded to install the SPFx toolchain:
posts
Deploying SPFx Packages from Tenant App Catalog to Hub Site and Associated Sites
Deploying SharePoint Framework (SPFx) Packages from Tenant App Catalog to Hub Site and Associated Sites There is the blog post how Deploying and Installing SharePoint Framework (SPFx) solutions using PnP PowerShell to Hub Site and Associated Sites using site collection app catalog. This post covers how to perform same objective but using the tenant level app catalog if the SPFx packages have not been added to all sites globally during deployment in the tenant level app catalog and instead need targeted deployment or upgrades on specific sites.
posts
Retracting SPFx Solutions from Hub Site and associated sites using PnP PowerShell
Retracting SPFx Solutions from Hub Site and associated sites using PnP PowerShell SharePoint Framework (SPFx) solutions are a powerful tool for extending and customizing SharePoint sites. However, managing these solutions across multiple sites in a SharePoint tenant can be a daunting task. Fortunately, PnP PowerShell provides automation capabilities that can streamline these operations and ensure consistency across the tenant.
The blog post Deploying SharePoint Framework (SPFx) Packages from Tenant App Catalog to Hub Site and Associated Sites covers how to deploy SPFx solutions across a hub site and associated sites.
Tag: Home Site
posts
Viva Connections Experiences to manage Home Site through REST API
Introduction The SharePoint Home Site experiences have moved to Viva Connections and is managed from the Microsoft 365 admin centre through the Viva Connections admin centre
I started exploring how to manage these SharePoint Home Sites/Viva Experiences using browser’s developer tools, considering I had little luck with the SPO PowerShell, PnP PowerShell, and CLI for M365. These PowerShell experiences will be updated at some point to work with the updated Viva Connections Experience.
Tag: Viva Connections Experiences
posts
Viva Connections Experiences to manage Home Site through REST API
Introduction The SharePoint Home Site experiences have moved to Viva Connections and is managed from the Microsoft 365 admin centre through the Viva Connections admin centre
I started exploring how to manage these SharePoint Home Sites/Viva Experiences using browser’s developer tools, considering I had little luck with the SPO PowerShell, PnP PowerShell, and CLI for M365. These PowerShell experiences will be updated at some point to work with the updated Viva Connections Experience.
Tag: CAML
posts
Restoring Previous Versions of Items in a SharePoint List Using PnP PowerShell
When working with SharePoint lists, there might be times when you need to restore items to a previous version. Whether it’s due to an error, unwanted changes, or simply needing to revert to an earlier state, SharePoint’s versioning feature is a lifesaver. I used the script to undo bulk changes made by a Power Automate flow after the process failed halfway due to some data needing correction. For data integrity, the bulk update needed to be undone before running the Power Automate flow again after the data corrections were made.
posts
Overcoming SharePoint's List View Threshold with CAML Queries in PowerShell
Overcoming SharePoint’s List View Threshold with CAML Queries in PowerShell Encountering the list view threshold error in SharePoint when dealing with lists exceeding 5,000 items is a common challenge. Using CAML queries within PowerShell scripts offers a server-side solution to efficiently filter and retrieve data, yet is prone to the list view threshold error.
Sample script This is the sample PowerShell script querying the specified SharePoint list using CAML query.
Tag: List
posts
Restoring Previous Versions of Items in a SharePoint List Using PnP PowerShell
When working with SharePoint lists, there might be times when you need to restore items to a previous version. Whether it’s due to an error, unwanted changes, or simply needing to revert to an earlier state, SharePoint’s versioning feature is a lifesaver. I used the script to undo bulk changes made by a Power Automate flow after the process failed halfway due to some data needing correction. For data integrity, the bulk update needed to be undone before running the Power Automate flow again after the data corrections were made.
posts
Update Choice values of List Items in SharePoint List
#Parameters $SiteURL = “https://contoso.sharepoint.com/teams/app-ar" $ListName = “Remittances”
$dateTime = (Get-Date).toString(“dd-MM-yyyy”) $invocation = (Get-Variable MyInvocation).Value $directorypath = Split-Path $invocation.MyCommand.Path $fileName = “\RemittanceDuplicateReport-” + $dateTime + “.csv” $OutPutView = $directorypath + $fileName
Connect-PnPOnline -url $SiteURL -Interactive
$ListItems = Get-PnPListItem -List $ListName -PageSize 500 | Where {$_.FieldValues.Month -eq ‘202402’ } #Array for Results Data $DataCollection = @() ForEach($Item in $ListItems) { #Collect data $Data = New-Object PSObject -Property @{ SourceRef = $Item[“DocumentSourceReference”] GroupingRef = $Item[“GroupingReference”] Provider = $Item[“Provider”].
posts
Update Choice values of List Items in SharePoint List
Maintaining up-to-date list items, especially when dealing with choice fields, can be a daunting task sepcially after choice field values are updated. We need a way to update these old values to the correct new ones.
The Challenge SharePoint lists use choice fields to categorise items. Over time, the need to update these choice values can arise, whether due to changes in terminology, business processes, or error correction. Manually updating these values across numerous list items is not only time-consuming but also prone to human error.
posts
Leveraging ChatGPT to Generate Test Data for SharePoint Lists Using PnP PowerShell
Leveraging ChatGPT to Generate Test Data for SharePoint Lists Using PnP PowerShell Utilizing ChatGPT to generate test data for various applications is a powerful capability. After stumbling upon the sample script Create test users using MS Graph API from list or ask ChatGPT to generate test users by Valeras Narbutas on creating test users with MS Graph API, I decided to explore using ChatGPT to generate a list of data. This script harnesses OpenAI’s ChatGPT model to effortlessly generate a list of wellbeing activities.
posts
Optimising Large List Updates with PnP Batch: Handling Throttling and Enhancing Efficiency
Optimising Large List Updates with PnP Batch: Handling Throttling and Enhancing Efficiency In this article, we explore how to efficiently update a large SharePoint list containing approximately 60,000 items using PnP-Batch. Updating such a substantial number of items individually can be time-consuming and prone to throttling issues. Prior to using PnP Batch , it was taking more than 12 hours to update 60k one by one. The article highlights the benefits of using PnP Batch, which significantly reduces the time taken for updates by sending fewer requests.
posts
Expanding Doughnut Chart in Microsoft Lists: Visualize Data in Segments and Track Progress
Expanding Doughnut Chart in Microsoft Lists: Visualize Data in Segments and Track Progress The doughnut chart is a powerful visualization tool that allows users to represent data in segments and track progress against targets. Frederico Sapia’s Doughnut Chart with percentage and values displayed is a valuable custom chart for Microsoft Lists, enabling users to visualize data effectively. However, the original chart allowed for only six slices, limiting its flexibility. In this blog post, we explore how to extend the doughnut chart to support up to nine slices, and we’ll also demonstrate how to display the percentage of each segment within the chart.
Tag: version
posts
Restoring Previous Versions of Items in a SharePoint List Using PnP PowerShell
When working with SharePoint lists, there might be times when you need to restore items to a previous version. Whether it’s due to an error, unwanted changes, or simply needing to revert to an earlier state, SharePoint’s versioning feature is a lifesaver. I used the script to undo bulk changes made by a Power Automate flow after the process failed halfway due to some data needing correction. For data integrity, the bulk update needed to be undone before running the Power Automate flow again after the data corrections were made.
Tag: DriveId
posts
Get Drive ID and Drive Item ID for File for Further Microsoft Graph Operations using PnP PowerShell
Introduction When working with files in SharePoint, the drive ID and drive item ID are essential parameters for further manipulation using Microsoft Graph API. The drive ID is a base64 encoded string composed of the site ID, web ID, and list ID for a particular SharePoint library. For more details, refer to Microsoft Graph: Encoding and decoding the drive ID by Mikael Svenson. The item ID part appears to be a base32 encoding of the SharePoint item’s unique ID, though the exact mechanics are still being explored.
Tag: DriveItemId
posts
Get Drive ID and Drive Item ID for File for Further Microsoft Graph Operations using PnP PowerShell
Introduction When working with files in SharePoint, the drive ID and drive item ID are essential parameters for further manipulation using Microsoft Graph API. The drive ID is a base64 encoded string composed of the site ID, web ID, and list ID for a particular SharePoint library. For more details, refer to Microsoft Graph: Encoding and decoding the drive ID by Mikael Svenson. The item ID part appears to be a base32 encoding of the SharePoint item’s unique ID, though the exact mechanics are still being explored.
Tag: VroomDriveID
posts
Get Drive ID and Drive Item ID for File for Further Microsoft Graph Operations using PnP PowerShell
Introduction When working with files in SharePoint, the drive ID and drive item ID are essential parameters for further manipulation using Microsoft Graph API. The drive ID is a base64 encoded string composed of the site ID, web ID, and list ID for a particular SharePoint library. For more details, refer to Microsoft Graph: Encoding and decoding the drive ID by Mikael Svenson. The item ID part appears to be a base32 encoding of the SharePoint item’s unique ID, though the exact mechanics are still being explored.
Tag: VroomItemID
posts
Get Drive ID and Drive Item ID for File for Further Microsoft Graph Operations using PnP PowerShell
Introduction When working with files in SharePoint, the drive ID and drive item ID are essential parameters for further manipulation using Microsoft Graph API. The drive ID is a base64 encoded string composed of the site ID, web ID, and list ID for a particular SharePoint library. For more details, refer to Microsoft Graph: Encoding and decoding the drive ID by Mikael Svenson. The item ID part appears to be a base32 encoding of the SharePoint item’s unique ID, though the exact mechanics are still being explored.
Tag: Microsoft 365 group
posts
Prevent Guests from Being Added to a Specific Microsoft 365 Group or Microsoft Teams team using PnP PowerShell
Introduction By default, guest access for Microsoft 365 groups is enabled within the tenant. This can be controlled either to allow or block guest access at the tenant level or for individual Microsoft 365 groups / Teams. For more information, check out Manage guest access in Microsoft 365 groups.
PowerShell Script to Prevent Guest Access Below is a PowerShell script that allows you to disable/enable guest access for specific Microsoft 365 groups.
Tag: Classic Designer
posts
Switching from Classic to New Designer in Power Automate
Introduction Have you ever encountered a stubborn Power Automate flow that won’t open in the new designer? For a long time, I stuck with the classic designer due to issues I faced with the new designer. However, I recently decided to make the switch for these reasons:
New Power Automate features will only be available in the new designer Microsoft will get rid of classic designer Future proof flows as they might not be editable if classic designer is gone unless Microsoft caters for incompatible action schemas In this blog post, I’ll share my experience and the steps I took to transition from the classic designer to the new designer in Power Automate.
Tag: New Designer
posts
Switching from Classic to New Designer in Power Automate
Introduction Have you ever encountered a stubborn Power Automate flow that won’t open in the new designer? For a long time, I stuck with the classic designer due to issues I faced with the new designer. However, I recently decided to make the switch for these reasons:
New Power Automate features will only be available in the new designer Microsoft will get rid of classic designer Future proof flows as they might not be editable if classic designer is gone unless Microsoft caters for incompatible action schemas In this blog post, I’ll share my experience and the steps I took to transition from the classic designer to the new designer in Power Automate.
Tag: mMdules
posts
Upgrading SPFx to the Latest Version SPFx 1.20.0 - lessons learned
Introduction With the release of SPFx 1.20.0 in September 2024, I decided to upgrade an existing SPFx solution to the latest version following a post by Microsoft 365 & Power Platform Community on Linkedin This process can be challenging, especially when dealing with dependency version conflicts. In this blog post, I’ll walk you through the steps to upgrade your SPFx solution to version 1.20.0, including installing Node.js 18.18.0, using the CLI for Microsoft 365 to generate upgrade instructions, and addressing common issues.
Tag: Node.js
posts
Upgrading SPFx to the Latest Version SPFx 1.20.0 - lessons learned
Introduction With the release of SPFx 1.20.0 in September 2024, I decided to upgrade an existing SPFx solution to the latest version following a post by Microsoft 365 & Power Platform Community on Linkedin This process can be challenging, especially when dealing with dependency version conflicts. In this blog post, I’ll walk you through the steps to upgrade your SPFx solution to version 1.20.0, including installing Node.js 18.18.0, using the CLI for Microsoft 365 to generate upgrade instructions, and addressing common issues.
Tag: New chats & channels experience
posts
Microsoft Teams - Teams icon missing in New chats & channels experience
Introduction If ever you had the chance to get your hands onto the New chats & channels experience, you may notice that the Teams icon is missing from the tray on the left To access the channels, it is an option within the chats.
Revert In case you find it confusing you can turn it off by following those steps
Click on the button Update, settings and more at the top of Teams
Tag: Check SPFx version
posts
Fixing SPFx: Unable to Use the Latest Version in scaffolding project
Introduction The SharePoint Framework (SPFx) 1.20.0 has been generally available since September 2024. However, if you work with SPFx, you might encounter issues when trying to use the latest version. SPFx still requires Node.js 18.x.x. In this blog post, I’ll walk you through the steps I took to install Node.js 18.20.4 using NVM, install the SPFx toolchain, and troubleshoot an issue where the project scaffolding defaulted to an older version of SPFx.
Tag: cmd
posts
Fixing SPFx: Unable to Use the Latest Version in scaffolding project
Introduction The SharePoint Framework (SPFx) 1.20.0 has been generally available since September 2024. However, if you work with SPFx, you might encounter issues when trying to use the latest version. SPFx still requires Node.js 18.x.x. In this blog post, I’ll walk you through the steps I took to install Node.js 18.20.4 using NVM, install the SPFx toolchain, and troubleshoot an issue where the project scaffolding defaulted to an older version of SPFx.
Tag: Node
posts
Fixing SPFx: Unable to Use the Latest Version in scaffolding project
Introduction The SharePoint Framework (SPFx) 1.20.0 has been generally available since September 2024. However, if you work with SPFx, you might encounter issues when trying to use the latest version. SPFx still requires Node.js 18.x.x. In this blog post, I’ll walk you through the steps I took to install Node.js 18.20.4 using NVM, install the SPFx toolchain, and troubleshoot an issue where the project scaffolding defaulted to an older version of SPFx.
posts
Troubleshooting NVM Setup Issues for SPFx Development
Troubleshooting NVM Setup Issues for SPFx Development I have not used my dev machine for SPFx development for over a year. Before diving into any new SPFx development, I followed the typical procedure of installing the latest Node.js version 18.19.0 supported by the current SPFx version (1.18.2) using nvm (node version management).nvm allows to maintain different development environment.
nvm install 18.19.0 Following this, I proceeded to install the SPFx toolchain:
Tag: nvm
posts
Fixing SPFx: Unable to Use the Latest Version in scaffolding project
Introduction The SharePoint Framework (SPFx) 1.20.0 has been generally available since September 2024. However, if you work with SPFx, you might encounter issues when trying to use the latest version. SPFx still requires Node.js 18.x.x. In this blog post, I’ll walk you through the steps I took to install Node.js 18.20.4 using NVM, install the SPFx toolchain, and troubleshoot an issue where the project scaffolding defaulted to an older version of SPFx.
posts
Troubleshooting NVM Setup Issues for SPFx Development
Troubleshooting NVM Setup Issues for SPFx Development I have not used my dev machine for SPFx development for over a year. Before diving into any new SPFx development, I followed the typical procedure of installing the latest Node.js version 18.19.0 supported by the current SPFx version (1.18.2) using nvm (node version management).nvm allows to maintain different development environment.
nvm install 18.19.0 Following this, I proceeded to install the SPFx toolchain:
Tag: Everyone
posts
Manage 'Everyone' and 'Everyone except external users' claim within a SharePoint site using PowerShell
Introduction As part of Microsoft 365 Copilot readiness, you may want to find where “Everyone and “Everyone except external users” claims are granted permissions which is a cause of oversharing. This blog post will guide you through using PowerShell to manage and audit the “Everyone” and “Everyone except external users” claims within your SharePoint site collection.
For more insights on why the “Everyone except external users” group is riskier than “People in your organization,” refer to Copilot for Microsoft 365 Data Ready – Where “Everyone except external users” group is more risky than “People in your organization” links!
Tag: Everyone except external users
posts
Manage 'Everyone' and 'Everyone except external users' claim within a SharePoint site using PowerShell
Introduction As part of Microsoft 365 Copilot readiness, you may want to find where “Everyone and “Everyone except external users” claims are granted permissions which is a cause of oversharing. This blog post will guide you through using PowerShell to manage and audit the “Everyone” and “Everyone except external users” claims within your SharePoint site collection.
For more insights on why the “Everyone except external users” group is riskier than “People in your organization,” refer to Copilot for Microsoft 365 Data Ready – Where “Everyone except external users” group is more risky than “People in your organization” links!
Tag: Microsoft 365 Copilot
posts
Manage 'Everyone' and 'Everyone except external users' claim within a SharePoint site using PowerShell
Introduction As part of Microsoft 365 Copilot readiness, you may want to find where “Everyone and “Everyone except external users” claims are granted permissions which is a cause of oversharing. This blog post will guide you through using PowerShell to manage and audit the “Everyone” and “Everyone except external users” claims within your SharePoint site collection.
For more insights on why the “Everyone except external users” group is riskier than “People in your organization,” refer to Copilot for Microsoft 365 Data Ready – Where “Everyone except external users” group is more risky than “People in your organization” links!
posts
Oversight of Sharing Information in SharePoint sites using PowerShell with CSOM, REST and PnP PowerShell
Effective oversight of sharing links and sharing information are paramount to ensuring data security, compliance, and optimal collaboration experiences.
As organisations migrate to M365 environments, they inherit powerful collaboration tools that facilitate seamless sharing of documents and resources. However, without proper governance, these capabilities can lead to unintended consequences such as data breaches, compliance violations, and loss of intellectual property.
Sharing is a powerful feature for collaboration. However depending on how items, files or folders are shared, a sharing link might be created or unique permissions on these items are created.
Tag: Audit
posts
PowerShell: Fetch Files with Retention or Sensitivity Labels in SharePoint Online
Introduction Understanding the sensitivity and retention labels applied to files in your SharePoint Online sites is essential for maintaining data security and compliance. These labels enable you to manage and protect your data by defining retention periods and handling sensitive information appropriately. This is particularly important for initiatives like the Microsoft 365 Copilot rollout, ensuring that the correct files are stored within the appropriate SharePoint sites. For example, if a SharePoint site is a public Team site, files labeled as confidential should be moved to a private Team site or existing Team site updated from public to private.
posts
PowerShell: Removing Web API Permissions for SPFx Solutions used by EntraId SharePoint Online Web Client Extensibility
The script checks the ‘SharePoint Online Web Client Extensibility’ Principal within Entra ID for the actual assigned permissions as the SPFx solutions requests are all be added to that single shared permission group.
As hilghlighted by “Wes Hackett”:
I’ve personally seen plenty of tenants with Mailbox permissions with no corresponding solutions live in the app catalogs. Early SPFx doc examples encouraged the use of MS Graph into Mailbox permissions in one of the how to learn samples, older tenants sometimes have this breadcrumb left behind.
posts
Retrieve SPFx Details from Tenant and Site Collection App Catalogs Using PowerShell
Have you ever needed to gather detailed information about SPFx solutions installed in your SharePoint environment, such as API permissions, for auditing, inventory, or compliance purposes? The PowerShell script below helps you retrieve these details from both the tenant-level and site collection app catalogs for auditing with the aim to improve security posture by removing unneeded apps and access rights.
To execute this script, you must have Global Administrator or SharePoint Administrator roles.
Tag: Retention Label
posts
PowerShell: Fetch Files with Retention or Sensitivity Labels in SharePoint Online
Introduction Understanding the sensitivity and retention labels applied to files in your SharePoint Online sites is essential for maintaining data security and compliance. These labels enable you to manage and protect your data by defining retention periods and handling sensitive information appropriately. This is particularly important for initiatives like the Microsoft 365 Copilot rollout, ensuring that the correct files are stored within the appropriate SharePoint sites. For example, if a SharePoint site is a public Team site, files labeled as confidential should be moved to a private Team site or existing Team site updated from public to private.
Tag: Sensitivity Label
posts
PowerShell: Fetch Files with Retention or Sensitivity Labels in SharePoint Online
Introduction Understanding the sensitivity and retention labels applied to files in your SharePoint Online sites is essential for maintaining data security and compliance. These labels enable you to manage and protect your data by defining retention periods and handling sensitive information appropriately. This is particularly important for initiatives like the Microsoft 365 Copilot rollout, ensuring that the correct files are stored within the appropriate SharePoint sites. For example, if a SharePoint site is a public Team site, files labeled as confidential should be moved to a private Team site or existing Team site updated from public to private.
posts
Empowering Secure Collaboration: Configuring SharePoint Tenant and Site Settings with PowerShell to prevent oversharing
Sharing lies at the heart of collaboration within SharePoint, facilitating seamless communication and teamwork. However, effective management of sharing settings is crucial to maintain data security and prevent unintended exposure. This is particularly important in light of tools like M365 Copilot.
An extract from Announcing SharePoint advanced management innovations for the AI and Copilot era
“With Copilot and AI, security has become a concern. Not because Copilot allows people to access anything more than they could previously; it just allows them to find information they have access to faster.
posts
Manage SharePoint Premium - SharePoint Advanced Management Settings Using PowerShell to protect data in M365 Copilot Rollout
Manage SharePoint Premium - SharePoint Advanced Management Settings Using PowerShell to protect data in M365 Copilot Rollout SharePoint Premium - SharePoint Advanced Management offers features to help prevent data oversharing and accidental leaks, which is crucial for a successful rollout of M365 Copilot. This guide will show you how to manage these settings using PowerShell.
For an overview, read the Microsoft SharePoint Premium - SharePoint Advanced Management overview.
This post covers how to manage SharePoint Premium - SharePoint Advanced Management settings at both the tenant and site level using PowerShell.
Tag: API Permissions
posts
PnP Powershell GetPnPflow using asAdmin parameter
As part of the multi tenant app registration for PnP PowerShell deprecated on the 9th September 2024, we need to have our own app registration and grant the required permissions. Read more from Changes in PnP Management Shell registration in Microsoft 365
For the cmdlet Get-PnPFlow it requires permissions Azure: management.azure.com which is Azure Service Management
Simply adding the permission as it does not require admin consent and executing the cmdlet below yields no results
Tag: Azure Service Management
posts
PnP Powershell GetPnPflow using asAdmin parameter
As part of the multi tenant app registration for PnP PowerShell deprecated on the 9th September 2024, we need to have our own app registration and grant the required permissions. Read more from Changes in PnP Management Shell registration in Microsoft 365
For the cmdlet Get-PnPFlow it requires permissions Azure: management.azure.com which is Azure Service Management
Simply adding the permission as it does not require admin consent and executing the cmdlet below yields no results
Tag: EntraID
posts
PnP Powershell GetPnPflow using asAdmin parameter
As part of the multi tenant app registration for PnP PowerShell deprecated on the 9th September 2024, we need to have our own app registration and grant the required permissions. Read more from Changes in PnP Management Shell registration in Microsoft 365
For the cmdlet Get-PnPFlow it requires permissions Azure: management.azure.com which is Azure Service Management
Simply adding the permission as it does not require admin consent and executing the cmdlet below yields no results
Tag: Restore a library
posts
SharePoint - working round restore a library link missing
Introduction Have you ever encountered the frustrating situation where the Restore a library link in SharePoint is missing or inconsistently available? This can be a significant issue when you need to restore a library urgently.
The Problem Typically, you would expect to see the link ‘Restore This Library’ in the SharePoint interface: Restore library
However, in some cases, this link might be missing:
Restore Library Missing
The Workaround After some investigation, I discovered a workaround.
Tag: Permission
posts
Audit Service Principal Access to SharePoint Sites with Sites.Selected Permissions
Ensuring the security and compliance of your SharePoint environment is crucial, especially when dealing with service principals, Entra ID apps, or federated identities. These entities often have elevated permissions that, if mismanaged, can lead to unauthorized access and potential data breaches. Regularly auditing these permissions is a best practice for maintaining a secure and compliant SharePoint environment.
Application only or granular access to individual site instead of whole tenant, scope called “Sites.
posts
Managing Service Principal Permission Requests using PowerShell
Managing Service Principal Permission Requests using PowerShell Permission to the “SharePoint Online Client” service principal can be granted either in declarative method within SPFx solutions or directly. This post explores how to handle both declarative and direct permission grants using SPO PowerShell , ClI for M365 and PnP PowerShell.
PnP PowerShell Get all service principal permission grants Gets the collection of permission grants for the “SharePoint Online Client” service principal using the cmdlet Get-PnPTenantServicePrincipalPermissionGrants
Tag: Service Principal
posts
Audit Service Principal Access to SharePoint Sites with Sites.Selected Permissions
Ensuring the security and compliance of your SharePoint environment is crucial, especially when dealing with service principals, Entra ID apps, or federated identities. These entities often have elevated permissions that, if mismanaged, can lead to unauthorized access and potential data breaches. Regularly auditing these permissions is a best practice for maintaining a secure and compliant SharePoint environment.
Application only or granular access to individual site instead of whole tenant, scope called “Sites.
posts
Managing Service Principal Permission Requests using PowerShell
Managing Service Principal Permission Requests using PowerShell Permission to the “SharePoint Online Client” service principal can be granted either in declarative method within SPFx solutions or directly. This post explores how to handle both declarative and direct permission grants using SPO PowerShell , ClI for M365 and PnP PowerShell.
PnP PowerShell Get all service principal permission grants Gets the collection of permission grants for the “SharePoint Online Client” service principal using the cmdlet Get-PnPTenantServicePrincipalPermissionGrants
Tag: Modified
posts
SharePoint Search for Documents: Modified Date and Title of Results
Introduction Have you ever encountered a situation where the search results in SharePoint show incorrect document titles and modified dates? This can be frustrating, especially when you rely on accurate metadata for document management. In this blog post, we’ll explore why this happens and how to resolve it.
Problem Statement A business user reported that the search results for a particular document displayed the wrong name and modified date. Upon investigation, we found that the title and modified date were being pulled from the document properties rather than the metadata shown in the SharePoint library.
Tag: Title
posts
SharePoint Search for Documents: Modified Date and Title of Results
Introduction Have you ever encountered a situation where the search results in SharePoint show incorrect document titles and modified dates? This can be frustrating, especially when you rely on accurate metadata for document management. In this blog post, we’ll explore why this happens and how to resolve it.
Problem Statement A business user reported that the search results for a particular document displayed the wrong name and modified date. Upon investigation, we found that the title and modified date were being pulled from the document properties rather than the metadata shown in the SharePoint library.
Tag: Drive Id
posts
Get Library Drive Id using Power Automate
When using Power Automate with Excel for Business actions, the drive ID for a library is automatically determined. However, if you deploy a Power Automate solution across different environments and use a library as a datasource environment variable, referencing this variable in the flow can result in an error due to an invalid drive ID.
Referencing the variable in the Power Automate flow, it will throw an error message failing to work our the drive id of the library.
Tag: Environment Variable
posts
Get Library Drive Id using Power Automate
When using Power Automate with Excel for Business actions, the drive ID for a library is automatically determined. However, if you deploy a Power Automate solution across different environments and use a library as a datasource environment variable, referencing this variable in the flow can result in an error due to an invalid drive ID.
Referencing the variable in the Power Automate flow, it will throw an error message failing to work our the drive id of the library.
posts
Power Automate: Using Arrays as Environment Variables
Introduction In Power Automate/Power Platform, environment variables within solutions are essential for managing and configuring flows across different environments. However, there is no direct way to declare an environment variable as an array. This blog post will cover how to use JSON to store arrays as environment variables, enabling you to manage complex data structures efficiently.
Available Environment Variable Types Power Automate offers various types of environment variables you can select and configure:
Tag: REST
posts
Get Library Drive Id using Power Automate
When using Power Automate with Excel for Business actions, the drive ID for a library is automatically determined. However, if you deploy a Power Automate solution across different environments and use a library as a datasource environment variable, referencing this variable in the flow can result in an error due to an invalid drive ID.
Referencing the variable in the Power Automate flow, it will throw an error message failing to work our the drive id of the library.
posts
Optimizing PowerShell Scripts to check for unique permissions in SharePoint: REST API vs. Get-PnPListItem
When working with large SharePoint sites, checking for unique permissions can be a time-consuming task. This blog post explores methods to optimize PowerShell scripts for fetching property HasUniqueRoleAssignments to determine unique permissions, including using PnP PowerShell and the SharePoint REST API. We compare their performance and highlight the advantages and limitations of each approach.
Using PnP PowerShell PnP PowerShell provides an efficient way to interact with SharePoint Online and retrieve list items to check for unique permissions.
posts
Oversight of Sharing Information in SharePoint sites using PowerShell with CSOM, REST and PnP PowerShell
Effective oversight of sharing links and sharing information are paramount to ensuring data security, compliance, and optimal collaboration experiences.
As organisations migrate to M365 environments, they inherit powerful collaboration tools that facilitate seamless sharing of documents and resources. However, without proper governance, these capabilities can lead to unintended consequences such as data breaches, compliance violations, and loss of intellectual property.
Sharing is a powerful feature for collaboration. However depending on how items, files or folders are shared, a sharing link might be created or unique permissions on these items are created.
posts
Handling Locked Office Files issue In Power Automate
Handling Locked Office Files issue In Power Automate Inspired by the workaround described by Pieter Veenstra System Updates in SharePoint from Power Automate using the ValidateUpdateListItem endpoint to help with the locked file issue, this post covers file version creation as well.
File Locked Issue File lock issues in Power Automate can occur due to:
The file being opened by a user. The file being updated by a Power Automate flow, which may take up to 6 minutes to release the lock.
posts
Publishing Major Versions of Files in SharePoint with Power Automate
Publishing Major Versions of Files in SharePoint with Power Automate This post covers how to publish major versions for Office documents (Word, Excel, or PowerPoint) in SharePoint using Power Automate, especially after an approval task using the checkin and publish REST endpoints. This applies to libraries having minor versions enabled
Just for context, a Power Automate approval flow with trigger for a selected file needed publishing for the selected file as major version after being approved.
Tag: Solution
posts
Get Library Drive Id using Power Automate
When using Power Automate with Excel for Business actions, the drive ID for a library is automatically determined. However, if you deploy a Power Automate solution across different environments and use a library as a datasource environment variable, referencing this variable in the flow can result in an error due to an invalid drive ID.
Referencing the variable in the Power Automate flow, it will throw an error message failing to work our the drive id of the library.
posts
Power Automate: Using Arrays as Environment Variables
Introduction In Power Automate/Power Platform, environment variables within solutions are essential for managing and configuring flows across different environments. However, there is no direct way to declare an environment variable as an array. This blog post will cover how to use JSON to store arrays as environment variables, enabling you to manage complex data structures efficiently.
Available Environment Variable Types Power Automate offers various types of environment variables you can select and configure:
posts
Guide to Preparing setting files for Power Platform managed solution deployment
Guide to Preparing setting files for Power Platform managed solution deployment This guide will walk you through the process of creating a settings file for Power Platform managed solution deployment. Refer to the posts for more details to set up Application Lifecycle Management (ALM) for power platform: Power Platform ALM & Pipelines w/ Matt Devaney and Converting to Modern YAML Pipeline: Application Lifecycle Management in Azure DevOps for Power Platform for detailed steps for ALM for power platform solutions.
posts
Power Platform Managed Solution Deployment with Connection References - Allow customisations
Power Platform Managed Solution Deployment with Connection References - Allow customisations This article explores the challenges and solutions associated with Power Platform managed solution deployment, specifically focusing on connection references and the “Allow Customisations” property.
Refer to the posts for more details to set up Application Lifecycle Management (ALM) for power platform: Power Platform ALM & Pipelines w/ Matt Devaney and Converting to Modern YAML Pipeline: Application Lifecycle Management in Azure DevOps for Power Platform
Tag: Enhanced Version Controls
posts
Enhanced Version Controls/Intelligent Versioning Trim with PowerShell
Microsoft has introduced Enhanced Version Controls, previously known as Intelligent Versioning, as part of its public preview in May 2024. This feature, detailed in the Microsoft 365 Roadmap 145802, aims to help administrators manage file versions more effectively, reducing storage costs by removing unnecessary versions.
Extract from the Roadmap
We are introducing new version controls that help tenant and site admins or document library owners reduce the storage footprint driven by low value file versions.
Tag: Intelligent Version
posts
Enhanced Version Controls/Intelligent Versioning Trim with PowerShell
Microsoft has introduced Enhanced Version Controls, previously known as Intelligent Versioning, as part of its public preview in May 2024. This feature, detailed in the Microsoft 365 Roadmap 145802, aims to help administrators manage file versions more effectively, reducing storage costs by removing unnecessary versions.
Extract from the Roadmap
We are introducing new version controls that help tenant and site admins or document library owners reduce the storage footprint driven by low value file versions.
Tag: Version Trim
posts
Enhanced Version Controls/Intelligent Versioning Trim with PowerShell
Microsoft has introduced Enhanced Version Controls, previously known as Intelligent Versioning, as part of its public preview in May 2024. This feature, detailed in the Microsoft 365 Roadmap 145802, aims to help administrators manage file versions more effectively, reducing storage costs by removing unnecessary versions.
Extract from the Roadmap
We are introducing new version controls that help tenant and site admins or document library owners reduce the storage footprint driven by low value file versions.
Tag: Array
posts
Power Automate: Filter Array to Exclude First Approver from List of Approvers
Introduction In Power Automate, there are scenarios where a specific item needs to be excluded from an array to exclude. This blog post will guide you through the process of filtering an array to exclude the first approver from a list of approvers. This can be particularly useful in approval workflows where same person does not approve multiple stages.
Step-by-Step Guide Add Filter Array Action This action will allow filtering out the first approver from the list of approvers.
Tag: Array Actions
posts
Power Automate: Filter Array to Exclude First Approver from List of Approvers
Introduction In Power Automate, there are scenarios where a specific item needs to be excluded from an array to exclude. This blog post will guide you through the process of filtering an array to exclude the first approver from a list of approvers. This can be particularly useful in approval workflows where same person does not approve multiple stages.
Step-by-Step Guide Add Filter Array Action This action will allow filtering out the first approver from the list of approvers.
Tag: Get User Details
posts
Power Automate: Get Page Author Details
Introduction In Power Automate, retrieving details about the author of a SharePoint page can be essential for various workflows. This blog post will guide you through the steps to get the page author details using Power Automate.
Add Send an Http request to SharePoint action and rename it to Get Page Author Details.Configure the action with the following settings: Site Address: triggerOutputs()?[‘body/SiteUrl’] Method: Get Uri : /_api/web/_api/Web/GetUserById(body(‘Parse_Page_Details_JSON’)?[’d’]?[‘AuthorId’]) Output of the API
posts
Power Automate: Retrieve User Details
This post covers how to leverage SharePoint REST API to get user details from Power Automate using the Send an Http request to SharePoint action.
Within a Power Automate flow follow the steps below to retrieve a user details.
Send an Http request to SharePoint action renamed to Get Page Author Details Site Address: https://test.sharepoint.com Method: GET URI: _api/Web/GetUserById(14) Here’s the output from the API:
Here’s the output from the API:
Tag: SharePoint Advanced Management - SharePoint Premium
posts
Get SharePoint site sharing Settings with PowerShell
Managing sharing settings for SharePoint sites is crucial for maintaining a secure and well-governed environment. With the help of PowerShell, administrators can efficiently retrieve and manage these settings across their SharePoint Online tenant. This ensures that sensitive information is not overshared and that your organisation’s data remains secure.
Importance of Reviewing Sharing Settings Reviewing sharing settings is essential to prevent oversharing, which can lead to data breaches and unauthorized access to sensitive information.
Tag: Sharing
posts
Get SharePoint site sharing Settings with PowerShell
Managing sharing settings for SharePoint sites is crucial for maintaining a secure and well-governed environment. With the help of PowerShell, administrators can efficiently retrieve and manage these settings across their SharePoint Online tenant. This ensures that sensitive information is not overshared and that your organisation’s data remains secure.
Importance of Reviewing Sharing Settings Reviewing sharing settings is essential to prevent oversharing, which can lead to data breaches and unauthorized access to sensitive information.
posts
Empowering Secure Collaboration: Configuring SharePoint Tenant and Site Settings with PowerShell to prevent oversharing
Sharing lies at the heart of collaboration within SharePoint, facilitating seamless communication and teamwork. However, effective management of sharing settings is crucial to maintain data security and prevent unintended exposure. This is particularly important in light of tools like M365 Copilot.
An extract from Announcing SharePoint advanced management innovations for the AI and Copilot era
“With Copilot and AI, security has become a concern. Not because Copilot allows people to access anything more than they could previously; it just allows them to find information they have access to faster.
posts
Empowering Secure Collaboration: Configuring OneDrive Tenant and Site Settings
Empowering Secure Collaboration: Configuring OneDrive Tenant Settings with PowerShell OneDrive makes it easy to collaborate by sharing files and folders with others. OneDrive is the storage space for personal productivity and not meant for collaboration. Data stored within OneDrive are
Files shared to chats within Teams Files shared with end user by other OneDrive users. OneNote Personal lists and Document storage Shortcuts to SharePoint sites/libraries Favourites Loops within chats Streams In this article, we’ll explore into how PowerShell can empower SharePoint administrators to configure OneDrive sharing settings proactively at the tenant level, addressing oversharing concerns for the M365 Copilot rollout.
posts
Empowering Secure Collaboration: Configuring Microsoft Loop Sharing Tenant and Site Settings with PowerShell
Empowering Secure Collaboration: Configuring Microsoft Loop Sharing SharePoint Tenant and Site Settings with PowerShell Guest users can be invited to collaborate within Microsoft Loop in the tenant. Refer How to work with guest users using Microsoft Loop how sharing within Loop works.
This post focuses on using PowerShell to control the Microsoft Loop sharing settings to help securing data especially with M365 Copilot which can expose data not previously accessible by other means.
Tag: Sites
posts
Get SharePoint site sharing Settings with PowerShell
Managing sharing settings for SharePoint sites is crucial for maintaining a secure and well-governed environment. With the help of PowerShell, administrators can efficiently retrieve and manage these settings across their SharePoint Online tenant. This ensures that sensitive information is not overshared and that your organisation’s data remains secure.
Importance of Reviewing Sharing Settings Reviewing sharing settings is essential to prevent oversharing, which can lead to data breaches and unauthorized access to sensitive information.
posts
Empowering Secure Collaboration: Configuring SharePoint Tenant and Site Settings with PowerShell to prevent oversharing
Sharing lies at the heart of collaboration within SharePoint, facilitating seamless communication and teamwork. However, effective management of sharing settings is crucial to maintain data security and prevent unintended exposure. This is particularly important in light of tools like M365 Copilot.
An extract from Announcing SharePoint advanced management innovations for the AI and Copilot era
“With Copilot and AI, security has become a concern. Not because Copilot allows people to access anything more than they could previously; it just allows them to find information they have access to faster.
posts
Teams Chats - default Sharing Links to 'People Currently in this Chat
Have you ever wondered how to default the default sharing link in Teams chats to ‘People currently in this chat’? By default, if “Anyone” is disabled within the tenant, the sharing link is set to “People in my organization”. This can be a challenge when you want to limit access to only those in the current chat. All files uploaded to a Teams Chat are stored in the uploader’s OneDrive for Business.
posts
Oversight of Sharing Information in SharePoint sites using PowerShell with CSOM, REST and PnP PowerShell
Effective oversight of sharing links and sharing information are paramount to ensuring data security, compliance, and optimal collaboration experiences.
As organisations migrate to M365 environments, they inherit powerful collaboration tools that facilitate seamless sharing of documents and resources. However, without proper governance, these capabilities can lead to unintended consequences such as data breaches, compliance violations, and loss of intellectual property.
Sharing is a powerful feature for collaboration. However depending on how items, files or folders are shared, a sharing link might be created or unique permissions on these items are created.
posts
Empowering Secure Collaboration: Configuring OneDrive Tenant and Site Settings
Empowering Secure Collaboration: Configuring OneDrive Tenant Settings with PowerShell OneDrive makes it easy to collaborate by sharing files and folders with others. OneDrive is the storage space for personal productivity and not meant for collaboration. Data stored within OneDrive are
Files shared to chats within Teams Files shared with end user by other OneDrive users. OneNote Personal lists and Document storage Shortcuts to SharePoint sites/libraries Favourites Loops within chats Streams In this article, we’ll explore into how PowerShell can empower SharePoint administrators to configure OneDrive sharing settings proactively at the tenant level, addressing oversharing concerns for the M365 Copilot rollout.
posts
Manage SharePoint Premium - SharePoint Advanced Management Settings Using PowerShell to protect data in M365 Copilot Rollout
Manage SharePoint Premium - SharePoint Advanced Management Settings Using PowerShell to protect data in M365 Copilot Rollout SharePoint Premium - SharePoint Advanced Management offers features to help prevent data oversharing and accidental leaks, which is crucial for a successful rollout of M365 Copilot. This guide will show you how to manage these settings using PowerShell.
For an overview, read the Microsoft SharePoint Premium - SharePoint Advanced Management overview.
This post covers how to manage SharePoint Premium - SharePoint Advanced Management settings at both the tenant and site level using PowerShell.
posts
Empowering Secure Collaboration: Configuring Microsoft Loop Sharing Tenant and Site Settings with PowerShell
Empowering Secure Collaboration: Configuring Microsoft Loop Sharing SharePoint Tenant and Site Settings with PowerShell Guest users can be invited to collaborate within Microsoft Loop in the tenant. Refer How to work with guest users using Microsoft Loop how sharing within Loop works.
This post focuses on using PowerShell to control the Microsoft Loop sharing settings to help securing data especially with M365 Copilot which can expose data not previously accessible by other means.
posts
PowerShell Script to Query Unique Permissions in SharePoint
Query Unique Permissions in SharePoint using CSOM and PnP PowerShell Managing permissions in SharePoint is a critical aspect of maintaining data security and compliance within organisations. However, as SharePoint environments grow in complexity, manually auditing and managing permissions becomes increasingly challenging. To address this challenge, PowerShell scripts can be leveraged to automate the auditing process, providing administrators with valuable insights into permission structures across SharePoint sites and libraries.
What do SharePoint permissions have to do with Copilot for Microsoft 365?
posts
Automating Site Reindexing with PowerShell
Automating Site Reindexing with PowerShell Introduction Keeping your SharePoint environment up-to-date is crucial, especially after making schema changes. One important aspect of maintaining accurate and relevant search results is to regularly reindex sites, libraries, or lists. In this blog post, we will explore a streamlined approach using PnP PowerShell to automate the reindexing process. By leveraging this script, you can ensure that your search results reflect the latest changes in your SharePoint environment.
Tag: Data Loss Prevention
posts
Empowering Secure Collaboration: Configuring SharePoint Tenant and Site Settings with PowerShell to prevent oversharing
Sharing lies at the heart of collaboration within SharePoint, facilitating seamless communication and teamwork. However, effective management of sharing settings is crucial to maintain data security and prevent unintended exposure. This is particularly important in light of tools like M365 Copilot.
An extract from Announcing SharePoint advanced management innovations for the AI and Copilot era
“With Copilot and AI, security has become a concern. Not because Copilot allows people to access anything more than they could previously; it just allows them to find information they have access to faster.
Tag: DLP
posts
Empowering Secure Collaboration: Configuring SharePoint Tenant and Site Settings with PowerShell to prevent oversharing
Sharing lies at the heart of collaboration within SharePoint, facilitating seamless communication and teamwork. However, effective management of sharing settings is crucial to maintain data security and prevent unintended exposure. This is particularly important in light of tools like M365 Copilot.
An extract from Announcing SharePoint advanced management innovations for the AI and Copilot era
“With Copilot and AI, security has become a concern. Not because Copilot allows people to access anything more than they could previously; it just allows them to find information they have access to faster.
posts
Unveiling Audit Logs with PnP and Cli for M365 PowerShell
Unveiling Audit Logs with PnP PowerShell for the last 7 days Understanding and tracking activities within your M365 environment is crucial for maintaining security and compliance. Audit Logs offer a wealth of information, and in this post, we’ll delve into the methods to retrieve and analyze them. Specifically, we’ll focus on leveraging the Office 365 Management Activity API reference through the Get-PnPUnifiedAuditLog PnP PowerShell cmdlet. It is a great alternative if you are only a SharePoint Administrator with no global admin or Purview Audit logs access.
Tag: Restricted SharePoint Search
posts
Empowering Secure Collaboration: Configuring SharePoint Tenant and Site Settings with PowerShell to prevent oversharing
Sharing lies at the heart of collaboration within SharePoint, facilitating seamless communication and teamwork. However, effective management of sharing settings is crucial to maintain data security and prevent unintended exposure. This is particularly important in light of tools like M365 Copilot.
An extract from Announcing SharePoint advanced management innovations for the AI and Copilot era
“With Copilot and AI, security has become a concern. Not because Copilot allows people to access anything more than they could previously; it just allows them to find information they have access to faster.
Tag: Retention Policies
posts
Empowering Secure Collaboration: Configuring SharePoint Tenant and Site Settings with PowerShell to prevent oversharing
Sharing lies at the heart of collaboration within SharePoint, facilitating seamless communication and teamwork. However, effective management of sharing settings is crucial to maintain data security and prevent unintended exposure. This is particularly important in light of tools like M365 Copilot.
An extract from Announcing SharePoint advanced management innovations for the AI and Copilot era
“With Copilot and AI, security has become a concern. Not because Copilot allows people to access anything more than they could previously; it just allows them to find information they have access to faster.
Tag: RSS
posts
Empowering Secure Collaboration: Configuring SharePoint Tenant and Site Settings with PowerShell to prevent oversharing
Sharing lies at the heart of collaboration within SharePoint, facilitating seamless communication and teamwork. However, effective management of sharing settings is crucial to maintain data security and prevent unintended exposure. This is particularly important in light of tools like M365 Copilot.
An extract from Announcing SharePoint advanced management innovations for the AI and Copilot era
“With Copilot and AI, security has become a concern. Not because Copilot allows people to access anything more than they could previously; it just allows them to find information they have access to faster.
Tag: Tenant
posts
Empowering Secure Collaboration: Configuring SharePoint Tenant and Site Settings with PowerShell to prevent oversharing
Sharing lies at the heart of collaboration within SharePoint, facilitating seamless communication and teamwork. However, effective management of sharing settings is crucial to maintain data security and prevent unintended exposure. This is particularly important in light of tools like M365 Copilot.
An extract from Announcing SharePoint advanced management innovations for the AI and Copilot era
“With Copilot and AI, security has become a concern. Not because Copilot allows people to access anything more than they could previously; it just allows them to find information they have access to faster.
posts
Teams Chats - default Sharing Links to 'People Currently in this Chat
Have you ever wondered how to default the default sharing link in Teams chats to ‘People currently in this chat’? By default, if “Anyone” is disabled within the tenant, the sharing link is set to “People in my organization”. This can be a challenge when you want to limit access to only those in the current chat. All files uploaded to a Teams Chat are stored in the uploader’s OneDrive for Business.
posts
Empowering Secure Collaboration: Configuring OneDrive Tenant and Site Settings
Empowering Secure Collaboration: Configuring OneDrive Tenant Settings with PowerShell OneDrive makes it easy to collaborate by sharing files and folders with others. OneDrive is the storage space for personal productivity and not meant for collaboration. Data stored within OneDrive are
Files shared to chats within Teams Files shared with end user by other OneDrive users. OneNote Personal lists and Document storage Shortcuts to SharePoint sites/libraries Favourites Loops within chats Streams In this article, we’ll explore into how PowerShell can empower SharePoint administrators to configure OneDrive sharing settings proactively at the tenant level, addressing oversharing concerns for the M365 Copilot rollout.
posts
Manage SharePoint Premium - SharePoint Advanced Management Settings Using PowerShell to protect data in M365 Copilot Rollout
Manage SharePoint Premium - SharePoint Advanced Management Settings Using PowerShell to protect data in M365 Copilot Rollout SharePoint Premium - SharePoint Advanced Management offers features to help prevent data oversharing and accidental leaks, which is crucial for a successful rollout of M365 Copilot. This guide will show you how to manage these settings using PowerShell.
For an overview, read the Microsoft SharePoint Premium - SharePoint Advanced Management overview.
This post covers how to manage SharePoint Premium - SharePoint Advanced Management settings at both the tenant and site level using PowerShell.
posts
Empowering Secure Collaboration: Configuring Microsoft Loop Sharing Tenant and Site Settings with PowerShell
Empowering Secure Collaboration: Configuring Microsoft Loop Sharing SharePoint Tenant and Site Settings with PowerShell Guest users can be invited to collaborate within Microsoft Loop in the tenant. Refer How to work with guest users using Microsoft Loop how sharing within Loop works.
This post focuses on using PowerShell to control the Microsoft Loop sharing settings to help securing data especially with M365 Copilot which can expose data not previously accessible by other means.
Tag: Basic Display API
posts
Display instagram posts into SharePoint using Instagram Basic Display Independent Publisher Connector
How to Use the Instagram Basic Display Connector in Power Apps and Power Automate Instagram is a popular social media platform with over 1 billion monthly active users. It is a great platform for sharing photos and videos, and many businesses use it to promote their products and services. With the Instagram Basic Display (IndependentPublisher) connector, you can now easily retrieve data from Instagram accounts and use it in Power Apps and Power Automate.
posts
Refresh long-lived token via Instagram Graph API
Learn how to automatically refresh long-lived access tokens using the Instagram Graph API. Refer to how the Long-Lived Access Tokens for more info.
Long-lived tokens are valid for 60 days and can be refreshed as long as they are at least 24 hours old but have not expired, and the app user has granted your app the instagram_graph_user_profile permission. Refreshed tokens are valid for 60 days from the date at which they are refreshed.
Tag: Instagram
posts
Display instagram posts into SharePoint using Instagram Basic Display Independent Publisher Connector
How to Use the Instagram Basic Display Connector in Power Apps and Power Automate Instagram is a popular social media platform with over 1 billion monthly active users. It is a great platform for sharing photos and videos, and many businesses use it to promote their products and services. With the Instagram Basic Display (IndependentPublisher) connector, you can now easily retrieve data from Instagram accounts and use it in Power Apps and Power Automate.
posts
Refresh long-lived token via Instagram Graph API
Learn how to automatically refresh long-lived access tokens using the Instagram Graph API. Refer to how the Long-Lived Access Tokens for more info.
Long-lived tokens are valid for 60 days and can be refreshed as long as they are at least 24 hours old but have not expired, and the app user has granted your app the instagram_graph_user_profile permission. Refreshed tokens are valid for 60 days from the date at which they are refreshed.
Tag: ListViewFormatting
posts
Display instagram posts into SharePoint using Instagram Basic Display Independent Publisher Connector
How to Use the Instagram Basic Display Connector in Power Apps and Power Automate Instagram is a popular social media platform with over 1 billion monthly active users. It is a great platform for sharing photos and videos, and many businesses use it to promote their products and services. With the Instagram Basic Display (IndependentPublisher) connector, you can now easily retrieve data from Instagram accounts and use it in Power Apps and Power Automate.
Tag: Power Apps
posts
Display instagram posts into SharePoint using Instagram Basic Display Independent Publisher Connector
How to Use the Instagram Basic Display Connector in Power Apps and Power Automate Instagram is a popular social media platform with over 1 billion monthly active users. It is a great platform for sharing photos and videos, and many businesses use it to promote their products and services. With the Instagram Basic Display (IndependentPublisher) connector, you can now easily retrieve data from Instagram accounts and use it in Power Apps and Power Automate.
posts
Coauthoring in power apps issues
Coauthoring with power apps issues Coauthoring in power apps allows multiple power apps developers to work on the same canvas app. Despite being an experimental feature we decided to give a try to speed up the development process. We used the blog post [How To Setup Power Apps Co-Authoring - Azure DevOps Version] (https://www.matthewdevaney.com/how-to-setup-power-apps-co-authoring-azure-dev-ops-version/). The tutorial covers step-by-step instructions for enabling co-authoring for canvas apps in Power Apps using Azure DevOps repository.
Tag: Long-Lived Token
posts
Refresh long-lived token via Instagram Graph API
Learn how to automatically refresh long-lived access tokens using the Instagram Graph API. Refer to how the Long-Lived Access Tokens for more info.
Long-lived tokens are valid for 60 days and can be refreshed as long as they are at least 24 hours old but have not expired, and the app user has granted your app the instagram_graph_user_profile permission. Refreshed tokens are valid for 60 days from the date at which they are refreshed.
Tag: Export
posts
Power Automate: Export Flow within solution as package (.zip)
I had a flow created in the default environment that needed to be moved into a solution in a managed environment. However, the export link for Package (.zip) was missing as the flow was within a default solution (preferred).
It was a huge flow, and manually recreating each action would have taken a considerable amount of time.
I checked another flow where the Package (.zip) was available.
Upon clicking the link, I noticed that /export was appended to the URL of the flow.
Tag: App Catalog
posts
PowerShell: Removing Web API Permissions for SPFx Solutions used by EntraId SharePoint Online Web Client Extensibility
The script checks the ‘SharePoint Online Web Client Extensibility’ Principal within Entra ID for the actual assigned permissions as the SPFx solutions requests are all be added to that single shared permission group.
As hilghlighted by “Wes Hackett”:
I’ve personally seen plenty of tenants with Mailbox permissions with no corresponding solutions live in the app catalogs. Early SPFx doc examples encouraged the use of MS Graph into Mailbox permissions in one of the how to learn samples, older tenants sometimes have this breadcrumb left behind.
posts
Retrieve SPFx Details from Tenant and Site Collection App Catalogs Using PowerShell
Have you ever needed to gather detailed information about SPFx solutions installed in your SharePoint environment, such as API permissions, for auditing, inventory, or compliance purposes? The PowerShell script below helps you retrieve these details from both the tenant-level and site collection app catalogs for auditing with the aim to improve security posture by removing unneeded apps and access rights.
To execute this script, you must have Global Administrator or SharePoint Administrator roles.
posts
Deploying SPFx Packages from Tenant App Catalog to Hub Site and Associated Sites
Deploying SharePoint Framework (SPFx) Packages from Tenant App Catalog to Hub Site and Associated Sites There is the blog post how Deploying and Installing SharePoint Framework (SPFx) solutions using PnP PowerShell to Hub Site and Associated Sites using site collection app catalog. This post covers how to perform same objective but using the tenant level app catalog if the SPFx packages have not been added to all sites globally during deployment in the tenant level app catalog and instead need targeted deployment or upgrades on specific sites.
posts
Retracting SPFx Solutions from Hub Site and associated sites using PnP PowerShell
Retracting SPFx Solutions from Hub Site and associated sites using PnP PowerShell SharePoint Framework (SPFx) solutions are a powerful tool for extending and customizing SharePoint sites. However, managing these solutions across multiple sites in a SharePoint tenant can be a daunting task. Fortunately, PnP PowerShell provides automation capabilities that can streamline these operations and ensure consistency across the tenant.
The blog post Deploying SharePoint Framework (SPFx) Packages from Tenant App Catalog to Hub Site and Associated Sites covers how to deploy SPFx solutions across a hub site and associated sites.
Tag: SharePoint Online Client Extensibility Web Application Principal
posts
PowerShell: Removing Web API Permissions for SPFx Solutions used by EntraId SharePoint Online Web Client Extensibility
The script checks the ‘SharePoint Online Web Client Extensibility’ Principal within Entra ID for the actual assigned permissions as the SPFx solutions requests are all be added to that single shared permission group.
As hilghlighted by “Wes Hackett”:
I’ve personally seen plenty of tenants with Mailbox permissions with no corresponding solutions live in the app catalogs. Early SPFx doc examples encouraged the use of MS Graph into Mailbox permissions in one of the how to learn samples, older tenants sometimes have this breadcrumb left behind.
Tag: WebAPIPermissions
posts
PowerShell: Removing Web API Permissions for SPFx Solutions used by EntraId SharePoint Online Web Client Extensibility
The script checks the ‘SharePoint Online Web Client Extensibility’ Principal within Entra ID for the actual assigned permissions as the SPFx solutions requests are all be added to that single shared permission group.
As hilghlighted by “Wes Hackett”:
I’ve personally seen plenty of tenants with Mailbox permissions with no corresponding solutions live in the app catalogs. Early SPFx doc examples encouraged the use of MS Graph into Mailbox permissions in one of the how to learn samples, older tenants sometimes have this breadcrumb left behind.
Tag: Inventory
posts
Retrieve SPFx Details from Tenant and Site Collection App Catalogs Using PowerShell
Have you ever needed to gather detailed information about SPFx solutions installed in your SharePoint environment, such as API permissions, for auditing, inventory, or compliance purposes? The PowerShell script below helps you retrieve these details from both the tenant-level and site collection app catalogs for auditing with the aim to improve security posture by removing unneeded apps and access rights.
To execute this script, you must have Global Administrator or SharePoint Administrator roles.
posts
SharePoint Portals Site collections Inventory
As part of the M365 Copilot rollout , questions were raised on the /portals/Community and /portals/hub as both ‘Everyone Except External Users’ was granted access raising concerns on the content on the site. These are legacy sites and are currently inaccessible. Historically, these sites were accessible via the legacy SharePoint admin centre, however, they are not available through the modern SharePoint admin centre interface.
Thanks to Gregory Zelfond’s blog post What are all these site collections in SharePoint?
posts
Get Total Count of SharePoint Files, Folders, and Items with PnP PowerShell
Get Total Count of SharePoint Files, Folders, and Items with PnP PowerShell This PowerShell script powered by PnP PowerShell can help to get total count of files, folders, and list items across SharePoint tenant. This script is invaluable for administrators looking to perform audits, verify data migrations, or simply keep tabs on the content sprawl within their environments. The use case of this script was to get a total number of items that would be ingested into a third party application Records365 (provided by RecordPoint) to ensure the number tally for compliance purposes and identify any gaps.
posts
Find SharePoint Framework (SPFx) Packages with PowerShell in Tenant and Site Collection App Catalogs
Find SharePoint Framework (SPFx) Packages with PowerShell in Tenant and Site Collection App Catalogs This post covers a PowerShell script to generate an inventory of SPFx installations within your SharePoint Online environment which will help you maintain oversight of your SPFx solutions, ensuring they are up-to-date and compliant. The script was particularly useful in pinpointing sites within the tenant where third-party applications, specifically an analytics SPFx component, were deployed. This was crucial for ensuring that data collection was confined to designated sites, such as the intranet in my case study.
Tag: Column Formatting
posts
Update managed metadata field using list formatting
Using column formatting in SharePoint, you can update the values of other fields using the setValue function. This approach allows you to create dynamic functionality in your lists and libraries without extensive development, helping to avoid accumulating technical debt.
Updating a Managed Metadata field, however, is not as straightforward as simply specifying the display value. The field expects a specific format that includes the term’s ID (termId).
Understanding Column Formatting Column formatting in SharePoint involves using a combination of inline CSS, HTML, and JSON to control how fields in lists and libraries are displayed.
Tag: HasUniqueRoleAssignments
posts
Optimizing PowerShell Scripts to check for unique permissions in SharePoint: REST API vs. Get-PnPListItem
When working with large SharePoint sites, checking for unique permissions can be a time-consuming task. This blog post explores methods to optimize PowerShell scripts for fetching property HasUniqueRoleAssignments to determine unique permissions, including using PnP PowerShell and the SharePoint REST API. We compare their performance and highlight the advantages and limitations of each approach.
Using PnP PowerShell PnP PowerShell provides an efficient way to interact with SharePoint Online and retrieve list items to check for unique permissions.
Tag: Throttling handling
posts
Optimizing PowerShell Scripts to check for unique permissions in SharePoint: REST API vs. Get-PnPListItem
When working with large SharePoint sites, checking for unique permissions can be a time-consuming task. This blog post explores methods to optimize PowerShell scripts for fetching property HasUniqueRoleAssignments to determine unique permissions, including using PnP PowerShell and the SharePoint REST API. We compare their performance and highlight the advantages and limitations of each approach.
Using PnP PowerShell PnP PowerShell provides an efficient way to interact with SharePoint Online and retrieve list items to check for unique permissions.
Tag: Unique Permissions
posts
Optimizing PowerShell Scripts to check for unique permissions in SharePoint: REST API vs. Get-PnPListItem
When working with large SharePoint sites, checking for unique permissions can be a time-consuming task. This blog post explores methods to optimize PowerShell scripts for fetching property HasUniqueRoleAssignments to determine unique permissions, including using PnP PowerShell and the SharePoint REST API. We compare their performance and highlight the advantages and limitations of each approach.
Using PnP PowerShell PnP PowerShell provides an efficient way to interact with SharePoint Online and retrieve list items to check for unique permissions.
posts
PowerShell Script to Query Unique Permissions in SharePoint
Query Unique Permissions in SharePoint using CSOM and PnP PowerShell Managing permissions in SharePoint is a critical aspect of maintaining data security and compliance within organisations. However, as SharePoint environments grow in complexity, manually auditing and managing permissions becomes increasingly challenging. To address this challenge, PowerShell scripts can be leveraged to automate the auditing process, providing administrators with valuable insights into permission structures across SharePoint sites and libraries.
What do SharePoint permissions have to do with Copilot for Microsoft 365?
Tag: Copy Structure with data
posts
Copy SharePoint list structure with data - ALM
If you have built Power Platform solutions using SharePoint as a datasource, you may want to export the list structure along with its data from the source environment (e.g., DEV) and deploy it across different environments such as Test, UAT, and PROD. Fortunately, the PnP Provisioning from PnP PowerShell provides this capability. Power Platform solutions can be deployed using pipelines after the SharePoint structure is deployed.
Export Structure and Data from SharePoint Lists PnP PowerShell makes this process straightforward with Get-PnPSiteTemplate:
Tag: BypassSharedLock
posts
Power Automate : Move File bypassing locked issue using CreateCopyJobs endpoint
The SharePoint - Move file action can be used to move files, however the file can’t be moved if the file was accessed by the current Power Automate flow for any processing reslutng in a locked file error.
{ “status”: 400, “message”: “File ‘Shared Documents/Attendances/To Be Processed/Attendance -16072024.xlsx’ cannot be moved because it is in locked mode.\r\nclientRequestId: d6df7566-881f-4f14-8548-c5fac1eda46d\r\nserviceRequestId: 606841a1-40f0-9000-9c69-507df9b21720” }
Handling Locked Files There are two options to handlelocked files when using SharePoint - Move file action:
Tag: M365 Group
posts
Delete M365 connected Team Site using PowerShell
If a M365 group connected Team site is deleted from SharePoint Admin Centre, from the UI it is not possible to delete the site from the deleted sites to be able to resuse the URL or name of the deleted site.
The end user is presented with the following prompt This site belongs to a Microsoft 365 group. Deleting the site will delete the group and all its resources, including the Outlook mailbox and calendar, and any Teams channels.
posts
Teamifying an Existing M365 Group with PowerShell
Teamifying an Existing M365 Group with PowerShell Within M365 , SharePoint and Teams together provides a rich collaboaration platform. When a team site is created from SharePoint admin centre, it is not associated with a Teams despite a M365 group is created in the background. To extend SharePoint collaboration features , there is a need to “teamify” an existing Microsoft 365 Group, essentially attaching a new Teams instance to it to allow use of channels and other apps.
posts
Ensuring Owners Are Members
Ensure Owners Are Members M365Group Microsoft 365 (M365) Groups serve as a central hub for collaboration across various M365 applications like Teams, Planner, SharePoint, and more. While M365 roles include Owners, Members, and Guests, it’s crucial to understand that being an owner doesn’t always inherit member privileges. In this article, we’ll explore why it’s imperative to have M365 Group owners also serve as active members for seamless group management and productivity.
Tag: Teams Site
posts
Delete M365 connected Team Site using PowerShell
If a M365 group connected Team site is deleted from SharePoint Admin Centre, from the UI it is not possible to delete the site from the deleted sites to be able to resuse the URL or name of the deleted site.
The end user is presented with the following prompt This site belongs to a Microsoft 365 group. Deleting the site will delete the group and all its resources, including the Outlook mailbox and calendar, and any Teams channels.
Tag: Update Author
posts
Power Automate : Move File bypassing locked issue using CreateCopyJobs endpoint
The SharePoint - Move file action can be used to move files, however the file can’t be moved if the file was accessed by the current Power Automate flow for any processing reslutng in a locked file error.
{ “status”: 400, “message”: “File ‘Shared Documents/Attendances/To Be Processed/Attendance -16072024.xlsx’ cannot be moved because it is in locked mode.\r\nclientRequestId: d6df7566-881f-4f14-8548-c5fac1eda46d\r\nserviceRequestId: 606841a1-40f0-9000-9c69-507df9b21720” }
Handling Locked Files There are two options to handlelocked files when using SharePoint - Move file action:
posts
Power Automate : Update Author and Editor of a Page
This post outlines how to use Power Automate to update author and editor of a Page within SharePoint using the Send an Http request to SharePoint action.
Within a Power Automate flow, follow the following steps
Add Send an Http request to SharePoint renamed to Update Author Properties Property Value Site Address The SharePoint site URL Method POST Uri See Uri below Headers See Headers table below Body See Body below Uri _api/web/lists/GetByTitle(‘Site%20Pages’)/items(1)/ValidateUpdateListItem()`
Tag: Update Editor
posts
Power Automate : Move File bypassing locked issue using CreateCopyJobs endpoint
The SharePoint - Move file action can be used to move files, however the file can’t be moved if the file was accessed by the current Power Automate flow for any processing reslutng in a locked file error.
{ “status”: 400, “message”: “File ‘Shared Documents/Attendances/To Be Processed/Attendance -16072024.xlsx’ cannot be moved because it is in locked mode.\r\nclientRequestId: d6df7566-881f-4f14-8548-c5fac1eda46d\r\nserviceRequestId: 606841a1-40f0-9000-9c69-507df9b21720” }
Handling Locked Files There are two options to handlelocked files when using SharePoint - Move file action:
posts
Power Automate : Update Author and Editor of a Page
This post outlines how to use Power Automate to update author and editor of a Page within SharePoint using the Send an Http request to SharePoint action.
Within a Power Automate flow, follow the following steps
Add Send an Http request to SharePoint renamed to Update Author Properties Property Value Site Address The SharePoint site URL Method POST Uri See Uri below Headers See Headers table below Body See Body below Uri _api/web/lists/GetByTitle(‘Site%20Pages’)/items(1)/ValidateUpdateListItem()`
Tag: IG
posts
Teams Chats - default Sharing Links to 'People Currently in this Chat
Have you ever wondered how to default the default sharing link in Teams chats to ‘People currently in this chat’? By default, if “Anyone” is disabled within the tenant, the sharing link is set to “People in my organization”. This can be a challenge when you want to limit access to only those in the current chat. All files uploaded to a Teams Chat are stored in the uploader’s OneDrive for Business.
posts
Empowering Secure Collaboration: Configuring OneDrive Tenant and Site Settings
Empowering Secure Collaboration: Configuring OneDrive Tenant Settings with PowerShell OneDrive makes it easy to collaborate by sharing files and folders with others. OneDrive is the storage space for personal productivity and not meant for collaboration. Data stored within OneDrive are
Files shared to chats within Teams Files shared with end user by other OneDrive users. OneNote Personal lists and Document storage Shortcuts to SharePoint sites/libraries Favourites Loops within chats Streams In this article, we’ll explore into how PowerShell can empower SharePoint administrators to configure OneDrive sharing settings proactively at the tenant level, addressing oversharing concerns for the M365 Copilot rollout.
posts
Manage SharePoint Premium - SharePoint Advanced Management Settings Using PowerShell to protect data in M365 Copilot Rollout
Manage SharePoint Premium - SharePoint Advanced Management Settings Using PowerShell to protect data in M365 Copilot Rollout SharePoint Premium - SharePoint Advanced Management offers features to help prevent data oversharing and accidental leaks, which is crucial for a successful rollout of M365 Copilot. This guide will show you how to manage these settings using PowerShell.
For an overview, read the Microsoft SharePoint Premium - SharePoint Advanced Management overview.
This post covers how to manage SharePoint Premium - SharePoint Advanced Management settings at both the tenant and site level using PowerShell.
Tag: Information Governance
posts
Teams Chats - default Sharing Links to 'People Currently in this Chat
Have you ever wondered how to default the default sharing link in Teams chats to ‘People currently in this chat’? By default, if “Anyone” is disabled within the tenant, the sharing link is set to “People in my organization”. This can be a challenge when you want to limit access to only those in the current chat. All files uploaded to a Teams Chat are stored in the uploader’s OneDrive for Business.
posts
Empowering Secure Collaboration: Configuring OneDrive Tenant and Site Settings
Empowering Secure Collaboration: Configuring OneDrive Tenant Settings with PowerShell OneDrive makes it easy to collaborate by sharing files and folders with others. OneDrive is the storage space for personal productivity and not meant for collaboration. Data stored within OneDrive are
Files shared to chats within Teams Files shared with end user by other OneDrive users. OneNote Personal lists and Document storage Shortcuts to SharePoint sites/libraries Favourites Loops within chats Streams In this article, we’ll explore into how PowerShell can empower SharePoint administrators to configure OneDrive sharing settings proactively at the tenant level, addressing oversharing concerns for the M365 Copilot rollout.
posts
Manage SharePoint Premium - SharePoint Advanced Management Settings Using PowerShell to protect data in M365 Copilot Rollout
Manage SharePoint Premium - SharePoint Advanced Management Settings Using PowerShell to protect data in M365 Copilot Rollout SharePoint Premium - SharePoint Advanced Management offers features to help prevent data oversharing and accidental leaks, which is crucial for a successful rollout of M365 Copilot. This guide will show you how to manage these settings using PowerShell.
For an overview, read the Microsoft SharePoint Premium - SharePoint Advanced Management overview.
This post covers how to manage SharePoint Premium - SharePoint Advanced Management settings at both the tenant and site level using PowerShell.
Tag: Tackling oversharing
posts
Teams Chats - default Sharing Links to 'People Currently in this Chat
Have you ever wondered how to default the default sharing link in Teams chats to ‘People currently in this chat’? By default, if “Anyone” is disabled within the tenant, the sharing link is set to “People in my organization”. This can be a challenge when you want to limit access to only those in the current chat. All files uploaded to a Teams Chat are stored in the uploader’s OneDrive for Business.
Tag: Teams Chat
posts
Teams Chats - default Sharing Links to 'People Currently in this Chat
Have you ever wondered how to default the default sharing link in Teams chats to ‘People currently in this chat’? By default, if “Anyone” is disabled within the tenant, the sharing link is set to “People in my organization”. This can be a challenge when you want to limit access to only those in the current chat. All files uploaded to a Teams Chat are stored in the uploader’s OneDrive for Business.
Tag: Folder
posts
Getting Storage Metrics for a SharePoint site
Gaining an overview of what takes up space in a SharePoint site is crucial for monitoring large files or a significant number of versions.
Unfortunately, the storage metrics link, <siteurl>/_layouts/15/storman.aspx, won’t work for libraries with more than 5,000 files without nested folders. While this might go against information architecture principles, creating folders is an option to avoid the list view threshold error.
Here’s a PowerShell script to help you get storage metrics for your SharePoint site:
posts
Retrieving File Count and Size of a folder using PnP PowerShell
Retrieving File Count and Size of a folder within a SharePoint Library using PnP PowerShell This post covers a PowerShell script that uses the PnP PowerShell module to retrieve the file count and total size of a specific folder within a SharePoint library.
#Parameters $SiteURL = "https://contoso.sharepoint.com/sites/company311" $FolderSiteRelativeURL = "Shared Documents/Test1" #Connect to PnP Online Connect-PnPOnline -Url $SiteURL -Interactive #Get the folder $Folder = Get-PnPFolder -Url $FolderSiteRelativeURL -Includes ListItemAllFields #Get the total Size of the folder - with versions Write-host "Size of the Folder:" $([Math]::Round(($Folder.
Tag: Site
posts
Getting Storage Metrics for a SharePoint site
Gaining an overview of what takes up space in a SharePoint site is crucial for monitoring large files or a significant number of versions.
Unfortunately, the storage metrics link, <siteurl>/_layouts/15/storman.aspx, won’t work for libraries with more than 5,000 files without nested folders. While this might go against information architecture principles, creating folders is an option to avoid the list view threshold error.
Here’s a PowerShell script to help you get storage metrics for your SharePoint site:
Tag: Storage Metrics
posts
Getting Storage Metrics for a SharePoint site
Gaining an overview of what takes up space in a SharePoint site is crucial for monitoring large files or a significant number of versions.
Unfortunately, the storage metrics link, <siteurl>/_layouts/15/storman.aspx, won’t work for libraries with more than 5,000 files without nested folders. While this might go against information architecture principles, creating folders is an option to avoid the list view threshold error.
Here’s a PowerShell script to help you get storage metrics for your SharePoint site:
Tag: Highlighted Content Web Part
posts
SharePoint Highlighted Content Web Part versus News Web Part: Author versus Editor
The Highlighted Content Web Part and the News Web Part in SharePoint can be used to display news on a page. Both webparts serve different purposes and have distinct features. One particular difference is the display of author in News Webpart and display of editor in the Highlighted Content Web Part.
The Highlighted Content Web Part displays editing details like editor and last updated date with the news information. Unfortunately there is no option to change it to the author name.
Tag: News WebPart
posts
SharePoint Highlighted Content Web Part versus News Web Part: Author versus Editor
The Highlighted Content Web Part and the News Web Part in SharePoint can be used to display news on a page. Both webparts serve different purposes and have distinct features. One particular difference is the display of author in News Webpart and display of editor in the Highlighted Content Web Part.
The Highlighted Content Web Part displays editing details like editor and last updated date with the news information. Unfortunately there is no option to change it to the author name.
posts
Exclude News Links from News WebPart in SharePoint Online
SharePoint Online offers the useful feature of news links to avoid duplication of news articles and promote existing posts across different sites. This is especially beneficial when news creation is enabled for various departments or directorates, allowing them to share significant news organization-wide.
However, the News WebPart might display both the news links and the original articles, resulting in duplicated content.
To manage this, you can utilize the OriginalSourceUrl column, which stores the link to the source news article.
Tag: Coalesce
posts
JSON Data Handling in Power Automate: Double Quotes
When using Power Automate action Send an Http request to SharePoint specially to send data in the body to a REST API call, for instance to create a news link from a SharePoint List Item, you might encounter issues if the body contains double quotes in the title or description. This blog post will walk you through the problem and provide solutions to handle double quotes in JSON strings.
Problem Overview Using the Send an Http request to SharePoint action to create a news link can fail if the JSON body contains double quotes.
Tag: Data Handling
posts
JSON Data Handling in Power Automate: Double Quotes
When using Power Automate action Send an Http request to SharePoint specially to send data in the body to a REST API call, for instance to create a news link from a SharePoint List Item, you might encounter issues if the body contains double quotes in the title or description. This blog post will walk you through the problem and provide solutions to handle double quotes in JSON strings.
Problem Overview Using the Send an Http request to SharePoint action to create a news link can fail if the JSON body contains double quotes.
posts
DateTime Handling in Power Automate
DateTime Handling in Power Automate Manipulating dates and times in Power Automate is a requirement at times. This post covers a few useful scenerios.
Add To Time For instance, adding a specific number of months to a date retrieved from an action using AddToTime function:
addToTime(body(‘Wait_for_an_approval_2’)?[‘completionDate’], int(body(‘Get_file_properties’)?[‘ReviewFrequency’]?[‘Value’]), ‘Month’, ‘dd/MM/yyyy HH:mm’)
Substract Time Specific number of months can be substracted from the date retrieved from an action
string(subtractFromTime(items(‘Apply_to_each’)?[‘DueDate’],1,‘Month’,‘dd/MM/yyyy HH:mm’))
Format Date Time Formatting date to a specific string format is essential otherwise update of data fields might fail because of culture differences.
posts
JSON Data Handling in Power Automate: outputs versus body
JSON Data Handling in Power Automate : outputs versus body In Power Automate, JSON data output from various actions is key to connect each other.
Accessing Action Outputs Accessing the outputs of a specific action, such as the action ‘Get file properties’, the spcific property can be accessed via the outputs, for instance file name with extension.:
outputs(‘Get_file_properties’)?[‘body/{FilenameWithExtension}’]
Referencing Action Body A streamlined way is to reference the body directly making it simpler.
Tag: News Link
posts
Power Automate: Create and Publish a News Link
This post covers how to leverage SharePoint REST API to create and publish a news link from Power Automate using the Send an Http request to SharePoint action.
Within a Power Automate flow follow the steps below to create and publish a news link details.
Send an Http request to SharePoint action renamed to Get Page Details. Site Address : site url Method : GET Uri : /_api/web/lists/GetByTitle(‘Site%20Pages’)/items(10) Parse JSON renamed to Parse Page Details JSON Add the action Parse JSON and refer to the content from previous steps
Tag: Publish Page
posts
Power Automate: Create and Publish a News Link
This post covers how to leverage SharePoint REST API to create and publish a news link from Power Automate using the Send an Http request to SharePoint action.
Within a Power Automate flow follow the steps below to create and publish a news link details.
Send an Http request to SharePoint action renamed to Get Page Details. Site Address : site url Method : GET Uri : /_api/web/lists/GetByTitle(‘Site%20Pages’)/items(10) Parse JSON renamed to Parse Page Details JSON Add the action Parse JSON and refer to the content from previous steps
Tag: SharePoint Group
posts
Power Automate: Retrieve Users from a SharePoint Group
This post covers how to leverage SharePoint REST API to get users from a SharePoint group from Power Automate using the Send an Http request to SharePoint action. In the example below a SharePoint Group has been defined for approvers of a particular process and needed to be retrieved to be assigned an approval task.
Within a Power Automate flow follow the steps below to retrieve users from a SharePoint group.
Tag: CSOM
posts
Oversight of Sharing Information in SharePoint sites using PowerShell with CSOM, REST and PnP PowerShell
Effective oversight of sharing links and sharing information are paramount to ensuring data security, compliance, and optimal collaboration experiences.
As organisations migrate to M365 environments, they inherit powerful collaboration tools that facilitate seamless sharing of documents and resources. However, without proper governance, these capabilities can lead to unintended consequences such as data breaches, compliance violations, and loss of intellectual property.
Sharing is a powerful feature for collaboration. However depending on how items, files or folders are shared, a sharing link might be created or unique permissions on these items are created.
posts
PowerShell Script to Query Unique Permissions in SharePoint
Query Unique Permissions in SharePoint using CSOM and PnP PowerShell Managing permissions in SharePoint is a critical aspect of maintaining data security and compliance within organisations. However, as SharePoint environments grow in complexity, manually auditing and managing permissions becomes increasingly challenging. To address this challenge, PowerShell scripts can be leveraged to automate the auditing process, providing administrators with valuable insights into permission structures across SharePoint sites and libraries.
What do SharePoint permissions have to do with Copilot for Microsoft 365?
Tag: SharingLinks
posts
Oversight of Sharing Information in SharePoint sites using PowerShell with CSOM, REST and PnP PowerShell
Effective oversight of sharing links and sharing information are paramount to ensuring data security, compliance, and optimal collaboration experiences.
As organisations migrate to M365 environments, they inherit powerful collaboration tools that facilitate seamless sharing of documents and resources. However, without proper governance, these capabilities can lead to unintended consequences such as data breaches, compliance violations, and loss of intellectual property.
Sharing is a powerful feature for collaboration. However depending on how items, files or folders are shared, a sharing link might be created or unique permissions on these items are created.
posts
PowerShell Script to Query Unique Permissions in SharePoint
Query Unique Permissions in SharePoint using CSOM and PnP PowerShell Managing permissions in SharePoint is a critical aspect of maintaining data security and compliance within organisations. However, as SharePoint environments grow in complexity, manually auditing and managing permissions becomes increasingly challenging. To address this challenge, PowerShell scripts can be leveraged to automate the auditing process, providing administrators with valuable insights into permission structures across SharePoint sites and libraries.
What do SharePoint permissions have to do with Copilot for Microsoft 365?
Tag: Dataverse connector
posts
Update A row action from Dataverse connector missing in Power Automate flow
Update A row action from Dataverse connector was not available to an older Power Automate.The requirement was to add ability to cancel an approval task created via action ‘Create Approval’ within 30 days as Power Automate flows timeout after 30 days. I noticed the action Update a Row in Selected Environment and decided to try it instead.
Unfortunately it threw the forbidden error for no apparent reason with no obvious permissions to grant.
Tag: Monitoring
posts
SharePoint Storage Monitoring Against Allocated Quota using PowerShell
There is limited space allocated to the tenant. To ensure business continuity and smooth ongoing operation, it is imperative to keep an eye on its usage and take relevant actions suited to the circumstances. By default a SharePoint site is allocated 25 TB by default and OneDrive for Business site is allocated 1 TB by default. These settings can be amended manually to a different quota to control SharePoint site. The script will help to proactively monitor percent used against quota for each SharePoint site.
Tag: Portals
posts
SharePoint Portals Site collections Inventory
As part of the M365 Copilot rollout , questions were raised on the /portals/Community and /portals/hub as both ‘Everyone Except External Users’ was granted access raising concerns on the content on the site. These are legacy sites and are currently inaccessible. Historically, these sites were accessible via the legacy SharePoint admin centre, however, they are not available through the modern SharePoint admin centre interface.
Thanks to Gregory Zelfond’s blog post What are all these site collections in SharePoint?
Tag: Site Collections
posts
SharePoint Portals Site collections Inventory
As part of the M365 Copilot rollout , questions were raised on the /portals/Community and /portals/hub as both ‘Everyone Except External Users’ was granted access raising concerns on the content on the site. These are legacy sites and are currently inaccessible. Historically, these sites were accessible via the legacy SharePoint admin centre, however, they are not available through the modern SharePoint admin centre interface.
Thanks to Gregory Zelfond’s blog post What are all these site collections in SharePoint?
Tag: Storage
posts
SharePoint Storage Monitoring Against Allocated Quota using PowerShell
There is limited space allocated to the tenant. To ensure business continuity and smooth ongoing operation, it is imperative to keep an eye on its usage and take relevant actions suited to the circumstances. By default a SharePoint site is allocated 25 TB by default and OneDrive for Business site is allocated 1 TB by default. These settings can be amended manually to a different quota to control SharePoint site. The script will help to proactively monitor percent used against quota for each SharePoint site.
posts
Troubleshooting SharePoint Storage Reports with PowerShell
Troubleshooting SharePoint Storage Reports with PowerShell As the amount of data stored in SharePoint grows, it becomes important to monitor and manage storage usage. In this blog post, we will explore how to generate storage reports for SharePoint sites using PowerShell. These reports will provide insights into the storage usage of sites and individual files, including file versions and the size of the recycle bin. However the reports can only give a glimpse of at least 60-90% of storage.
Tag: Update A Row Action
posts
Update A row action from Dataverse connector missing in Power Automate flow
Update A row action from Dataverse connector was not available to an older Power Automate.The requirement was to add ability to cancel an approval task created via action ‘Create Approval’ within 30 days as Power Automate flows timeout after 30 days. I noticed the action Update a Row in Selected Environment and decided to try it instead.
Unfortunately it threw the forbidden error for no apparent reason with no obvious permissions to grant.
Tag: Grouping
posts
How to Filter SharePoint Libraries to Return Less Than 5,000 Items
SharePoint Online has a list view threshold (LVT) of 5,000 items, which can cause performance issues if exceeded.
This post provides a workaround through filtering libraries/lists to stay within this limit and avoid common problems associated with large lists.
The Problem When a SharePoint library exceeds the 5,000-item threshold, various issues can arise. These include:
Inability to Browse Folders Navigating through folders becomes challenging and sometimes impossible through desktop office apps (Excel, Word,etc.
Tag: List View Threshold
posts
How to Filter SharePoint Libraries to Return Less Than 5,000 Items
SharePoint Online has a list view threshold (LVT) of 5,000 items, which can cause performance issues if exceeded.
This post provides a workaround through filtering libraries/lists to stay within this limit and avoid common problems associated with large lists.
The Problem When a SharePoint library exceeds the 5,000-item threshold, various issues can arise. These include:
Inability to Browse Folders Navigating through folders becomes challenging and sometimes impossible through desktop office apps (Excel, Word,etc.
posts
Overcoming SharePoint's List View Threshold with CAML Queries in PowerShell
Overcoming SharePoint’s List View Threshold with CAML Queries in PowerShell Encountering the list view threshold error in SharePoint when dealing with lists exceeding 5,000 items is a common challenge. Using CAML queries within PowerShell scripts offers a server-side solution to efficiently filter and retrieve data, yet is prone to the list view threshold error.
Sample script This is the sample PowerShell script querying the specified SharePoint list using CAML query.
Tag: Newslink
posts
Exclude News Links from News WebPart in SharePoint Online
SharePoint Online offers the useful feature of news links to avoid duplication of news articles and promote existing posts across different sites. This is especially beneficial when news creation is enabled for various departments or directorates, allowing them to share significant news organization-wide.
However, the News WebPart might display both the news links and the original articles, resulting in duplicated content.
To manage this, you can utilize the OriginalSourceUrl column, which stores the link to the source news article.
Tag: Choice
posts
Update Choice values of List Items in SharePoint List
Maintaining up-to-date list items, especially when dealing with choice fields, can be a daunting task sepcially after choice field values are updated. We need a way to update these old values to the correct new ones.
The Challenge SharePoint lists use choice fields to categorise items. Over time, the need to update these choice values can arise, whether due to changes in terminology, business processes, or error correction. Manually updating these values across numerous list items is not only time-consuming but also prone to human error.
Tag: Items
posts
Update Choice values of List Items in SharePoint List
#Parameters $SiteURL = “https://contoso.sharepoint.com/teams/app-ar" $ListName = “Remittances”
$dateTime = (Get-Date).toString(“dd-MM-yyyy”) $invocation = (Get-Variable MyInvocation).Value $directorypath = Split-Path $invocation.MyCommand.Path $fileName = “\RemittanceDuplicateReport-” + $dateTime + “.csv” $OutPutView = $directorypath + $fileName
Connect-PnPOnline -url $SiteURL -Interactive
$ListItems = Get-PnPListItem -List $ListName -PageSize 500 | Where {$_.FieldValues.Month -eq ‘202402’ } #Array for Results Data $DataCollection = @() ForEach($Item in $ListItems) { #Collect data $Data = New-Object PSObject -Property @{ SourceRef = $Item[“DocumentSourceReference”] GroupingRef = $Item[“GroupingReference”] Provider = $Item[“Provider”].
Tag: Choice type
posts
Find orphaned choice values in SharePoint list/libraries using PowerShell
Find orphaned choice values in SharePoint list/libraries using PowerShell One common issue is orphaned choice values in SharePoint lists which may affect subsequent update to the list item. This can occur when list items contain values that are no longer valid according to the list’s choice field values. This post covers a PowerShell script to identify these orphaned choice values in SharePoint lists to either update them or add them back to the list of choice field values.
Tag: Copy Actions
posts
Power Automate copy actions across different environments
Power Automate copy actions across different environments If an action is copied from a different environment, the action is not avaible from the My Clipboard, if not you are presented with the following message only.
Save time and paste your most-used Flow code snippets here.
Select the ellipsis menu on any trigger or action, then choose Copy to my Clipboard.
Note: Pasted code clears each time you log out of Power Automate.
Tag: Branding
posts
Updating SharePoint Site Logo and Thumbnail with PowerShell
Update SharePoint Site Logo and Thumbnail with PowerShell In SharePoint Online sites, the distinction between the Site Logo and Site Thumbnail is crucial. The site logo appears in the site header, while the site thumbnail is used in search results, site cards, file copying/moving, and other areas.
Both site logo and thumbnail are part of SharePoint branding. This post covers how to update the site logo and thumbnail across multiple SharePoint sites within a hub using PowerShell.
Tag: Site Logo
posts
Updating SharePoint Site Logo and Thumbnail with PowerShell
Update SharePoint Site Logo and Thumbnail with PowerShell In SharePoint Online sites, the distinction between the Site Logo and Site Thumbnail is crucial. The site logo appears in the site header, while the site thumbnail is used in search results, site cards, file copying/moving, and other areas.
Both site logo and thumbnail are part of SharePoint branding. This post covers how to update the site logo and thumbnail across multiple SharePoint sites within a hub using PowerShell.
Tag: Thumbnail
posts
Updating SharePoint Site Logo and Thumbnail with PowerShell
Update SharePoint Site Logo and Thumbnail with PowerShell In SharePoint Online sites, the distinction between the Site Logo and Site Thumbnail is crucial. The site logo appears in the site header, while the site thumbnail is used in search results, site cards, file copying/moving, and other areas.
Both site logo and thumbnail are part of SharePoint branding. This post covers how to update the site logo and thumbnail across multiple SharePoint sites within a hub using PowerShell.
posts
PowerShell: Set and Remove SharePoint Site Thumbnail Logo
For many organizations, maintaining a consistent brand identity across SharePoint sites is crucial. The distinction between “Site Logo” and “Site Logo Thumbnail” is essential, as they serve different purposes across SharePoint and the Microsoft 365 ecosystem. The site logo appears in the site header, while the site logo thumbnail is used in search results, site cards, when copying/moving files, and other critical areas. It plays a vital role in helping end users differentiate between various SharePoint Online (SPO) sites and Teams.
Tag: Content Type
posts
Update Content Type of List Items in SharePoint List
Update Content Type of List Items in SharePoint List A content type in SharePoint is a reusable collection of metadata (columns) allowing to organise, manage and handle content in a consistent way. If the content type of files and items need to be updated because of required changes how particular content have to be managed, it can be a daunting laborious task if done manually. PowerShell can help automating the update of content types and corresponding metadata (columns).
Tag: Data Management
posts
Update Content Type of List Items in SharePoint List
Update Content Type of List Items in SharePoint List A content type in SharePoint is a reusable collection of metadata (columns) allowing to organise, manage and handle content in a consistent way. If the content type of files and items need to be updated because of required changes how particular content have to be managed, it can be a daunting laborious task if done manually. PowerShell can help automating the update of content types and corresponding metadata (columns).
Tag: Data Import
posts
Importing Dates and Numbers from Excel file into SharePoint list with Power Automate
Importing Dates and Numbers from Excel file into SharePoint list with Power Automate Transferring data from Excel to SharePoint lists can encounter format issues, especially with datetime and number fields. This post covers solutions to some challenges particularly related to dates and numbers.
The flow is quite simple with an action to read contents from excel file and an action to create items into a sharepoint list.
Handling DateTime Fields When importing datetime data with the “List rows present in a table” action from the “Excel Online for Business” connector, you might encounter format related errors.
Tag: Excel Business Online
posts
Importing Dates and Numbers from Excel file into SharePoint list with Power Automate
Importing Dates and Numbers from Excel file into SharePoint list with Power Automate Transferring data from Excel to SharePoint lists can encounter format issues, especially with datetime and number fields. This post covers solutions to some challenges particularly related to dates and numbers.
The flow is quite simple with an action to read contents from excel file and an action to create items into a sharepoint list.
Handling DateTime Fields When importing datetime data with the “List rows present in a table” action from the “Excel Online for Business” connector, you might encounter format related errors.
Tag: Locked Files
posts
Handling Locked Office Files issue In Power Automate
Handling Locked Office Files issue In Power Automate Inspired by the workaround described by Pieter Veenstra System Updates in SharePoint from Power Automate using the ValidateUpdateListItem endpoint to help with the locked file issue, this post covers file version creation as well.
File Locked Issue File lock issues in Power Automate can occur due to:
The file being opened by a user. The file being updated by a Power Automate flow, which may take up to 6 minutes to release the lock.
Tag: validateUpdateListItem
posts
Handling Locked Office Files issue In Power Automate
Handling Locked Office Files issue In Power Automate Inspired by the workaround described by Pieter Veenstra System Updates in SharePoint from Power Automate using the ValidateUpdateListItem endpoint to help with the locked file issue, this post covers file version creation as well.
File Locked Issue File lock issues in Power Automate can occur due to:
The file being opened by a user. The file being updated by a Power Automate flow, which may take up to 6 minutes to release the lock.
Tag: MultiLine Text field
posts
Power Automate updating multi line field with more than 255 characters
Power Automate flow succeeded despite failure to update multi line text field within a SharePoint Library Updating multi-line text fields in a SharePoint Library from Power Automate flows, especially when the content exceeds 255 characters might fail if the field is not updated to allow unlimited length. This can cause workflows to fail silently.
In a recent scenario, an action was added to a Power Automate flow to update a SharePoint Library’s multi-line text field named ‘ErrorLog’ with error details captured during the flow’s execution.
Tag: DateTime
posts
DateTime Handling in Power Automate
DateTime Handling in Power Automate Manipulating dates and times in Power Automate is a requirement at times. This post covers a few useful scenerios.
Add To Time For instance, adding a specific number of months to a date retrieved from an action using AddToTime function:
addToTime(body(‘Wait_for_an_approval_2’)?[‘completionDate’], int(body(‘Get_file_properties’)?[‘ReviewFrequency’]?[‘Value’]), ‘Month’, ‘dd/MM/yyyy HH:mm’)
Substract Time Specific number of months can be substracted from the date retrieved from an action
string(subtractFromTime(items(‘Apply_to_each’)?[‘DueDate’],1,‘Month’,‘dd/MM/yyyy HH:mm’))
Format Date Time Formatting date to a specific string format is essential otherwise update of data fields might fail because of culture differences.
Tag: Encodian
posts
Power Automate fix for InvalidTemplate: Unable to process template language expressions
Power Automate fix for InvalidTemplate: Unable to process template language expressions InvalidTemplate. Unable to process template language expressions in action can happen with actions within PowerAutomate. In my scenerio I added the encodian action ‘Convert_to_PDF’ and was resubmitting a flow for testing and kept getting the error message.
InvalidTemplate. Unable to process template language expressions in action ‘Convert_to_PDF’ inputs at line ‘0’ and column ‘0’: ‘The template language expression ‘json(decodeBase64(secrets(‘X-MS-APIM-Tokens’)))[’$connections’][‘shared_encodiandocumentmanager’][‘connectionId’]’ cannot be evaluated because property ‘shared_encodiandocumentmanager’ doesn’t exist, available properties are ‘shared_sharepointonline, shared_office365, shared_approvals, shared_teams_1’.
Tag: InvalidTemplate
posts
Power Automate fix for InvalidTemplate: Unable to process template language expressions
Power Automate fix for InvalidTemplate: Unable to process template language expressions InvalidTemplate. Unable to process template language expressions in action can happen with actions within PowerAutomate. In my scenerio I added the encodian action ‘Convert_to_PDF’ and was resubmitting a flow for testing and kept getting the error message.
InvalidTemplate. Unable to process template language expressions in action ‘Convert_to_PDF’ inputs at line ‘0’ and column ‘0’: ‘The template language expression ‘json(decodeBase64(secrets(‘X-MS-APIM-Tokens’)))[’$connections’][‘shared_encodiandocumentmanager’][‘connectionId’]’ cannot be evaluated because property ‘shared_encodiandocumentmanager’ doesn’t exist, available properties are ‘shared_sharepointonline, shared_office365, shared_approvals, shared_teams_1’.
Tag: Major Version
posts
Publishing Major Versions of Files in SharePoint with Power Automate
Publishing Major Versions of Files in SharePoint with Power Automate This post covers how to publish major versions for Office documents (Word, Excel, or PowerPoint) in SharePoint using Power Automate, especially after an approval task using the checkin and publish REST endpoints. This applies to libraries having minor versions enabled
Just for context, a Power Automate approval flow with trigger for a selected file needed publishing for the selected file as major version after being approved.
Tag: ananke theme
posts
Enable Giscus for Hugo Blog
Enable Giscus for Hugo Blog I recently switched to Giscus for comments on my blog post, inspired by its popularity among other bloggers. Giscus, a commenting system powered by GitHub Discussions, offers a seamless way to engage with readers. If you’re using Hugo for your blog hosted on GitHub, linking Giscus to your posts is straightforward.
Note: The following setup guide is based on instructions generated by GitHub Copilot, which I successfully followed to integrate Giscus into my blog.
Tag: Blog site
posts
Enable Giscus for Hugo Blog
Enable Giscus for Hugo Blog I recently switched to Giscus for comments on my blog post, inspired by its popularity among other bloggers. Giscus, a commenting system powered by GitHub Discussions, offers a seamless way to engage with readers. If you’re using Hugo for your blog hosted on GitHub, linking Giscus to your posts is straightforward.
Note: The following setup guide is based on instructions generated by GitHub Copilot, which I successfully followed to integrate Giscus into my blog.
Tag: Comments
posts
Enable Giscus for Hugo Blog
Enable Giscus for Hugo Blog I recently switched to Giscus for comments on my blog post, inspired by its popularity among other bloggers. Giscus, a commenting system powered by GitHub Discussions, offers a seamless way to engage with readers. If you’re using Hugo for your blog hosted on GitHub, linking Giscus to your posts is straightforward.
Note: The following setup guide is based on instructions generated by GitHub Copilot, which I successfully followed to integrate Giscus into my blog.
Tag: Giscus
posts
Enable Giscus for Hugo Blog
Enable Giscus for Hugo Blog I recently switched to Giscus for comments on my blog post, inspired by its popularity among other bloggers. Giscus, a commenting system powered by GitHub Discussions, offers a seamless way to engage with readers. If you’re using Hugo for your blog hosted on GitHub, linking Giscus to your posts is straightforward.
Note: The following setup guide is based on instructions generated by GitHub Copilot, which I successfully followed to integrate Giscus into my blog.
Tag: Github
posts
Enable Giscus for Hugo Blog
Enable Giscus for Hugo Blog I recently switched to Giscus for comments on my blog post, inspired by its popularity among other bloggers. Giscus, a commenting system powered by GitHub Discussions, offers a seamless way to engage with readers. If you’re using Hugo for your blog hosted on GitHub, linking Giscus to your posts is straightforward.
Note: The following setup guide is based on instructions generated by GitHub Copilot, which I successfully followed to integrate Giscus into my blog.
posts
Embed GitHub Gist in Hugo posts
Embed GitHub Gist in Hugo posts I was approached by Divya Akula with a suggestion to use a link to GitHub for my script and I really bought in the idea because I used to do it on Wordpress. I started googling and trying out solutions which did not work and messed up my blog repo. Fortunately being MVP I have access to GitHub Copilot and asked Copilot with a simple prompt which gave me a simple straight forward looking solution.
posts
A Guide to Contributing to PnP PowerShell
A Guide to Contributing to PnP PowerShell Contributing to PnP PowerShell is a rewarding journey. Whether you’re a seasoned contributor or a beginner, this guide aims to simplify the process and keep it handy for your next contribution.
Prerequisites To set up the development to start hacking on PnP PowerShell, install the following
Install Git Install PowerShell 7 Install Visual Code or Visual Studio Code Install .NET SDK 6 (https://dotnet.microsoft.com/download/dotnet/6.0) Forking and cloning First things first, make a copy of the repository to start working on your changes.
posts
Ms Build AI Day Keynote on the 19 Oct 2023
MS Build AI Day Keynote by Scott Hanselman On October 19, 2023, the inaugural MS Build AI Day at Excel London in Custom House marked a pivotal moment for the world of AI. As an attendee, I had the privilege of witnessing a groundbreaking keynote session led by none other than Scott Hanselman. Titled “Navigating the AI Landscape,” the keynote, introduced by Michael Wignall, the lead for MS Build, set the stage for an eventful day filled with insights, connections, and hands-on experiences.
posts
Get a CSV of all my pull requests from Github using Github CLI and PowerShell
Github does not provide an easy way to export all your pull requests for review or sharing with anyone. Below is a great post to show how to do it using BASH.
GitHub: Get a CSV containing my pull requests (PRs)
If you are using windows machine, PowerShell is your friend.
Install GitHub CLI via command line
winget install --id GitHub.cli Enter Y to the question
Do you agree to all the source agreements terms?
Tag: Account Number
posts
Column Validation for Sort Code and Account Number in SharePoint
Column Validation for Sort Code and Account Number in SharePoint Column validation provides a solution to validate data for data integrity. This post covers column validation for Sort Code and Account Number in SharePoint.
Validation for Sort Code =AND(LEN([Sort Code])=6,ISNUMBER([Sort Code]+0))
The above formula checks
The length of the sort code must be exactly 6 digits. The sort code must be a number. Validation for Account Number =AND(LEN([Account Number])=8,ISNUMBER([Account Number]+0))
Tag: AccountNumbeSortCode
posts
Column Validation for Sort Code and Account Number in SharePoint
Column Validation for Sort Code and Account Number in SharePoint Column validation provides a solution to validate data for data integrity. This post covers column validation for Sort Code and Account Number in SharePoint.
Validation for Sort Code =AND(LEN([Sort Code])=6,ISNUMBER([Sort Code]+0))
The above formula checks
The length of the sort code must be exactly 6 digits. The sort code must be a number. Validation for Account Number =AND(LEN([Account Number])=8,ISNUMBER([Account Number]+0))
Tag: Column Validation
posts
Column Validation for Sort Code and Account Number in SharePoint
Column Validation for Sort Code and Account Number in SharePoint Column validation provides a solution to validate data for data integrity. This post covers column validation for Sort Code and Account Number in SharePoint.
Validation for Sort Code =AND(LEN([Sort Code])=6,ISNUMBER([Sort Code]+0))
The above formula checks
The length of the sort code must be exactly 6 digits. The sort code must be a number. Validation for Account Number =AND(LEN([Account Number])=8,ISNUMBER([Account Number]+0))
Tag: Sort Code
posts
Column Validation for Sort Code and Account Number in SharePoint
Column Validation for Sort Code and Account Number in SharePoint Column validation provides a solution to validate data for data integrity. This post covers column validation for Sort Code and Account Number in SharePoint.
Validation for Sort Code =AND(LEN([Sort Code])=6,ISNUMBER([Sort Code]+0))
The above formula checks
The length of the sort code must be exactly 6 digits. The sort code must be a number. Validation for Account Number =AND(LEN([Account Number])=8,ISNUMBER([Account Number]+0))
Tag: CSV
posts
Handling Special Characters within CSV with PowerShell using Encoding
When working with CSV files in PowerShell with special characters you might encounter an issue where special characters (e.g., em dashes —) are incorrectly represented as a question mark inside a diamond �. This common issue arises due to PowerShell’s default encoding not matching the encoding used in the CSV file.
Problem Statement The root of this problem lies in the encoding mismatch. Encoding is a method of converting characters into a format that can be easily stored or transmitted.
Tag: Encoding
posts
Handling Special Characters within CSV with PowerShell using Encoding
When working with CSV files in PowerShell with special characters you might encounter an issue where special characters (e.g., em dashes —) are incorrectly represented as a question mark inside a diamond �. This common issue arises due to PowerShell’s default encoding not matching the encoding used in the CSV file.
Problem Statement The root of this problem lies in the encoding mismatch. Encoding is a method of converting characters into a format that can be easily stored or transmitted.
Tag: Special Characters
posts
Handling Special Characters within CSV with PowerShell using Encoding
When working with CSV files in PowerShell with special characters you might encounter an issue where special characters (e.g., em dashes —) are incorrectly represented as a question mark inside a diamond �. This common issue arises due to PowerShell’s default encoding not matching the encoding used in the CSV file.
Problem Statement The root of this problem lies in the encoding mismatch. Encoding is a method of converting characters into a format that can be easily stored or transmitted.
Tag: SharePoint Framework (SPFx)
posts
Find SharePoint Framework (SPFx) Packages with PowerShell in Tenant and Site Collection App Catalogs
Find SharePoint Framework (SPFx) Packages with PowerShell in Tenant and Site Collection App Catalogs This post covers a PowerShell script to generate an inventory of SPFx installations within your SharePoint Online environment which will help you maintain oversight of your SPFx solutions, ensuring they are up-to-date and compliant. The script was particularly useful in pinpointing sites within the tenant where third-party applications, specifically an analytics SPFx component, were deployed. This was crucial for ensuring that data collection was confined to designated sites, such as the intranet in my case study.
Tag: DOTX
posts
Streamlining SharePoint Template Usage: A Guide to Opening DOTX Files as DOCX
Streamlining SharePoint Template Usage: A Guide to Opening DOTX Files as DOCX Encountering issues with opening “.dotx” templates in SharePoint is a common scenario that can disrupt your workflow. Typically, when you attempt to open a “.dotx” file in SharePoint, it opens in edit mode for the template itself, rather than generating a new “.docx” document as expected. This behavior diverges from the experience in Windows File Explorer and can hinder productivity.
Tag: Office Templates
posts
Streamlining SharePoint Template Usage: A Guide to Opening DOTX Files as DOCX
Streamlining SharePoint Template Usage: A Guide to Opening DOTX Files as DOCX Encountering issues with opening “.dotx” templates in SharePoint is a common scenario that can disrupt your workflow. Typically, when you attempt to open a “.dotx” file in SharePoint, it opens in edit mode for the template itself, rather than generating a new “.docx” document as expected. This behavior diverges from the experience in Windows File Explorer and can hinder productivity.
Tag: Productivity
posts
Streamlining SharePoint Template Usage: A Guide to Opening DOTX Files as DOCX
Streamlining SharePoint Template Usage: A Guide to Opening DOTX Files as DOCX Encountering issues with opening “.dotx” templates in SharePoint is a common scenario that can disrupt your workflow. Typically, when you attempt to open a “.dotx” file in SharePoint, it opens in edit mode for the template itself, rather than generating a new “.docx” document as expected. This behavior diverges from the experience in Windows File Explorer and can hinder productivity.
Tag: Workarounds
posts
Streamlining SharePoint Template Usage: A Guide to Opening DOTX Files as DOCX
Streamlining SharePoint Template Usage: A Guide to Opening DOTX Files as DOCX Encountering issues with opening “.dotx” templates in SharePoint is a common scenario that can disrupt your workflow. Typically, when you attempt to open a “.dotx” file in SharePoint, it opens in edit mode for the template itself, rather than generating a new “.docx” document as expected. This behavior diverges from the experience in Windows File Explorer and can hinder productivity.
Tag: deleted flows
posts
Power Automate - Restore deleted flows
I accidentally deleted a power automate flow and needed a way of restoring it. I stumbled on Restore deleted flows to restore the deleted flows.
However the action List Flows as Admin (v2) was not returning all the flows, hence the deleted flow was missing. If it happens , enables the pagination setting of the action withing settings tab and set the threshold to ensure the number is more than number of flows you have in the environment.
Tag: restore
posts
Power Automate - Restore deleted flows
I accidentally deleted a power automate flow and needed a way of restoring it. I stumbled on Restore deleted flows to restore the deleted flows.
However the action List Flows as Admin (v2) was not returning all the flows, hence the deleted flow was missing. If it happens , enables the pagination setting of the action withing settings tab and set the threshold to ensure the number is more than number of flows you have in the environment.
Tag: Import
posts
Azure DevOps Powerplatform Deployment error due to timing issue
If it takes too long to deploy the solution, time out issues might occur. In this instance consider checking and updating the MaxAsyncWaitTime. Its value has been increased to 120 which means the deployment process will wait up to 120 seconds (or 2 minutes) for asynchronous operations such as import power platform solution to complete fixing the timing out issue.
The fix is to amend the MaxAsyncWaitTime to 120
- task: PowerPlatformImportSolution@2 inputs: authenticationType: PowerPlatformSPN PowerPlatformSPN: 'powerplatform-t-connection' Environment: 'https://contoso-st.
Tag: Timing Issue
posts
Azure DevOps Powerplatform Deployment error due to timing issue
If it takes too long to deploy the solution, time out issues might occur. In this instance consider checking and updating the MaxAsyncWaitTime. Its value has been increased to 120 which means the deployment process will wait up to 120 seconds (or 2 minutes) for asynchronous operations such as import power platform solution to complete fixing the timing out issue.
The fix is to amend the MaxAsyncWaitTime to 120
- task: PowerPlatformImportSolution@2 inputs: authenticationType: PowerPlatformSPN PowerPlatformSPN: 'powerplatform-t-connection' Environment: 'https://contoso-st.
Tag: YAML
posts
Azure DevOps Powerplatform Deployment error due to timing issue
If it takes too long to deploy the solution, time out issues might occur. In this instance consider checking and updating the MaxAsyncWaitTime. Its value has been increased to 120 which means the deployment process will wait up to 120 seconds (or 2 minutes) for asynchronous operations such as import power platform solution to complete fixing the timing out issue.
The fix is to amend the MaxAsyncWaitTime to 120
- task: PowerPlatformImportSolution@2 inputs: authenticationType: PowerPlatformSPN PowerPlatformSPN: 'powerplatform-t-connection' Environment: 'https://contoso-st.
posts
Converting to Modern YAML Pipeline: Application Lifecycle Management in Azure DevOps for Power Platform
Converting to Modern YAML Pipeline: Application Lifecycle Management in Azure DevOps for Power Platform There are loads of posts explaining Application Lifecycle Management for the Power Platform using Azure DevOps most using the graphical classical pipeline. The latest post I read on this is Application Lifecycle Management for the Power Platform using Azure DevOps by Luise Freese which is brilliant.
Please read article covering difference between YAML and Classic UI to explain why you may want the modern YAML pipeline.
Tag: Conditional Access
posts
Manage SharePoint Premium - SharePoint Advanced Management Settings Using PowerShell to protect data in M365 Copilot Rollout
Manage SharePoint Premium - SharePoint Advanced Management Settings Using PowerShell to protect data in M365 Copilot Rollout SharePoint Premium - SharePoint Advanced Management offers features to help prevent data oversharing and accidental leaks, which is crucial for a successful rollout of M365 Copilot. This guide will show you how to manage these settings using PowerShell.
For an overview, read the Microsoft SharePoint Premium - SharePoint Advanced Management overview.
This post covers how to manage SharePoint Premium - SharePoint Advanced Management settings at both the tenant and site level using PowerShell.
Tag: oversharing
posts
Manage SharePoint Premium - SharePoint Advanced Management Settings Using PowerShell to protect data in M365 Copilot Rollout
Manage SharePoint Premium - SharePoint Advanced Management Settings Using PowerShell to protect data in M365 Copilot Rollout SharePoint Premium - SharePoint Advanced Management offers features to help prevent data oversharing and accidental leaks, which is crucial for a successful rollout of M365 Copilot. This guide will show you how to manage these settings using PowerShell.
For an overview, read the Microsoft SharePoint Premium - SharePoint Advanced Management overview.
This post covers how to manage SharePoint Premium - SharePoint Advanced Management settings at both the tenant and site level using PowerShell.
Tag: SharePoint Advanced Management
posts
Manage SharePoint Premium - SharePoint Advanced Management Settings Using PowerShell to protect data in M365 Copilot Rollout
Manage SharePoint Premium - SharePoint Advanced Management Settings Using PowerShell to protect data in M365 Copilot Rollout SharePoint Premium - SharePoint Advanced Management offers features to help prevent data oversharing and accidental leaks, which is crucial for a successful rollout of M365 Copilot. This guide will show you how to manage these settings using PowerShell.
For an overview, read the Microsoft SharePoint Premium - SharePoint Advanced Management overview.
This post covers how to manage SharePoint Premium - SharePoint Advanced Management settings at both the tenant and site level using PowerShell.
Tag: SharePoint Premium
posts
Manage SharePoint Premium - SharePoint Advanced Management Settings Using PowerShell to protect data in M365 Copilot Rollout
Manage SharePoint Premium - SharePoint Advanced Management Settings Using PowerShell to protect data in M365 Copilot Rollout SharePoint Premium - SharePoint Advanced Management offers features to help prevent data oversharing and accidental leaks, which is crucial for a successful rollout of M365 Copilot. This guide will show you how to manage these settings using PowerShell.
For an overview, read the Microsoft SharePoint Premium - SharePoint Advanced Management overview.
This post covers how to manage SharePoint Premium - SharePoint Advanced Management settings at both the tenant and site level using PowerShell.
Tag: Syntex
posts
Manage SharePoint Premium - SharePoint Advanced Management Settings Using PowerShell to protect data in M365 Copilot Rollout
Manage SharePoint Premium - SharePoint Advanced Management Settings Using PowerShell to protect data in M365 Copilot Rollout SharePoint Premium - SharePoint Advanced Management offers features to help prevent data oversharing and accidental leaks, which is crucial for a successful rollout of M365 Copilot. This guide will show you how to manage these settings using PowerShell.
For an overview, read the Microsoft SharePoint Premium - SharePoint Advanced Management overview.
This post covers how to manage SharePoint Premium - SharePoint Advanced Management settings at both the tenant and site level using PowerShell.
Tag: Managed Solution
posts
Guide to Preparing setting files for Power Platform managed solution deployment
Guide to Preparing setting files for Power Platform managed solution deployment This guide will walk you through the process of creating a settings file for Power Platform managed solution deployment. Refer to the posts for more details to set up Application Lifecycle Management (ALM) for power platform: Power Platform ALM & Pipelines w/ Matt Devaney and Converting to Modern YAML Pipeline: Application Lifecycle Management in Azure DevOps for Power Platform for detailed steps for ALM for power platform solutions.
posts
Power Platform Managed Solution Deployment with Connection References - Allow customisations
Power Platform Managed Solution Deployment with Connection References - Allow customisations This article explores the challenges and solutions associated with Power Platform managed solution deployment, specifically focusing on connection references and the “Allow Customisations” property.
Refer to the posts for more details to set up Application Lifecycle Management (ALM) for power platform: Power Platform ALM & Pipelines w/ Matt Devaney and Converting to Modern YAML Pipeline: Application Lifecycle Management in Azure DevOps for Power Platform
Tag: setting file
posts
Guide to Preparing setting files for Power Platform managed solution deployment
Guide to Preparing setting files for Power Platform managed solution deployment This guide will walk you through the process of creating a settings file for Power Platform managed solution deployment. Refer to the posts for more details to set up Application Lifecycle Management (ALM) for power platform: Power Platform ALM & Pipelines w/ Matt Devaney and Converting to Modern YAML Pipeline: Application Lifecycle Management in Azure DevOps for Power Platform for detailed steps for ALM for power platform solutions.
Tag: Digital Signature
posts
Resolving the 'PnP PowerShell Not Digitally Signed' Issue
Resolving the ‘PnP PowerShell Not Digitally Signed’ Issue If you’ve recently upgraded PnP PowerShell to the latest nightly build and are encountering errors when trying to execute any PnP PowerShell cmdlets, this guide is for you.
PS C:\Users\RAuckloo> connect-pnponline -url https://contoso-admin.sharepoint.com -Interactive connect-pnponline: The 'connect-pnponline' command was found in the module 'PnP. PowerShell', but the module could not be loaded due to the following error: [Errors occurred while loading the format data file: \\contoso-it.
Tag: Execution Policy
posts
Resolving the 'PnP PowerShell Not Digitally Signed' Issue
Resolving the ‘PnP PowerShell Not Digitally Signed’ Issue If you’ve recently upgraded PnP PowerShell to the latest nightly build and are encountering errors when trying to execute any PnP PowerShell cmdlets, this guide is for you.
PS C:\Users\RAuckloo> connect-pnponline -url https://contoso-admin.sharepoint.com -Interactive connect-pnponline: The 'connect-pnponline' command was found in the module 'PnP. PowerShell', but the module could not be loaded due to the following error: [Errors occurred while loading the format data file: \\contoso-it.
Tag: Get File count
posts
Counting Files and folders within SharePoint Libraries using PnP PowerShell
Counting Files and Folders within SharePoint Libraries using PnP PowerShell This post shows a PowerShell script using PnP PowerShell module to count the number of files and folders within a SharePoint library. It might be useful doing an inventory of file count.
$SiteURL = "Counting Files within a SharePoint Library using PnP PowerShell" # Generate a unique log file name using today's date $dateTime = (Get-Date).toString("dd-MM-yyyy") $invocation = (Get-Variable MyInvocation).Value $directorypath = Split-Path $invocation.
Tag: Get File count and size
posts
Retrieving File Count and Size of a folder using PnP PowerShell
Retrieving File Count and Size of a folder within a SharePoint Library using PnP PowerShell This post covers a PowerShell script that uses the PnP PowerShell module to retrieve the file count and total size of a specific folder within a SharePoint library.
#Parameters $SiteURL = "https://contoso.sharepoint.com/sites/company311" $FolderSiteRelativeURL = "Shared Documents/Test1" #Connect to PnP Online Connect-PnPOnline -Url $SiteURL -Interactive #Get the folder $Folder = Get-PnPFolder -Url $FolderSiteRelativeURL -Includes ListItemAllFields #Get the total Size of the folder - with versions Write-host "Size of the Folder:" $([Math]::Round(($Folder.
Tag: Get Site Id
posts
Retrieving SiteId from Microsoft Graph for Subsequent API Calls
Retrieving SiteId from Microsoft Graph for Subsequent API Calls This post offers an option to retrieve a SiteId from Microsoft Graph using PnP PowerShell. This can be particularly useful when making further API calls that require the SiteId.
$siteurl = "https://contoso.sharepoint.com/sites/Company311" Connect-PnPOnline -url $siteurl -interactive # for the site url https://contoso-admin.sharepoint.com/teams/app-m365 # Extract the domain and site name $uri = New-Object System.Uri($siteurl) $domain = $uri.Host $siteName = $uri.AbsolutePath # Construct the new URL $RestMethodUrl = "v1.
Tag: Get-PnPFolderStorageMetric
posts
Retrieving File Count and Size of a folder using PnP PowerShell
Retrieving File Count and Size of a folder within a SharePoint Library using PnP PowerShell This post covers a PowerShell script that uses the PnP PowerShell module to retrieve the file count and total size of a specific folder within a SharePoint library.
#Parameters $SiteURL = "https://contoso.sharepoint.com/sites/company311" $FolderSiteRelativeURL = "Shared Documents/Test1" #Connect to PnP Online Connect-PnPOnline -Url $SiteURL -Interactive #Get the folder $Folder = Get-PnPFolder -Url $FolderSiteRelativeURL -Includes ListItemAllFields #Get the total Size of the folder - with versions Write-host "Size of the Folder:" $([Math]::Round(($Folder.
Tag: git
posts
Overcoming challenges with Azure DevOps Pipelines using Self-Hosted Build Agents for Power Platform Managed Solutions
Overcoming Challenges with Azure DevOps Pipelines using Self-Hosted Build Agents for Power Platform Managed Solutions Application Lifecycle Management (ALM) for Power Platform solutions can be effectively managed using Azure DevOps, providing a robust framework for automating deployments, version control, and continuous integration and delivery, thereby enhancing productivity and reducing manual errors. Refer to the posts for more details: Power Platform ALM & Pipelines w/ Matt Devaney and Converting to Modern YAML Pipeline: Application Lifecycle Management in Azure DevOps for Power Platform
posts
Embed GitHub Gist in Hugo posts
Embed GitHub Gist in Hugo posts I was approached by Divya Akula with a suggestion to use a link to GitHub for my script and I really bought in the idea because I used to do it on Wordpress. I started googling and trying out solutions which did not work and messed up my blog repo. Fortunately being MVP I have access to GitHub Copilot and asked Copilot with a simple prompt which gave me a simple straight forward looking solution.
posts
A Guide to Contributing to PnP PowerShell
A Guide to Contributing to PnP PowerShell Contributing to PnP PowerShell is a rewarding journey. Whether you’re a seasoned contributor or a beginner, this guide aims to simplify the process and keep it handy for your next contribution.
Prerequisites To set up the development to start hacking on PnP PowerShell, install the following
Install Git Install PowerShell 7 Install Visual Code or Visual Studio Code Install .NET SDK 6 (https://dotnet.microsoft.com/download/dotnet/6.0) Forking and cloning First things first, make a copy of the repository to start working on your changes.
Tag: git checkout
posts
Overcoming challenges with Azure DevOps Pipelines using Self-Hosted Build Agents for Power Platform Managed Solutions
Overcoming Challenges with Azure DevOps Pipelines using Self-Hosted Build Agents for Power Platform Managed Solutions Application Lifecycle Management (ALM) for Power Platform solutions can be effectively managed using Azure DevOps, providing a robust framework for automating deployments, version control, and continuous integration and delivery, thereby enhancing productivity and reducing manual errors. Refer to the posts for more details: Power Platform ALM & Pipelines w/ Matt Devaney and Converting to Modern YAML Pipeline: Application Lifecycle Management in Azure DevOps for Power Platform
Tag: git fetch
posts
Overcoming challenges with Azure DevOps Pipelines using Self-Hosted Build Agents for Power Platform Managed Solutions
Overcoming Challenges with Azure DevOps Pipelines using Self-Hosted Build Agents for Power Platform Managed Solutions Application Lifecycle Management (ALM) for Power Platform solutions can be effectively managed using Azure DevOps, providing a robust framework for automating deployments, version control, and continuous integration and delivery, thereby enhancing productivity and reducing manual errors. Refer to the posts for more details: Power Platform ALM & Pipelines w/ Matt Devaney and Converting to Modern YAML Pipeline: Application Lifecycle Management in Azure DevOps for Power Platform
Tag: git switch
posts
Overcoming challenges with Azure DevOps Pipelines using Self-Hosted Build Agents for Power Platform Managed Solutions
Overcoming Challenges with Azure DevOps Pipelines using Self-Hosted Build Agents for Power Platform Managed Solutions Application Lifecycle Management (ALM) for Power Platform solutions can be effectively managed using Azure DevOps, providing a robust framework for automating deployments, version control, and continuous integration and delivery, thereby enhancing productivity and reducing manual errors. Refer to the posts for more details: Power Platform ALM & Pipelines w/ Matt Devaney and Converting to Modern YAML Pipeline: Application Lifecycle Management in Azure DevOps for Power Platform
Tag: managed identity
posts
Overcoming challenges with Azure DevOps Pipelines using Self-Hosted Build Agents for Power Platform Managed Solutions
Overcoming Challenges with Azure DevOps Pipelines using Self-Hosted Build Agents for Power Platform Managed Solutions Application Lifecycle Management (ALM) for Power Platform solutions can be effectively managed using Azure DevOps, providing a robust framework for automating deployments, version control, and continuous integration and delivery, thereby enhancing productivity and reducing manual errors. Refer to the posts for more details: Power Platform ALM & Pipelines w/ Matt Devaney and Converting to Modern YAML Pipeline: Application Lifecycle Management in Azure DevOps for Power Platform
Tag: self-hosted Agents
posts
Overcoming challenges with Azure DevOps Pipelines using Self-Hosted Build Agents for Power Platform Managed Solutions
Overcoming Challenges with Azure DevOps Pipelines using Self-Hosted Build Agents for Power Platform Managed Solutions Application Lifecycle Management (ALM) for Power Platform solutions can be effectively managed using Azure DevOps, providing a robust framework for automating deployments, version control, and continuous integration and delivery, thereby enhancing productivity and reducing manual errors. Refer to the posts for more details: Power Platform ALM & Pipelines w/ Matt Devaney and Converting to Modern YAML Pipeline: Application Lifecycle Management in Azure DevOps for Power Platform
Tag: SharePoint Restricted Search
posts
Restrict certain SharePoint sites from tenant search and M365 Copilot using PowerShell
Excluding certain SharePoint sites from search would mean the contents from the excluded sites won’t be available to M365 tenant search and M365 Copilot using Restricted SharePoint Search feature.
The downsides using this feature are:
Limited Findability: By excluding certain SharePoint sites from search, you limit the findability of data. Users would need to know the specific sites where the data resides in order to search for it. This can hinder efficient data retrieval and records management.
Tag: Customizations
posts
Power Platform Managed Solution Deployment with Connection References - Allow customisations
Power Platform Managed Solution Deployment with Connection References - Allow customisations This article explores the challenges and solutions associated with Power Platform managed solution deployment, specifically focusing on connection references and the “Allow Customisations” property.
Refer to the posts for more details to set up Application Lifecycle Management (ALM) for power platform: Power Platform ALM & Pipelines w/ Matt Devaney and Converting to Modern YAML Pipeline: Application Lifecycle Management in Azure DevOps for Power Platform
Tag: Document Intelligence Studio
posts
Azure Document Intelligence Studio - Neural vs. Template Training
Azure Document Intelligence Studio - Neural vs. Template Training Azure Document Intelligence Studio formally known as form recognizer is a powerful tool to extract data from documents at scale. Among its features, the ability to “train a new model” for data extraction from documents. This process comes with two distinct options: Neural and Template. Each has its unique advantages and use cases.
Neural Training The Neural option leverages deep learning algorithms to understand and process documents.
Tag: Neural
posts
Azure Document Intelligence Studio - Neural vs. Template Training
Azure Document Intelligence Studio - Neural vs. Template Training Azure Document Intelligence Studio formally known as form recognizer is a powerful tool to extract data from documents at scale. Among its features, the ability to “train a new model” for data extraction from documents. This process comes with two distinct options: Neural and Template. Each has its unique advantages and use cases.
Neural Training The Neural option leverages deep learning algorithms to understand and process documents.
Tag: Template
posts
Azure Document Intelligence Studio - Neural vs. Template Training
Azure Document Intelligence Studio - Neural vs. Template Training Azure Document Intelligence Studio formally known as form recognizer is a powerful tool to extract data from documents at scale. Among its features, the ability to “train a new model” for data extraction from documents. This process comes with two distinct options: Neural and Template. Each has its unique advantages and use cases.
Neural Training The Neural option leverages deep learning algorithms to understand and process documents.
Tag: Microsoft Loop
posts
Empowering Secure Collaboration: Configuring Microsoft Loop Sharing Tenant and Site Settings with PowerShell
Empowering Secure Collaboration: Configuring Microsoft Loop Sharing SharePoint Tenant and Site Settings with PowerShell Guest users can be invited to collaborate within Microsoft Loop in the tenant. Refer How to work with guest users using Microsoft Loop how sharing within Loop works.
This post focuses on using PowerShell to control the Microsoft Loop sharing settings to help securing data especially with M365 Copilot which can expose data not previously accessible by other means.
Tag: Column
posts
SharePoint Search: Excluding Columns from Search Results
SharePoint Search: Excluding Columns from Search Results SharePoint empowers users to manage and organize vast amounts of data efficiently. However, not all data within a SharePoint site might need to be searchable. Do you miss the functionality to control visibility of sensitive or irrelevant information in column.
The Challenge You might have encountered instances where you need certain columns in your SharePoint lists or libraries to be excluded from search results.
Tag: Field
posts
SharePoint Search: Excluding Columns from Search Results
SharePoint Search: Excluding Columns from Search Results SharePoint empowers users to manage and organize vast amounts of data efficiently. However, not all data within a SharePoint site might need to be searchable. Do you miss the functionality to control visibility of sensitive or irrelevant information in column.
The Challenge You might have encountered instances where you need certain columns in your SharePoint lists or libraries to be excluded from search results.
Tag: gist
posts
Embed GitHub Gist in Hugo posts
Embed GitHub Gist in Hugo posts I was approached by Divya Akula with a suggestion to use a link to GitHub for my script and I really bought in the idea because I used to do it on Wordpress. I started googling and trying out solutions which did not work and messed up my blog repo. Fortunately being MVP I have access to GitHub Copilot and asked Copilot with a simple prompt which gave me a simple straight forward looking solution.
Tag: shortcodes
posts
Embed GitHub Gist in Hugo posts
Embed GitHub Gist in Hugo posts I was approached by Divya Akula with a suggestion to use a link to GitHub for my script and I really bought in the idea because I used to do it on Wordpress. I started googling and trying out solutions which did not work and messed up my blog repo. Fortunately being MVP I have access to GitHub Copilot and asked Copilot with a simple prompt which gave me a simple straight forward looking solution.
Tag: Owners
posts
Sharing Options Updates - Send Email Button Greyed Out
Sharing Options Updates - Send Email button greyed out Starting from March 2024, there has been a notable change in SharePoint’s sharing options. If a user is not allowed to share on a SharePoint site (for instance, when a user is a member and only owners have sharing privileges), the Send Email button appears greyed out. Additionally, a warning message is displayed: Sharing is limited on this item. You can only copy links for people who have existing access, and you can’t invite anyone new.
posts
Recreating Deleted Owners Group for M365-Connected SharePoint Sites
Recreating Deleted Owners Group for M365-Connected SharePoint Sites If out-of-the-box (OOB) groups such as owners, members, or visitors have been deleted accidentally from your SharePoint site, this article may assist you in recovering those vanished groups specifically for M365 linked Team site. I recently encountered a distress call from an end user facing data access issues on a SharePoint Team site. To my dismay, I discovered that the SharePoint Owners group had been accidentally deleted, prompting me to seek and implement a solution to restore access.
posts
Ensuring Owners Are Members
Ensure Owners Are Members M365Group Microsoft 365 (M365) Groups serve as a central hub for collaboration across various M365 applications like Teams, Planner, SharePoint, and more. While M365 roles include Owners, Members, and Guests, it’s crucial to understand that being an owner doesn’t always inherit member privileges. In this article, we’ll explore why it’s imperative to have M365 Group owners also serve as active members for seamless group management and productivity.
Tag: Send Email
posts
Sharing Options Updates - Send Email Button Greyed Out
Sharing Options Updates - Send Email button greyed out Starting from March 2024, there has been a notable change in SharePoint’s sharing options. If a user is not allowed to share on a SharePoint site (for instance, when a user is a member and only owners have sharing privileges), the Send Email button appears greyed out. Additionally, a warning message is displayed: Sharing is limited on this item. You can only copy links for people who have existing access, and you can’t invite anyone new.
Tag: Excel
posts
Using OpenAI in Excel and Google Sheets
Using OpenAI in Excel and Google Sheets Integrating OpenAI’s GPT models into Excel or Google Sheets can unlock powerful automation and language processing capabilities. This blog post demonstrates how to use OpenAI’s API to translate text in a spreadsheet cell into French using a script.
Google Spreadsheet Apps Script Example The following script uses OpenAI’s GPT-3.5-turbo model to translate the content of a selected cell into French and outputs the result in the adjacent cell.
Tag: Google Spreadsheet
posts
Using OpenAI in Excel and Google Sheets
Using OpenAI in Excel and Google Sheets Integrating OpenAI’s GPT models into Excel or Google Sheets can unlock powerful automation and language processing capabilities. This blog post demonstrates how to use OpenAI’s API to translate text in a spreadsheet cell into French using a script.
Google Spreadsheet Apps Script Example The following script uses OpenAI’s GPT-3.5-turbo model to translate the content of a selected cell into French and outputs the result in the adjacent cell.
Tag: OpenAI
posts
Using OpenAI in Excel and Google Sheets
Using OpenAI in Excel and Google Sheets Integrating OpenAI’s GPT models into Excel or Google Sheets can unlock powerful automation and language processing capabilities. This blog post demonstrates how to use OpenAI’s API to translate text in a spreadsheet cell into French using a script.
Google Spreadsheet Apps Script Example The following script uses OpenAI’s GPT-3.5-turbo model to translate the content of a selected cell into French and outputs the result in the adjacent cell.
Tag: Script
posts
Using OpenAI in Excel and Google Sheets
Using OpenAI in Excel and Google Sheets Integrating OpenAI’s GPT models into Excel or Google Sheets can unlock powerful automation and language processing capabilities. This blog post demonstrates how to use OpenAI’s API to translate text in a spreadsheet cell into French using a script.
Google Spreadsheet Apps Script Example The following script uses OpenAI’s GPT-3.5-turbo model to translate the content of a selected cell into French and outputs the result in the adjacent cell.
Tag: PowerShell Script Module
posts
Working with psm1 Files in PowerShell
Working with PowerShell Script Module Files:psm1 Have you ever utilized a psm1 file to create reusable functions across multiple ps1 files? If so, you might have encountered the frustration of edits not reflecting immediately due to module caching.
I recently faced this issue when updating a psm1 file; despite making changes, the updates didn’t take effect immediately. The issue stemmed from module caching.
The only solution I found to load the updated psm1 file was to terminate the PowerShell session and start a new one.
Tag: psm1
posts
Working with psm1 Files in PowerShell
Working with PowerShell Script Module Files:psm1 Have you ever utilized a psm1 file to create reusable functions across multiple ps1 files? If so, you might have encountered the frustration of edits not reflecting immediately due to module caching.
I recently faced this issue when updating a psm1 file; despite making changes, the updates didn’t take effect immediately. The issue stemmed from module caching.
The only solution I found to load the updated psm1 file was to terminate the PowerShell session and start a new one.
Tag: Graph
posts
Retrieving SharePoint Site URL for Teams Channels
Retrieving SharePoint Site URL for Teams Channels Have you ever needed to construct the SharePoint site URL for a private or shared channel using just the channel name? This post will guide you through the process using Microsoft Graph endpoint and PnP PowerShell though PowerShell.
You may need the details for these reasons
To specify within a retention policy Purview Retention Policy Questions from the Field eDiscovery Extract from eDiscovery of private and shared channels “Each private and shared channel has its own SharePoint site that’s separate from the parent team site.
Tag: Invoke-PnPGraphMethod
posts
Retrieving SharePoint Site URL for Teams Channels
Retrieving SharePoint Site URL for Teams Channels Have you ever needed to construct the SharePoint site URL for a private or shared channel using just the channel name? This post will guide you through the process using Microsoft Graph endpoint and PnP PowerShell though PowerShell.
You may need the details for these reasons
To specify within a retention policy Purview Retention Policy Questions from the Field eDiscovery Extract from eDiscovery of private and shared channels “Each private and shared channel has its own SharePoint site that’s separate from the parent team site.
Tag: Private Channels
posts
Retrieving SharePoint Site URL for Teams Channels
Retrieving SharePoint Site URL for Teams Channels Have you ever needed to construct the SharePoint site URL for a private or shared channel using just the channel name? This post will guide you through the process using Microsoft Graph endpoint and PnP PowerShell though PowerShell.
You may need the details for these reasons
To specify within a retention policy Purview Retention Policy Questions from the Field eDiscovery Extract from eDiscovery of private and shared channels “Each private and shared channel has its own SharePoint site that’s separate from the parent team site.
Tag: Shared Channels
posts
Retrieving SharePoint Site URL for Teams Channels
Retrieving SharePoint Site URL for Teams Channels Have you ever needed to construct the SharePoint site URL for a private or shared channel using just the channel name? This post will guide you through the process using Microsoft Graph endpoint and PnP PowerShell though PowerShell.
You may need the details for these reasons
To specify within a retention policy Purview Retention Policy Questions from the Field eDiscovery Extract from eDiscovery of private and shared channels “Each private and shared channel has its own SharePoint site that’s separate from the parent team site.
Tag: buffer limit
posts
How to Redirect PowerShell Terminal Output to a File
How to Redirect PowerShell Terminal Output to a File The PowerShell console buffer, while useful, has its limitations. When dealing with thousands of lines of output, you may encounter performance issues or even lose older output due to truncation. However, there’s a straightforward solution to ensure all output is retained for later review: redirect the output to a file.
You can accomplish this by using the redirection operator > operator, followed by the name of the file where you want the output to be stored.
Tag: Console
posts
How to Redirect PowerShell Terminal Output to a File
How to Redirect PowerShell Terminal Output to a File The PowerShell console buffer, while useful, has its limitations. When dealing with thousands of lines of output, you may encounter performance issues or even lose older output due to truncation. However, there’s a straightforward solution to ensure all output is retained for later review: redirect the output to a file.
You can accomplish this by using the redirection operator > operator, followed by the name of the file where you want the output to be stored.
Tag: Terminal
posts
How to Redirect PowerShell Terminal Output to a File
How to Redirect PowerShell Terminal Output to a File The PowerShell console buffer, while useful, has its limitations. When dealing with thousands of lines of output, you may encounter performance issues or even lose older output due to truncation. However, there’s a straightforward solution to ensure all output is retained for later review: redirect the output to a file.
You can accomplish this by using the redirection operator > operator, followed by the name of the file where you want the output to be stored.
Tag: CLIforM365
posts
Managing Service Principal Permission Requests using PowerShell
Managing Service Principal Permission Requests using PowerShell Permission to the “SharePoint Online Client” service principal can be granted either in declarative method within SPFx solutions or directly. This post explores how to handle both declarative and direct permission grants using SPO PowerShell , ClI for M365 and PnP PowerShell.
PnP PowerShell Get all service principal permission grants Gets the collection of permission grants for the “SharePoint Online Client” service principal using the cmdlet Get-PnPTenantServicePrincipalPermissionGrants
Tag: Declarative
posts
Managing Service Principal Permission Requests using PowerShell
Managing Service Principal Permission Requests using PowerShell Permission to the “SharePoint Online Client” service principal can be granted either in declarative method within SPFx solutions or directly. This post explores how to handle both declarative and direct permission grants using SPO PowerShell , ClI for M365 and PnP PowerShell.
PnP PowerShell Get all service principal permission grants Gets the collection of permission grants for the “SharePoint Online Client” service principal using the cmdlet Get-PnPTenantServicePrincipalPermissionGrants
Tag: Explicit
posts
Managing Service Principal Permission Requests using PowerShell
Managing Service Principal Permission Requests using PowerShell Permission to the “SharePoint Online Client” service principal can be granted either in declarative method within SPFx solutions or directly. This post explores how to handle both declarative and direct permission grants using SPO PowerShell , ClI for M365 and PnP PowerShell.
PnP PowerShell Get all service principal permission grants Gets the collection of permission grants for the “SharePoint Online Client” service principal using the cmdlet Get-PnPTenantServicePrincipalPermissionGrants
Tag: SPO PowerShell
posts
Managing Service Principal Permission Requests using PowerShell
Managing Service Principal Permission Requests using PowerShell Permission to the “SharePoint Online Client” service principal can be granted either in declarative method within SPFx solutions or directly. This post explores how to handle both declarative and direct permission grants using SPO PowerShell , ClI for M365 and PnP PowerShell.
PnP PowerShell Get all service principal permission grants Gets the collection of permission grants for the “SharePoint Online Client” service principal using the cmdlet Get-PnPTenantServicePrincipalPermissionGrants
Tag: Development SetUp
posts
Troubleshooting NVM Setup Issues for SPFx Development
Troubleshooting NVM Setup Issues for SPFx Development I have not used my dev machine for SPFx development for over a year. Before diving into any new SPFx development, I followed the typical procedure of installing the latest Node.js version 18.19.0 supported by the current SPFx version (1.18.2) using nvm (node version management).nvm allows to maintain different development environment.
nvm install 18.19.0 Following this, I proceeded to install the SPFx toolchain:
Tag: Azure Storage Explorer
posts
Limitations of Azure Storage Explorer: Filtering and Renaming Challenges
Limitations of Azure Storage Explorer: Filtering and Renaming Challenges Azure Storage Explorer simplifies managing Azure Storage data across Windows, macOS, and Linux platforms. Refer to Get started with Storage Explorer for more info.
However, there are nuances surrounding filtering and renaming functionalities that users should be mindful of.
Filter Functionality Azure Storage Explorer lacks wildcard support, limiting search capabilities to prefixes only. This limitation can pose challenges when attempting to locate files based on substrings within the blob container.
Tag: Filter
posts
Limitations of Azure Storage Explorer: Filtering and Renaming Challenges
Limitations of Azure Storage Explorer: Filtering and Renaming Challenges Azure Storage Explorer simplifies managing Azure Storage data across Windows, macOS, and Linux platforms. Refer to Get started with Storage Explorer for more info.
However, there are nuances surrounding filtering and renaming functionalities that users should be mindful of.
Filter Functionality Azure Storage Explorer lacks wildcard support, limiting search capabilities to prefixes only. This limitation can pose challenges when attempting to locate files based on substrings within the blob container.
Tag: Rename files
posts
Limitations of Azure Storage Explorer: Filtering and Renaming Challenges
Limitations of Azure Storage Explorer: Filtering and Renaming Challenges Azure Storage Explorer simplifies managing Azure Storage data across Windows, macOS, and Linux platforms. Refer to Get started with Storage Explorer for more info.
However, there are nuances surrounding filtering and renaming functionalities that users should be mindful of.
Filter Functionality Azure Storage Explorer lacks wildcard support, limiting search capabilities to prefixes only. This limitation can pose challenges when attempting to locate files based on substrings within the blob container.
Tag: Document library
posts
Custom document library template using PnP PowerShell
Custom document library template using PnP PowerShell Creating custom list templates is now possible to create both custom document libraries and lists.
This article explores the option how to use a combination of list design and PowerShell script to provision multiple instances of document libraries using a CSV file and how to create a document library from a custom list template from UI.
First we can create a list design for our library based on an existing configured document library with custom content types, fields and views.
Tag: List Design
posts
Custom document library template using PnP PowerShell
Custom document library template using PnP PowerShell Creating custom list templates is now possible to create both custom document libraries and lists.
This article explores the option how to use a combination of list design and PowerShell script to provision multiple instances of document libraries using a CSV file and how to create a document library from a custom list template from UI.
First we can create a list design for our library based on an existing configured document library with custom content types, fields and views.
Tag: SPO
posts
Custom document library template using PnP PowerShell
Custom document library template using PnP PowerShell Creating custom list templates is now possible to create both custom document libraries and lists.
This article explores the option how to use a combination of list design and PowerShell script to provision multiple instances of document libraries using a CSV file and how to create a document library from a custom list template from UI.
First we can create a list design for our library based on an existing configured document library with custom content types, fields and views.
Tag: Deployments
posts
Powerapps Listforms Deployments solutions
Power Apps list forms deployment with help of solution Power Apps List forms are be default hidden from the list of apps from https://make.powerapps.com/. Deployment of list forms remains a challenge.
This is my brief attempt to try to streamline the process using a solution. A solution within Power Platform makes it dataverse friendly.
Let’s say you already have a list form tied to a list. In the background it is a hidden list.
Tag: PowerApps
posts
Powerapps Listforms Deployments solutions
Power Apps list forms deployment with help of solution Power Apps List forms are be default hidden from the list of apps from https://make.powerapps.com/. Deployment of list forms remains a challenge.
This is my brief attempt to try to streamline the process using a solution. A solution within Power Platform makes it dataverse friendly.
Let’s say you already have a list form tied to a list. In the background it is a hidden list.
posts
Building a Quiz App with OpenAI GPT in PowerApps
Building a Quiz App with OpenAI GPT in PowerApps Discover how to create your very own quiz app in Power Apps using the OpenAI GPT (Independent Publisher). This app was inspired by Robin Rosengrün from his demo on Add OpenAI Capabilities to your Power Platform solutions .
Prerequisites API Key Before integrating ChatGPT into PowerShell, you’ll need an OpenAI API key. You can obtain one by visiting OpenAI’s API key page and creating a new secret key.
Tag: Solutions
posts
Powerapps Listforms Deployments solutions
Power Apps list forms deployment with help of solution Power Apps List forms are be default hidden from the list of apps from https://make.powerapps.com/. Deployment of list forms remains a challenge.
This is my brief attempt to try to streamline the process using a solution. A solution within Power Platform makes it dataverse friendly.
Let’s say you already have a list form tied to a list. In the background it is a hidden list.
Tag: Uninstall
posts
Retracting SPFx Solutions from Hub Site and associated sites using PnP PowerShell
Retracting SPFx Solutions from Hub Site and associated sites using PnP PowerShell SharePoint Framework (SPFx) solutions are a powerful tool for extending and customizing SharePoint sites. However, managing these solutions across multiple sites in a SharePoint tenant can be a daunting task. Fortunately, PnP PowerShell provides automation capabilities that can streamline these operations and ensure consistency across the tenant.
The blog post Deploying SharePoint Framework (SPFx) Packages from Tenant App Catalog to Hub Site and Associated Sites covers how to deploy SPFx solutions across a hub site and associated sites.
Tag: Reindex
posts
Automating Site Reindexing with PowerShell
Automating Site Reindexing with PowerShell Introduction Keeping your SharePoint environment up-to-date is crucial, especially after making schema changes. One important aspect of maintaining accurate and relevant search results is to regularly reindex sites, libraries, or lists. In this blog post, we will explore a streamlined approach using PnP PowerShell to automate the reindexing process. By leveraging this script, you can ensure that your search results reflect the latest changes in your SharePoint environment.
Tag: CLI for M365
posts
PowerShell: Set and Remove SharePoint Site Thumbnail Logo
For many organizations, maintaining a consistent brand identity across SharePoint sites is crucial. The distinction between “Site Logo” and “Site Logo Thumbnail” is essential, as they serve different purposes across SharePoint and the Microsoft 365 ecosystem. The site logo appears in the site header, while the site logo thumbnail is used in search results, site cards, when copying/moving files, and other critical areas. It plays a vital role in helping end users differentiate between various SharePoint Online (SPO) sites and Teams.
posts
Unveiling Audit Logs with PnP and Cli for M365 PowerShell
Unveiling Audit Logs with PnP PowerShell for the last 7 days Understanding and tracking activities within your M365 environment is crucial for maintaining security and compliance. Audit Logs offer a wealth of information, and in this post, we’ll delve into the methods to retrieve and analyze them. Specifically, we’ll focus on leveraging the Office 365 Management Activity API reference through the Get-PnPUnifiedAuditLog PnP PowerShell cmdlet. It is a great alternative if you are only a SharePoint Administrator with no global admin or Purview Audit logs access.
Tag: Logo
posts
PowerShell: Set and Remove SharePoint Site Thumbnail Logo
For many organizations, maintaining a consistent brand identity across SharePoint sites is crucial. The distinction between “Site Logo” and “Site Logo Thumbnail” is essential, as they serve different purposes across SharePoint and the Microsoft 365 ecosystem. The site logo appears in the site header, while the site logo thumbnail is used in search results, site cards, when copying/moving files, and other critical areas. It plays a vital role in helping end users differentiate between various SharePoint Online (SPO) sites and Teams.
Tag: Audit Logs
posts
Unveiling Audit Logs with PnP and Cli for M365 PowerShell
Unveiling Audit Logs with PnP PowerShell for the last 7 days Understanding and tracking activities within your M365 environment is crucial for maintaining security and compliance. Audit Logs offer a wealth of information, and in this post, we’ll delve into the methods to retrieve and analyze them. Specifically, we’ll focus on leveraging the Office 365 Management Activity API reference through the Get-PnPUnifiedAuditLog PnP PowerShell cmdlet. It is a great alternative if you are only a SharePoint Administrator with no global admin or Purview Audit logs access.
Tag: AzureDirectory
posts
Unveiling Audit Logs with PnP and Cli for M365 PowerShell
Unveiling Audit Logs with PnP PowerShell for the last 7 days Understanding and tracking activities within your M365 environment is crucial for maintaining security and compliance. Audit Logs offer a wealth of information, and in this post, we’ll delve into the methods to retrieve and analyze them. Specifically, we’ll focus on leveraging the Office 365 Management Activity API reference through the Get-PnPUnifiedAuditLog PnP PowerShell cmdlet. It is a great alternative if you are only a SharePoint Administrator with no global admin or Purview Audit logs access.
Tag: Exchange
posts
Unveiling Audit Logs with PnP and Cli for M365 PowerShell
Unveiling Audit Logs with PnP PowerShell for the last 7 days Understanding and tracking activities within your M365 environment is crucial for maintaining security and compliance. Audit Logs offer a wealth of information, and in this post, we’ll delve into the methods to retrieve and analyze them. Specifically, we’ll focus on leveraging the Office 365 Management Activity API reference through the Get-PnPUnifiedAuditLog PnP PowerShell cmdlet. It is a great alternative if you are only a SharePoint Administrator with no global admin or Purview Audit logs access.
Tag: file type
posts
Internal References in SharePoint Column Formatting for Document libraries: leveraging Name, Folder and Path properties
SharePoint Column Formatting for Document libraries: Leveraging Name, Folder and Path properties While referencing [$Title] in lists is straightforward, document libraries demand a nuanced approach. Instead of [$Name], had to delve into the intricacies of internal names like $FileLeafRef and $FileRef when working with column formatting.
$FileLeafRef: Denotes the name of the file.
$FileRef: Represents the server-relative URL of the file.
Initial attempts to incorporate $FileSystemObjectType for folder identification was challenging, indicating that not all document library internal column names are supported.
Tag: fileleafref
posts
Internal References in SharePoint Column Formatting for Document libraries: leveraging Name, Folder and Path properties
SharePoint Column Formatting for Document libraries: Leveraging Name, Folder and Path properties While referencing [$Title] in lists is straightforward, document libraries demand a nuanced approach. Instead of [$Name], had to delve into the intricacies of internal names like $FileLeafRef and $FileRef when working with column formatting.
$FileLeafRef: Denotes the name of the file.
$FileRef: Represents the server-relative URL of the file.
Initial attempts to incorporate $FileSystemObjectType for folder identification was challenging, indicating that not all document library internal column names are supported.
Tag: fileref
posts
Internal References in SharePoint Column Formatting for Document libraries: leveraging Name, Folder and Path properties
SharePoint Column Formatting for Document libraries: Leveraging Name, Folder and Path properties While referencing [$Title] in lists is straightforward, document libraries demand a nuanced approach. Instead of [$Name], had to delve into the intricacies of internal names like $FileLeafRef and $FileRef when working with column formatting.
$FileLeafRef: Denotes the name of the file.
$FileRef: Represents the server-relative URL of the file.
Initial attempts to incorporate $FileSystemObjectType for folder identification was challenging, indicating that not all document library internal column names are supported.
Tag: Contributions
posts
A Guide to Contributing to PnP PowerShell
A Guide to Contributing to PnP PowerShell Contributing to PnP PowerShell is a rewarding journey. Whether you’re a seasoned contributor or a beginner, this guide aims to simplify the process and keep it handy for your next contribution.
Prerequisites To set up the development to start hacking on PnP PowerShell, install the following
Install Git Install PowerShell 7 Install Visual Code or Visual Studio Code Install .NET SDK 6 (https://dotnet.microsoft.com/download/dotnet/6.0) Forking and cloning First things first, make a copy of the repository to start working on your changes.
Tag: Open Source
posts
A Guide to Contributing to PnP PowerShell
A Guide to Contributing to PnP PowerShell Contributing to PnP PowerShell is a rewarding journey. Whether you’re a seasoned contributor or a beginner, this guide aims to simplify the process and keep it handy for your next contribution.
Prerequisites To set up the development to start hacking on PnP PowerShell, install the following
Install Git Install PowerShell 7 Install Visual Code or Visual Studio Code Install .NET SDK 6 (https://dotnet.microsoft.com/download/dotnet/6.0) Forking and cloning First things first, make a copy of the repository to start working on your changes.
Tag: Tutorial
posts
Creating New Posts with Hugo
Creating New Posts with Hugo In this post, we will walk through the process of creating a new post in Hugo, a popular static site generator.
Step 1: Navigate to Your Hugo Site First, navigate to the directory where your Hugo site is configured. You can do this using the cd command in terminal:
cd .\Hugo\sites\M365Blog\ Step 2: Create a New Post Next, use the hugo new command to create a new post:
Tag: MultiLineText
posts
Enhance List Formatting for Multi-Line Text fields challenges
Enhance List Formatting for Multi-Line Text fields challenges Summary The following sample shows how you can view more of a truncated multi line text column on click. Column formatting in SharePoint is a powerful tool to customize how data is displayed. Multi-line text fields, however, present unique challenges when applying these formats. This guide explores a method to expand truncated multi-line text on click and discusses its limitations.
Understanding the Concept The objective is to provide users with a preview of truncated text and enable expansion on hover.
Tag: Chrome
posts
Export SharePoint Pages to PDF for SharePoint OnPremises
Export SharePoint Pages to PDF There may be scenerios where you might want to take screenshots of all your pages in your SharePoint site. For instance before revamping a site, you might take screenshots of all pages to compare against updated site to show end client progress or difference the new design brings or could be simply for backing up the pages before archiving the site.
Prerequisites Google Chrome installed SharePoint PowerShell
Tag: Export to PDF
posts
Export SharePoint Pages to PDF for SharePoint OnPremises
Export SharePoint Pages to PDF There may be scenerios where you might want to take screenshots of all your pages in your SharePoint site. For instance before revamping a site, you might take screenshots of all pages to compare against updated site to show end client progress or difference the new design brings or could be simply for backing up the pages before archiving the site.
Prerequisites Google Chrome installed SharePoint PowerShell
Tag: OnPremises
posts
Export SharePoint Pages to PDF for SharePoint OnPremises
Export SharePoint Pages to PDF There may be scenerios where you might want to take screenshots of all your pages in your SharePoint site. For instance before revamping a site, you might take screenshots of all pages to compare against updated site to show end client progress or difference the new design brings or could be simply for backing up the pages before archiving the site.
Prerequisites Google Chrome installed SharePoint PowerShell
Tag: SharePoint Pages
posts
Export SharePoint Pages to PDF for SharePoint OnPremises
Export SharePoint Pages to PDF There may be scenerios where you might want to take screenshots of all your pages in your SharePoint site. For instance before revamping a site, you might take screenshots of all pages to compare against updated site to show end client progress or difference the new design brings or could be simply for backing up the pages before archiving the site.
Prerequisites Google Chrome installed SharePoint PowerShell
Tag: Email Action
posts
Optimizing Email HTML for Outlook
Optimizing Email HTML for Outlook using the ‘Send Email’ action within Power Automate When crafting attention-grabbing emails, the HTML structure plays a pivotal role. I recently encountered challenges in achieving consistent formatting across Outlook desktop and web versions using the Send Email action within Power Automate.
Using div Tags for Responsiveness At first, I experimented with divs to ensure responsiveness and modern HTML formatting. The code appeared as follows:
<style> .
Tag: Child Workflow
posts
Converting a HTTP Trigger into a Child Workflow in Power Automate
Converting a HTTP Trigger into a Child Workflow in Power Automate Using a HTTP trigger requires Premium licence and with the Child Workflow in a solution alleviates the need of premium license.
Other advantages using a solution:
Application Lifecycle Management: Facilitates deployment. Child Workflow: Allows for a more modular and manageable flow structure. Easier Ownership Management: Simplifies updates to the flow owner. I recreated the child workflow within the solution selecting the Manually trigger a flow trigger and updated the parent flow to use the flow as child workflow.
Tag: HTTP trigger
posts
Converting a HTTP Trigger into a Child Workflow in Power Automate
Converting a HTTP Trigger into a Child Workflow in Power Automate Using a HTTP trigger requires Premium licence and with the Child Workflow in a solution alleviates the need of premium license.
Other advantages using a solution:
Application Lifecycle Management: Facilitates deployment. Child Workflow: Allows for a more modular and manageable flow structure. Easier Ownership Management: Simplifies updates to the flow owner. I recreated the child workflow within the solution selecting the Manually trigger a flow trigger and updated the parent flow to use the flow as child workflow.
Tag: Checked out
posts
Discovering All Checked Out Files including those with no checked in versions with PnP PowerShell
Discovering All Checked Out Files including those with no checked in versions There are scenarios when files uploaded won’t have “checked-in version” which will make the files visible only to their uploader. Two possible scenarios that can lead to the situation:
Mandatory Metadata Requirements: When there are mandatory fields configured on the libraries and end users use Onedrive as a medium to upload the files to SharePoint via a shortcut to OneDrive.
Tag: Mandatory Metadata
posts
Discovering All Checked Out Files including those with no checked in versions with PnP PowerShell
Discovering All Checked Out Files including those with no checked in versions There are scenarios when files uploaded won’t have “checked-in version” which will make the files visible only to their uploader. Two possible scenarios that can lead to the situation:
Mandatory Metadata Requirements: When there are mandatory fields configured on the libraries and end users use Onedrive as a medium to upload the files to SharePoint via a shortcut to OneDrive.
Tag: Columns
posts
Copy Column View Formatting to different environment using PnP PowerShell
Copy Column and View Formatting using PnP PowerShell There is a great sample script how to backup all column, view and content type formatting by Dan Toft. If you need to copy column and view formatting across different environments, such as from Dev to Test, UAT, and Prod, especially when dealing with multiple lists/libraries, the script may help you.
PnP PowerShell Script param ( [Parameter(Mandatory=$false)] [string]$SourceSiteUrl = "https://contoso.sharepoint.com/teams/d-app-test", [Parameter(Mandatory=$false)] [string]$DestinationSiteUrl = "https://contoso.
Tag: Formatting
posts
Copy Column View Formatting to different environment using PnP PowerShell
Copy Column and View Formatting using PnP PowerShell There is a great sample script how to backup all column, view and content type formatting by Dan Toft. If you need to copy column and view formatting across different environments, such as from Dev to Test, UAT, and Prod, especially when dealing with multiple lists/libraries, the script may help you.
PnP PowerShell Script param ( [Parameter(Mandatory=$false)] [string]$SourceSiteUrl = "https://contoso.sharepoint.com/teams/d-app-test", [Parameter(Mandatory=$false)] [string]$DestinationSiteUrl = "https://contoso.
Tag: Views
posts
Copy Column View Formatting to different environment using PnP PowerShell
Copy Column and View Formatting using PnP PowerShell There is a great sample script how to backup all column, view and content type formatting by Dan Toft. If you need to copy column and view formatting across different environments, such as from Dev to Test, UAT, and Prod, especially when dealing with multiple lists/libraries, the script may help you.
PnP PowerShell Script param ( [Parameter(Mandatory=$false)] [string]$SourceSiteUrl = "https://contoso.sharepoint.com/teams/d-app-test", [Parameter(Mandatory=$false)] [string]$DestinationSiteUrl = "https://contoso.
Tag: Modern SharePoint Page
posts
How to Hide the 'See All' Button in the Highlighted Content Web Part using PnP PowerShell
How to Hide the “See All” Button in the Highlighted Content Web Part using PnP PowerShell Recently, I encountered an issue with the “Show Title and Commands” toggle in the out-of-the-box Highlighted Content web part. It stopped working on both my development and customer tenant. I’ve raised the issue on the Microsoft Forum and also opened a case with Microsoft to investigate the backend.
While awaiting a resolution from Microsoft, I decided to find a workaround.
Tag: Set-PnPPageWebPart
posts
How to Hide the 'See All' Button in the Highlighted Content Web Part using PnP PowerShell
How to Hide the “See All” Button in the Highlighted Content Web Part using PnP PowerShell Recently, I encountered an issue with the “Show Title and Commands” toggle in the out-of-the-box Highlighted Content web part. It stopped working on both my development and customer tenant. I’ve raised the issue on the Microsoft Forum and also opened a case with Microsoft to investigate the backend.
While awaiting a resolution from Microsoft, I decided to find a workaround.
Tag: WebPart
posts
How to Hide the 'See All' Button in the Highlighted Content Web Part using PnP PowerShell
How to Hide the “See All” Button in the Highlighted Content Web Part using PnP PowerShell Recently, I encountered an issue with the “Show Title and Commands” toggle in the out-of-the-box Highlighted Content web part. It stopped working on both my development and customer tenant. I’ve raised the issue on the Microsoft Forum and also opened a case with Microsoft to investigate the backend.
While awaiting a resolution from Microsoft, I decided to find a workaround.
Tag: AI Concerns
posts
MS Build AI Day: Build and maintain your company Copilot with Azure ML and GPT-4 By Seth Juarez
Build and maintain your company Copilot with Azure ML and GPT-4 By Seth Juarez I attended the session Build and maintain your company Copilot with Azure ML and GPT-4 at MS Build AI Day by Seth Juarez on the 19th Oct 2023. Seth began the session with a “Group Therapy” followed by a delve deep into the intricacies of language models, shedding light on Azure Machine Learning. He referred to Henk’s presentation and Keynote to reinforce some Generative AI concepts.
Tag: Azure ML
posts
MS Build AI Day: Build and maintain your company Copilot with Azure ML and GPT-4 By Seth Juarez
Build and maintain your company Copilot with Azure ML and GPT-4 By Seth Juarez I attended the session Build and maintain your company Copilot with Azure ML and GPT-4 at MS Build AI Day by Seth Juarez on the 19th Oct 2023. Seth began the session with a “Group Therapy” followed by a delve deep into the intricacies of language models, shedding light on Azure Machine Learning. He referred to Henk’s presentation and Keynote to reinforce some Generative AI concepts.
Tag: Language Calculator
posts
MS Build AI Day: Build and maintain your company Copilot with Azure ML and GPT-4 By Seth Juarez
Build and maintain your company Copilot with Azure ML and GPT-4 By Seth Juarez I attended the session Build and maintain your company Copilot with Azure ML and GPT-4 at MS Build AI Day by Seth Juarez on the 19th Oct 2023. Seth began the session with a “Group Therapy” followed by a delve deep into the intricacies of language models, shedding light on Azure Machine Learning. He referred to Henk’s presentation and Keynote to reinforce some Generative AI concepts.
Tag: AI
posts
MS Build AI Day: Develop in the cloud with Microsoft Dev Box by Dona Sarkar
Develop in the cloud with Microsoft Dev Box by Dona Sarkar I attended the session Develop in the cloud with Microsoft Dev Box at MS Build AI Day by Dona Sarkar on the 19th Oct 2023.
Dona started the session to gauge the audience how long it takes to set up a dev environment before a Dev can submit their first PR. It takes between 1-5 days for Dev environment set up.
Tag: COBOL
posts
MS Build AI Day: Develop in the cloud with Microsoft Dev Box by Dona Sarkar
Develop in the cloud with Microsoft Dev Box by Dona Sarkar I attended the session Develop in the cloud with Microsoft Dev Box at MS Build AI Day by Dona Sarkar on the 19th Oct 2023.
Dona started the session to gauge the audience how long it takes to set up a dev environment before a Dev can submit their first PR. It takes between 1-5 days for Dev environment set up.
Tag: Copilots
posts
MS Build AI Day: Develop in the cloud with Microsoft Dev Box by Dona Sarkar
Develop in the cloud with Microsoft Dev Box by Dona Sarkar I attended the session Develop in the cloud with Microsoft Dev Box at MS Build AI Day by Dona Sarkar on the 19th Oct 2023.
Dona started the session to gauge the audience how long it takes to set up a dev environment before a Dev can submit their first PR. It takes between 1-5 days for Dev environment set up.
Tag: MS Dev Box
posts
MS Build AI Day: Develop in the cloud with Microsoft Dev Box by Dona Sarkar
Develop in the cloud with Microsoft Dev Box by Dona Sarkar I attended the session Develop in the cloud with Microsoft Dev Box at MS Build AI Day by Dona Sarkar on the 19th Oct 2023.
Dona started the session to gauge the audience how long it takes to set up a dev environment before a Dev can submit their first PR. It takes between 1-5 days for Dev environment set up.
Tag: ChatGPT
posts
MS Build AI Day: Generative AI using Azure OpenAI Service by Henk Boelman
Generative AI using Azure OpenAI Service session at MS Build AI Day by Henk Boelman I attended the session Generative AI using Azure OpenAI Service session at MS Build AI Day by Henk Boelman on the 19th Oct 2023. He demoed how to leverage Azure Open AI Service to “add your own data” combined with ChatGPT to retrieve information from your company owned data covering elements of generative AI and reinforcing some of the points highlighted in the Keynote such as prompt engineering, grounding, jail breaking, etc.
Tag: Generative AI
posts
MS Build AI Day: Generative AI using Azure OpenAI Service by Henk Boelman
Generative AI using Azure OpenAI Service session at MS Build AI Day by Henk Boelman I attended the session Generative AI using Azure OpenAI Service session at MS Build AI Day by Henk Boelman on the 19th Oct 2023. He demoed how to leverage Azure Open AI Service to “add your own data” combined with ChatGPT to retrieve information from your company owned data covering elements of generative AI and reinforcing some of the points highlighted in the Keynote such as prompt engineering, grounding, jail breaking, etc.
Tag: Grounding
posts
MS Build AI Day: Generative AI using Azure OpenAI Service by Henk Boelman
Generative AI using Azure OpenAI Service session at MS Build AI Day by Henk Boelman I attended the session Generative AI using Azure OpenAI Service session at MS Build AI Day by Henk Boelman on the 19th Oct 2023. He demoed how to leverage Azure Open AI Service to “add your own data” combined with ChatGPT to retrieve information from your company owned data covering elements of generative AI and reinforcing some of the points highlighted in the Keynote such as prompt engineering, grounding, jail breaking, etc.
posts
Ms Build AI Day Keynote on the 19 Oct 2023
MS Build AI Day Keynote by Scott Hanselman On October 19, 2023, the inaugural MS Build AI Day at Excel London in Custom House marked a pivotal moment for the world of AI. As an attendee, I had the privilege of witnessing a groundbreaking keynote session led by none other than Scott Hanselman. Titled “Navigating the AI Landscape,” the keynote, introduced by Michael Wignall, the lead for MS Build, set the stage for an eventful day filled with insights, connections, and hands-on experiences.
Tag: Prompt
posts
MS Build AI Day: Generative AI using Azure OpenAI Service by Henk Boelman
Generative AI using Azure OpenAI Service session at MS Build AI Day by Henk Boelman I attended the session Generative AI using Azure OpenAI Service session at MS Build AI Day by Henk Boelman on the 19th Oct 2023. He demoed how to leverage Azure Open AI Service to “add your own data” combined with ChatGPT to retrieve information from your company owned data covering elements of generative AI and reinforcing some of the points highlighted in the Keynote such as prompt engineering, grounding, jail breaking, etc.
Tag: RAG
posts
MS Build AI Day: Generative AI using Azure OpenAI Service by Henk Boelman
Generative AI using Azure OpenAI Service session at MS Build AI Day by Henk Boelman I attended the session Generative AI using Azure OpenAI Service session at MS Build AI Day by Henk Boelman on the 19th Oct 2023. He demoed how to leverage Azure Open AI Service to “add your own data” combined with ChatGPT to retrieve information from your company owned data covering elements of generative AI and reinforcing some of the points highlighted in the Keynote such as prompt engineering, grounding, jail breaking, etc.
Tag: Efficiency
posts
Ms Build AI Day Keynote on the 19 Oct 2023
MS Build AI Day Keynote by Scott Hanselman On October 19, 2023, the inaugural MS Build AI Day at Excel London in Custom House marked a pivotal moment for the world of AI. As an attendee, I had the privilege of witnessing a groundbreaking keynote session led by none other than Scott Hanselman. Titled “Navigating the AI Landscape,” the keynote, introduced by Michael Wignall, the lead for MS Build, set the stage for an eventful day filled with insights, connections, and hands-on experiences.
Tag: Prompt Engineering
posts
Ms Build AI Day Keynote on the 19 Oct 2023
MS Build AI Day Keynote by Scott Hanselman On October 19, 2023, the inaugural MS Build AI Day at Excel London in Custom House marked a pivotal moment for the world of AI. As an attendee, I had the privilege of witnessing a groundbreaking keynote session led by none other than Scott Hanselman. Titled “Navigating the AI Landscape,” the keynote, introduced by Michael Wignall, the lead for MS Build, set the stage for an eventful day filled with insights, connections, and hands-on experiences.
Tag: Safety Checks
posts
Ms Build AI Day Keynote on the 19 Oct 2023
MS Build AI Day Keynote by Scott Hanselman On October 19, 2023, the inaugural MS Build AI Day at Excel London in Custom House marked a pivotal moment for the world of AI. As an attendee, I had the privilege of witnessing a groundbreaking keynote session led by none other than Scott Hanselman. Titled “Navigating the AI Landscape,” the keynote, introduced by Michael Wignall, the lead for MS Build, set the stage for an eventful day filled with insights, connections, and hands-on experiences.
Tag: Temperature
posts
Ms Build AI Day Keynote on the 19 Oct 2023
MS Build AI Day Keynote by Scott Hanselman On October 19, 2023, the inaugural MS Build AI Day at Excel London in Custom House marked a pivotal moment for the world of AI. As an attendee, I had the privilege of witnessing a groundbreaking keynote session led by none other than Scott Hanselman. Titled “Navigating the AI Landscape,” the keynote, introduced by Michael Wignall, the lead for MS Build, set the stage for an eventful day filled with insights, connections, and hands-on experiences.
Tag: Members
posts
Ensuring Owners Are Members
Ensure Owners Are Members M365Group Microsoft 365 (M365) Groups serve as a central hub for collaboration across various M365 applications like Teams, Planner, SharePoint, and more. While M365 roles include Owners, Members, and Guests, it’s crucial to understand that being an owner doesn’t always inherit member privileges. In this article, we’ll explore why it’s imperative to have M365 Group owners also serve as active members for seamless group management and productivity.
Tag: OpenAI GPT
posts
Building a Quiz App with OpenAI GPT in PowerApps
Building a Quiz App with OpenAI GPT in PowerApps Discover how to create your very own quiz app in Power Apps using the OpenAI GPT (Independent Publisher). This app was inspired by Robin Rosengrün from his demo on Add OpenAI Capabilities to your Power Platform solutions .
Prerequisites API Key Before integrating ChatGPT into PowerShell, you’ll need an OpenAI API key. You can obtain one by visiting OpenAI’s API key page and creating a new secret key.
Tag: ParseJson
posts
Building a Quiz App with OpenAI GPT in PowerApps
Building a Quiz App with OpenAI GPT in PowerApps Discover how to create your very own quiz app in Power Apps using the OpenAI GPT (Independent Publisher). This app was inspired by Robin Rosengrün from his demo on Add OpenAI Capabilities to your Power Platform solutions .
Prerequisites API Key Before integrating ChatGPT into PowerShell, you’ll need an OpenAI API key. You can obtain one by visiting OpenAI’s API key page and creating a new secret key.
Tag: Approval
posts
Updating Approval Details in SharePoint Library using 'Send HTTP Request to SharePoint' in Power Automate
Updating Approval Details in SharePoint Library using ‘Send HTTP Request to SharePoint’ in Power Automate In Power Automate, there are two methods for updating file properties:
Send HTTP Request to SharePoint Update File Properties While the latter suffices for most cases, I opted for the “Send HTTP Request to SharePoint” in specific scenarios:
To avoid triggering a new file version using system update. When modifying system columns such as author or modified date.
Tag: Send HTTP Request to SharePoint
posts
Updating Approval Details in SharePoint Library using 'Send HTTP Request to SharePoint' in Power Automate
Updating Approval Details in SharePoint Library using ‘Send HTTP Request to SharePoint’ in Power Automate In Power Automate, there are two methods for updating file properties:
Send HTTP Request to SharePoint Update File Properties While the latter suffices for most cases, I opted for the “Send HTTP Request to SharePoint” in specific scenarios:
To avoid triggering a new file version using system update. When modifying system columns such as author or modified date.
Tag: PnPBatch
posts
Leveraging ChatGPT to Generate Test Data for SharePoint Lists Using PnP PowerShell
Leveraging ChatGPT to Generate Test Data for SharePoint Lists Using PnP PowerShell Utilizing ChatGPT to generate test data for various applications is a powerful capability. After stumbling upon the sample script Create test users using MS Graph API from list or ask ChatGPT to generate test users by Valeras Narbutas on creating test users with MS Graph API, I decided to explore using ChatGPT to generate a list of data. This script harnesses OpenAI’s ChatGPT model to effortlessly generate a list of wellbeing activities.
posts
Optimising Large List Updates with PnP Batch: Handling Throttling and Enhancing Efficiency
Optimising Large List Updates with PnP Batch: Handling Throttling and Enhancing Efficiency In this article, we explore how to efficiently update a large SharePoint list containing approximately 60,000 items using PnP-Batch. Updating such a substantial number of items individually can be time-consuming and prone to throttling issues. Prior to using PnP Batch , it was taking more than 12 hours to update 60k one by one. The article highlights the benefits of using PnP Batch, which significantly reduces the time taken for updates by sending fewer requests.
Tag: SystemUpdate
posts
Leveraging ChatGPT to Generate Test Data for SharePoint Lists Using PnP PowerShell
Leveraging ChatGPT to Generate Test Data for SharePoint Lists Using PnP PowerShell Utilizing ChatGPT to generate test data for various applications is a powerful capability. After stumbling upon the sample script Create test users using MS Graph API from list or ask ChatGPT to generate test users by Valeras Narbutas on creating test users with MS Graph API, I decided to explore using ChatGPT to generate a list of data. This script harnesses OpenAI’s ChatGPT model to effortlessly generate a list of wellbeing activities.
posts
Optimising Large List Updates with PnP Batch: Handling Throttling and Enhancing Efficiency
Optimising Large List Updates with PnP Batch: Handling Throttling and Enhancing Efficiency In this article, we explore how to efficiently update a large SharePoint list containing approximately 60,000 items using PnP-Batch. Updating such a substantial number of items individually can be time-consuming and prone to throttling issues. Prior to using PnP Batch , it was taking more than 12 hours to update 60k one by one. The article highlights the benefits of using PnP Batch, which significantly reduces the time taken for updates by sending fewer requests.
Tag: Add-in
posts
Teams Add-in Not Showing Within Outlook
Teams Add-in Not Showing Within Outlook The add-in for setting up a teams meeting within the outlook application was no longer showing. The add-in was not available to be enabled within Outlook as per Troubleshoot the Teams Meeting add-in in Outlook for Windows. Even after reinstalling Teams or creating a new profile within Outlook, it did not fix the issue. As a workaround I was using
Use Team calendar to create meeting Use Outlook Web App to create meetings With Microsoft Support’s help via a case we identified the issue was the missing following key:
Tag: Doughnut Chart
posts
Expanding Doughnut Chart in Microsoft Lists: Visualize Data in Segments and Track Progress
Expanding Doughnut Chart in Microsoft Lists: Visualize Data in Segments and Track Progress The doughnut chart is a powerful visualization tool that allows users to represent data in segments and track progress against targets. Frederico Sapia’s Doughnut Chart with percentage and values displayed is a valuable custom chart for Microsoft Lists, enabling users to visualize data effectively. However, the original chart allowed for only six slices, limiting its flexibility. In this blog post, we explore how to extend the doughnut chart to support up to nine slices, and we’ll also demonstrate how to display the percentage of each segment within the chart.
Tag: Microsoft
posts
Expanding Doughnut Chart in Microsoft Lists: Visualize Data in Segments and Track Progress
Expanding Doughnut Chart in Microsoft Lists: Visualize Data in Segments and Track Progress The doughnut chart is a powerful visualization tool that allows users to represent data in segments and track progress against targets. Frederico Sapia’s Doughnut Chart with percentage and values displayed is a valuable custom chart for Microsoft Lists, enabling users to visualize data effectively. However, the original chart allowed for only six slices, limiting its flexibility. In this blog post, we explore how to extend the doughnut chart to support up to nine slices, and we’ll also demonstrate how to display the percentage of each segment within the chart.
Tag: Outlook
posts
Teams Add-in Not Showing Within Outlook
Teams Add-in Not Showing Within Outlook The add-in for setting up a teams meeting within the outlook application was no longer showing. The add-in was not available to be enabled within Outlook as per Troubleshoot the Teams Meeting add-in in Outlook for Windows. Even after reinstalling Teams or creating a new profile within Outlook, it did not fix the issue. As a workaround I was using
Use Team calendar to create meeting Use Outlook Web App to create meetings With Microsoft Support’s help via a case we identified the issue was the missing following key:
Tag: Robot.txt
posts
How to Ensure Your Netlify Site is Search Engine Crawlable
How to Ensure Your Netlify Site is Search Engine Crawlable There are numerous posts to describe how to convert Wordpress to Hugo. I followed the instructions from blog post How to move your blog from Wordpress to Hugo to start with and hosted it on Netlify, it’s essential to ensure that search engines can crawl and index your site properly. Follow these steps to make sure your site is discoverable:
Tag: Search Engine
posts
How to Ensure Your Netlify Site is Search Engine Crawlable
How to Ensure Your Netlify Site is Search Engine Crawlable There are numerous posts to describe how to convert Wordpress to Hugo. I followed the instructions from blog post How to move your blog from Wordpress to Hugo to start with and hosted it on Netlify, it’s essential to ensure that search engines can crawl and index your site properly. Follow these steps to make sure your site is discoverable:
Tag: CLI
posts
Get a CSV of all my pull requests from Github using Github CLI and PowerShell
Github does not provide an easy way to export all your pull requests for review or sharing with anyone. Below is a great post to show how to do it using BASH.
GitHub: Get a CSV containing my pull requests (PRs)
If you are using windows machine, PowerShell is your friend.
Install GitHub CLI via command line
winget install --id GitHub.cli Enter Y to the question
Do you agree to all the source agreements terms?
Tag: coauthoring
posts
Coauthoring in power apps issues
Coauthoring with power apps issues Coauthoring in power apps allows multiple power apps developers to work on the same canvas app. Despite being an experimental feature we decided to give a try to speed up the development process. We used the blog post [How To Setup Power Apps Co-Authoring - Azure DevOps Version] (https://www.matthewdevaney.com/how-to-setup-power-apps-co-authoring-azure-dev-ops-version/). The tutorial covers step-by-step instructions for enabling co-authoring for canvas apps in Power Apps using Azure DevOps repository.
Tag: Embed, Instagram
posts
Embedding Instagram Posts in Modern SharePoint Pages using embed webpart
Embedding Instagram Posts in Modern SharePoint Pages using embed webpart I was investigating on how to display an instagram post within a Modern SharePoint News Page.
The generic embed code from instagram post uses the script tag which is not allowed within SharePoint Modern Page unless script webpart is allowed to be used.
These are the steps to follow to get the embed code of an instagram post
Navigate to the instagram post, e.
Tag: SharePoint Page
posts
Embedding Instagram Posts in Modern SharePoint Pages using embed webpart
Embedding Instagram Posts in Modern SharePoint Pages using embed webpart I was investigating on how to display an instagram post within a Modern SharePoint News Page.
The generic embed code from instagram post uses the script tag which is not allowed within SharePoint Modern Page unless script webpart is allowed to be used.
These are the steps to follow to get the embed code of an instagram post
Navigate to the instagram post, e.
Tag: Embed, Power Apps
posts
Troubleshooting Blocked Links to SharePoint Pages in Embedded Power Apps
Troubleshooting Blocked Links to SharePoint Pages in Embedded Power Apps When embedding Power Apps using the “Microsoft Power Apps web part,” you may encounter an issue where links to SharePoint pages are blocked from image or button controls. This issue does not affect links to Power Apps themselves. The error message you might encounter is as follows:
“Unsafe attempt to initiate navigation for frame with origin ‘domain.sharepoint.com’ from frame with URL ‘https://pa-static-ms.
Tag: Links to SharePoint Pages
posts
Troubleshooting Blocked Links to SharePoint Pages in Embedded Power Apps
Troubleshooting Blocked Links to SharePoint Pages in Embedded Power Apps When embedding Power Apps using the “Microsoft Power Apps web part,” you may encounter an issue where links to SharePoint pages are blocked from image or button controls. This issue does not affect links to Power Apps themselves. The error message you might encounter is as follows:
“Unsafe attempt to initiate navigation for frame with origin ‘domain.sharepoint.com’ from frame with URL ‘https://pa-static-ms.
Tag: Image, Power Automate
posts
Add or Update Image Column in SharePoint with Power Automate: Download and Use Images from the Web
Add or Update Image Column in SharePoint with Power Automate: Download and Use Images from the Web The blog post titled Update image in SharePoint/Microsoft Lists Image columns using Power Automate by Ganesh Sanap rovides a guide on how to update an image column in SharePoint or Microsoft Lists using Power Automate. The native “Create Item” and “Update Item” actions in Power Automate do not directly support adding or updating image columns.
Tag: SharePoint List
posts
Add or Update Image Column in SharePoint with Power Automate: Download and Use Images from the Web
Add or Update Image Column in SharePoint with Power Automate: Download and Use Images from the Web The blog post titled Update image in SharePoint/Microsoft Lists Image columns using Power Automate by Ganesh Sanap rovides a guide on how to update an image column in SharePoint or Microsoft Lists using Power Automate. The native “Create Item” and “Update Item” actions in Power Automate do not directly support adding or updating image columns.
Tag: CI/CD
posts
Sharing Connection References with Service Principal in Azure DevOps for Power Platform ALM
Introduction When setting up your Azure DevOps pipeline for deploying a Power Platform solution, you may encounter an error message if your solution relies on connection references.
The reason given was : An unexpected error occurred.
This generic message does not provide much help and can occur for multiple reasons. In my scenario, it was related to the connection references in the target environment not being shared with the service principal.
posts
Secure Power Platform Deployments with Azure DevOps Workload Identity Federation
Client secrets have traditionally been the go-to method for deploying Power Platform solutions from Azure DevOps, utilizing app registrations from the Azure platform. However, my personal experience has shown that this approach can be problematic, especially when you are not an application admin. It often involves wasting time figuring out why deployments have failed due to expired or missing client secrets. Even when reaching out to someone with application admin rights, they might generate a new client secret but forget to update the service connections for each service connection within Azure DevOps or the application admin does not have access requiring to reach out to someone else who have access, causing further disruptions.
posts
M365 Developer Tenant Challenges
My Visual Studio subscription was deactivated, resulting in the loss of my Azure subscription and licenses to access Microsoft Teams within my M365 developer tenant.
This post covers my attempts to recover access in vain.
Access to Microsoft Teams I thought I could extend my access to Microsoft Teams by opting for a free trial for Microsoft 365 E5 (no Teams) and Teams Premium - Microsoft Teams Premium.
However, this did not restore access to Microsoft Teams despite waiting multiple hours after I added the above licenses.
posts
Azure DevOps Spfx Deployment Workload Identity Federation
Introduction Thanks to Kinga Kazala for her timely article Deploy SPFx app using pipeline’s Workload Identity federation, which showcases how to use Workload Identity Federation to alleviate the need for using Entra app secrets or certificates. This method simplifies the setup process, especially when there’s reliance on a single person who might be unavailable.
We initially set up the SPFx pipeline for the Test environment using certificates with CLI for M365.
posts
Powerapps Listforms Deployments solutions
Power Apps list forms deployment with help of solution Power Apps List forms are be default hidden from the list of apps from https://make.powerapps.com/. Deployment of list forms remains a challenge.
This is my brief attempt to try to streamline the process using a solution. A solution within Power Platform makes it dataverse friendly.
Let’s say you already have a list form tied to a list. In the background it is a hidden list.