Wednesday, February 28, 2024

Integrate with Viva Connections Resources programmatically

Recently, Microsoft began rolling out an updated Resources section in Viva Connections, introducing a new experience that allows organizations to curate a list of useful links for their employees directly in Viva. Today, I'm excited to walk you through the recent enhancements in Viva Connections Resources and how developers can extend this new experience programmatically.


The evolution of Viva Connections Resources


Previously, the Resources section in Viva Connections displayed the navigation links from the global navigation in SharePoint. While mobile versions of Viva Connections still display navigation links from the global navigation in SharePoint, the revised desktop/web Teams version includes an updated, more visually appealing, and user-friendly Resources section, that eliminates the need for editing the links in SharePoint. The new experience is disconnected from the SharePoint global navigation and updates to the Resources section don’t reflect in the global navigation. According to Microsoft, mobile support is planned for the end of Q2 2024.

Behind the curtain of the new Viva Connections Resources experience


When I first explored the new Resources section, my immediate question was: “Where are those links stored?” Microsoft seems to be keeping the Resources list somewhat hidden, allowing link management only through the new Viva Connections Resources section. However, after some research, I discovered that these links are stored in a hidden SharePoint list that you can’t access via the Site Contents view in SharePoint. The title of the hidden list isn’t user-friendly: CompanyList-006e2221-e1df-45c0-8753-83a98de5ecf1 (going forward, referred as Company Links); not even for a hidden list 😬 Use the following link to access the Company Links list: …/Lists/CompanyList006e2221e1df45c0875383a98de5ecf1.

Anatomy of Viva Connections Resources


The new experience has a simple UX that supports the following operations: create, edit, reorder, and delete a link. If you want to extend your Resources section with new links, the best way is to use the "Add a link" form within Viva Connections. The following list describes what fields are available on the form and how they tie back to the properties of the Company Links list in SharePoint:
  • Display name: Maps to the “Title” property. Required. Maximum of 255 characters.
  • Thumbnail: Maps to the hidden property “Resource Link Icon” (internal name: Resource_x0020_Link_x0020_Icon) and accepts a Fluent UI icon, for example, AutoEnhanceOn. When you create a new link via the UI and you choose the “auto-select” option, the icon representing the link auto-selected is based on the URL. For example, this is what it looks like for Yahoo: https://s.yimg.com/cv/apiv2/social/images/yahoo_default_logo.png.
  • URL: Maps to the “Resource Link URL” (internal name: Resource_x0020_Link_x0020_Url) property and accepts hyperlinks. Required.
The order of appearance determines how a link is displayed in the Resources section and this information is stored in the hidden property “Resource Link Order” (internal name: Resource_x0020_Link_x0020_Order). When you create a new link, the new link appends to the end of the existing list of links. When you move a link, for example, via the UI, the hidden property gets a calculated value representing the link's new order in the UI.

Limitation or opportunity


According to Microsoft, you can have up to 48 links in the new Resources section, but is this a hard limit? Indeed, the UI prevents you from adding more than 48 links. Now, what's the value of a good, old-fashioned SharePoint list if you can't manage links flexibly? 😇 I created a simple PowerShell script that added 1000 links to the Company Links list. Surprisingly, the new Resources section displayed all the links, breaking the 'minimalist' approach suggested by the 48-link limitation. Technically, the system can handle much more than 48 links, but you might want to consider whether you want to work in the gray area of unsupported extensibility of Microsoft services.

Exploring Viva Connections Resources programmatically


Now that we understand how the new Resources section works, it’s time to explore the new experience with the Microsoft Graph API PowerShell. The following examples show how to create and update a link in Viva Connections Resources.

Creating a link


The following PowerShell command shows an example of a request that creates a new link in Viva Connections Resources.


Updating a link


The following PowerShell command shows an example of a request that updates the icon of an existing link.


Challenges with hyperlink columns in the Microsoft Graph API


The initial title for this blog was “Integrate with Viva Connections Resources using the Microsoft Graph API”. However, I found a limitation while trying to create list items with the SharePoint API in Microsoft Graph. Unfortunately, the Create and Update operations on a listItem resource in Microsoft Graph don’t support hyperlink columns. This means that you can’t use the POST or PUT /sites/{site-id}/lists/{list-id}/items endpoint to create list items that contain hyperlinks. This limitation, present since 2017, is disappointing! I hope this blog post helps to highlight this issue, demonstrating yet another scenario where Microsoft customers could benefit from the SharePoint API in Microsoft Graph to enhance Microsoft 365 services. I also hope to soon update this blog post with instructions on how developers can use the Microsoft API to create and update links in Viva Connection Resources 🤞


Exploring deeper with internal APIs


Similar to Announcements in Viva Connections, the new Resources section uses internal APIs for all CRUD operations as well as for reordering. The following example shows the endpoint that returns all links.

https://example.sharepoint.com/_api/EE/VivaResources/GetLinks

I assume that the “EE” path in this endpoint stands for “Employee Experience”, a resource that already exists in Microsoft Graph and which Microsoft has recently extended by including Viva Goals in the beta API set.

Conclusion


The recent updates to Viva Connections Resources represent a significant step towards an enhanced user experience and functionality. The detachment from the SharePoint global navigation offers a more user-friendly way for organizations to manage their resources (links). The new architecture, based on a SharePoint list, enables developers to programmatically extend the new Resources section, supporting two-way integration scenarios. For example, you can display Viva Connections Resources within your SharePoint intranet.

I hope the Microsoft team responsible for the SharePoint API in Microsoft Graph will finally extend the Create and Update operations in the listItem resource to support hyperlink columns 🙏 🍀 Fingers crossed!

If you're looking for additional extensibility options for Viva Connections, consider checking out my other blog post. It covers Announcements in Viva Connections and how to extend them. For more details, see Integrate with Announcements in Viva Connections using the Microsoft Graph API.

See more



Thanks for reading,
Jarbas