March 31, 2022

Create Collapsible Sections on SharePoint Modern Pages

Overview:

In this article, we will learn, how we can create Collapsible Sections in Modern SharePoint Pages. So, let’s get started!


Step 1:

Edit your SharePoint Modern Page and click on Edit Icon for the section you want to make collapsible.

Step 2:

Now, we need to configure, different Properties.

 

Make this section collapsible

Property set to true to make our section collapsible

Section display name

Property to show display name for a section.

Show divider line between sections

Property to show divider line between two sections. We will turn on the switch.

Expand/collapse icon alignment

Property to set alignment for Expand/collapse alignment to Right or Left side. We will set Left.

Default display

Property to set default collapsed property for the section. Set turn off for this example!

 

Step 3:

Once the above properties are configured, Publish the page and the collapsible section is ready to use. Isn’t that amazing? The output looks like the below screen.

 

Conclusion:

This is how we can make collapsible sections in SharePoint Modern Pages in out of the box manner. Isn’t that cool?

Happy SharePointing!!

If you have any questions you can reach out our SharePoint Consulting team here.

March 24, 2022

Power Automate - Approval Process not working from Outlook for Government Tenant

Scenario

While working on a requirement from a government client based out of Carolina, United States there was a requirement to create a Power Automate Flow for the Leave Application. 


We created an Automated Flow which would trigger when a new request is added by the employee, and they would have an option to select their manager. The Approval would be sent to the reporting mentioned manager and the manager would receive an email asking for the approval of the Leave Application. Based on their response (Approval or Rejection), the Flow would again trigger a response to the Leave Applicant that the application is accepted or rejected based on the manager's feedback and comments.


The Flow was working fine, but the client came back with feedback during UAT, specifying that every time, when the manager provides his/her feedback the Flow would navigate them from Outlook to Power Automate platform and need to submit the response again in that. And the feedback submitted from Outlook was not considered.

 

Resolution

The issue only occurred on the client's tenant, we tried various tenants but could not replicate the issue. Each tenant we tried would accept the response that was clicked on Outlook. 

We looked at various articles and documents from Microsoft and found out that the behavior of Power Automate is based on the SharePoint Tenant. The Client was a US Government client and some of the features available in the commercial version of Flow are not available in Flow for US Government customers, so we could not cut down the steps.


Client tenant with the government domain:




Conclusion

When dealing with Power Automate, it is essential to check various functionalities that are supported by Power Automate and SharePoint based on the Tenant of the Client. 

Reference URL for the above-mentioned details: https://docs.microsoft.com/en-us/power-automate/us-govt

If you have any questions you can reach out our SharePoint Consulting team here.

March 17, 2022

SharePoint Online - Content Types are not published to SharePoint Site from Content Type Hub

Introduction

We recently implemented an automated process to provision new Sites and apply a Site Design using Power Automate for a construction and engineering company based out of Massachusetts, United States. The Site Design included a process of creating new Lists and adding Content Types to the Lists. Here the Content Types are the ones that are published across all site collections from Content Type Hub. But in the recent past, Microsoft has switched content-type publishing approaches from a "Push Everywhere Model" to "Pull as Needed". So, what does this mean for us? To understand this, let's first look at how the old approach worked.

Problem Statement [Old Content Type Publishing Process]:

In the old process, the published content types in Content Type Hub were synced in all the site collections by Timer Job. There was no fixed sync duration - it took anywhere between a few hours to even 48 hours. This led to the issue of indefinitely waiting for a published content type to get synced to the site. Furthermore, unnecessary content types were also synced to the site collections.

To address these issues and to improve the performance and reliability of the sync, Microsoft has changed the way content type publishing worked. Let's now look at the new approach.

Resolution [New Content Type Publishing Process]:

The content type publishing will now sync to sites “on-demand”. Due to this, any solution dependent on waiting for a published content type to get automatically copied to all sites, stopped working. Thus, the users need to select or pull content types directly from the hub while adding them to lists and libraries. This approach solves the below issues:
  • Reduces the copying of published content types to sites where they are not desired
  • Adds published content types to a document library or list in a quicker way
  • Reduces unnecessary resource consumption to sync all published content types
Currently, there are three different ways available to programmatically add published content types to the desired destinations as below:
  • Site Scripts
  • PnP
  • CSOM

How to add published Content Types to any Site Collection programmatically using Site Scripts?

A new addContentTypesFromHub verb is available for use within SharePoint site script actions. This verb syncs content types from a content type hub to a specific site.
Example: 
 {  
  "verb": "addContentTypesFromHub",  
  "ids": ["0x01007CE30DD1206046628BAFD1C39A850120"]  
 }  
Note: Here ids can be an array of Content Type ID(s) that need to be synced.

Below is an example of Site Script to sync required Content Type(s) from a Content Type Hub to a specific site:
 {  
      "$schema": "https://developer.microsoft.com/json-schemas/sp/site-design-script-actions.schema.json",  
      "actions": [  
           {  
                "verb": "addContentTypesFromHub",  
                "ids": [  
                     "0x010100867E94987C6169418A7FB1B63A62AED5",  
                     "0x010100867E94987C6169418A7FB1B63A62AED501",  
                     "0x0120D520007912086EAFB3B24BA71AF502B342CDF8",  
                     "0x010100867E94987C6169418A7FB1B63A62AED502"  
                ]  
           }  
      ],  
      "version": 1  
 }  

We will explore PnP and CSOM approaches in the next part of this article.

Conclusion:

This is how we can change the approach to publish Content Type(s) from Content Type Hub to any SharePoint Site with a new approach. Hope this helps!

If you have any questions you can reach out our SharePoint Consulting team here.

March 10, 2022

How to create a Teams Invite using Power Automate?

Overview:

In this blog, we will learn how we can create a Teams Invite using Power Automate. So, Let’s get started!

Business Requirement:

When a SharePoint List Item is created, we want to create a Microsoft Teams Invite with the help of Power Automate! We have a list structure with the following list schema. Now, let’s start building the flow.

Step 1:

Add a Trigger – “When an item is created”. Provide Site address and URL.

Step 2:

Initialize two variables with the type String and Array.

Step 3:

Create Attendees array using the following JSON structure. Here, we need to provide “AttendeesDisplayName” and “Attendees Email”. This will automatically add Apply to each loop.
 {  
  "type": "required",  
  "emailAddress": {  
   "name": "@{items('Apply_to_each')?['DisplayName']}",  
   "address": "@{items('Apply_to_each')?['Email']}"  
  }  
 }  

Step 4:

Set Meeting Body with the following structure.
 {  
  "subject": "@{triggerOutputs()?['body/Title']}",  
  "body": {  
   "contentType": "HTML",  
   "content": "@{triggerOutputs()?['body/Description']}"  
  },  
  "start": {  
   "dateTime": "@{triggerOutputs()?['body/StartDate']}",  
 "timeZone": "UTC"  
  },  
  "end": {  
   "dateTime": "@{triggerOutputs()?['body/EndDate']}",  
   "timeZone": "UTC"  
  },  
  "location": {  
   "displayName": "Online"  
  },  
 "attendees": @{variables('vAttendees')} ,  
  "isOnlineMeeting": true,  
  "onlineMeetingProvider": "teamsForBusiness"  
 }  

Step 5:

Add an action – “Invoke an HTTP request”
Add Method as “POST”
Add URL of the request, Headers, and pass “MeetingBody” for the body of the request.

Click on ellipses and select - "Add new connection"

Provide Base Resource URL and Azure AD Resource URI for Microsoft Graph.

Step 6:

Now, let’s save & test the flow.

Flow ran successfully.

Teams invite has been generated successfully.

Conclusion:

This is how we can simply create Power Automate flow to create Teams Meeting invite! Happy Power Apping!

If you have any questions you can reach out our SharePoint Consulting team here.

March 3, 2022

Copy a File with New Name in SharePoint Document Library using Power Automate

Introduction

In this blog we will learn how can we copy a file with a new name from one Document Library to another Document Library using Power Automate. Follow the below steps to copy a file with new name:

Steps

Step 1: Add an action for Initialize Variable. Now create a variable for the new file name and give it a value. This value will be the new file name that you want after copying the file. This file name will be with extension.

Step 2: Now, add an action for Get file content.

  • In Site Address field, select the site from which site's document library you want to copy the file.
  • In File Identifier field, select the file which you want to copy using the folder icon of this field.

Step 3: Now, add an action for Create file

  • In Site Address field, select the site where you want to copy the file.
  • In Folder Path field, select the path of the folder where you want to copy the file by clicking on the folder icon. (In above screenshot, we have used dynamic path)

  • In File Name field, select the variable which we have created in first step.
  • In File Content field, add the below expression:
    • body('Get_file_content')

Step 4: Now when this flow will be triggered, it will copy file with the new name.

Conclusion

This is now we can copy a file with a new name using Power Automate. Hope this helps!

If you have any questions you can reach out our SharePoint Consulting team here.