Thursday, March 7, 2024

Amplify your comms reach using Microsoft Viva: A Viva Connections & Amplify FAQ

In my recent session about “How to amplify your comms reach using Microsoft Viva”, I got a good amount of questions from a very engaging audience. First, I'd like to thank everyone who joined the session, for all your questions, and for the discussions that followed. It was impressive for me to see how many people have adopted Viva Connections already and the growing interest in Viva Amplify.

Following the #SharingIsCaring mindset, in this blog post, I share the questions I got during my session and the related answers. I hope this might also be useful for you 😊

For clarity and additional context, I have included a screenshot below to show the new Viva Connections  home experience on desktop.


FAQ:


Q1: If I use SharePoint as the default landing experience in Viva Connections on desktop, is Viva Connections just empty on phone? I want to choose SharePoint as the default landing experience for Viva Connections, but I don't like that the mobile version will be empty.

If you don't configure the Viva Connections Dashboard with cards, you will see some default ones initially. The Feed tab in the mobile app will show content since this happens automatically and the Resources tab displays the global navigation of your intranet; according to Microsoft, this should change in the near future. For more details on the Resources tab in the mobile app, see the initial note on the Viva Connections resources section.

For a better Viva Connections experience on mobile devices, I recommend that you explore the available dashboard cards and configure the Viva Connections Dashboard based on the specific needs or preferences of your organization. For details on how to configure the Viva Connections Dashboard, see Create a Viva Connections dashboard and add cards.

Q2: A Microsoft rollout set the new Viva Connections home experience as the default landing experience in Viva Connections. How can I revert this change and display our organization home site (SharePoint home site) as the default landing experience?

You can use the following PowerShell command to set SharePoint as the default landing experience. It’s literally one line of code but requires a SharePoint administrator. Note that this command only changes the default landing experience for Viva Connections on desktop. The Viva Connections experience on mobile app doesn’t change.


  • VivaConnectionsDefaultStart = true; Sets the SharePoint home site as the default landing experience in Viva Connections.
  • VivaConnectionsDefaultStart = false; Sets the new Viva Connections desktop experience as the default landing experience in Viva Connections.

For more details see, Set-SPOHomeSite

Q3: Has Microsoft really deprecated the Viva Connections Feed web part?

Yes, according to Microsoft the Viva Connections Feed web part is planned to be deprecated in Q1 2024. For more details, see Components to Viva Connections

Q4: Can I display Viva Connections Announcements in SharePoint?

Currently, Microsoft doesn’t offer any option to surface Viva Connections Announcements in SharePoint. Announcements will only appear for targeted users in the new Viva Connections home experience (desktop and mobile). For more information, see Use announcements in Viva Connections.

Q5: Does Viva Connections Announcements send push notifications in Teams?

According to Microsoft, “push notifications” (or announcement notifications) are currently only supported on Viva Connections on the Teams mobile experiences. Microsoft plans to support announcement notifications on the desktop experiences via a feature release.

Q6: Considering the new Resources experience in Viva Connections, are navigation links taken from SharePoint global navigation?

The SharePoint global navigation remains as-is, but the new Viva Connections home experience doesn't show the global nav links in the new Resources section anymore. This isn't the case yet for the Viva Connections mobile app; here what Microsoft says about it: "Links that are created via in-app editing via Viva Connections will not appear in mobile for targeted release customers at this time. Updates to mobile are planned for the end of Q2 2024." – For more details, see Viva Connections resources.

Q7: The new Viva Connections home experience removes the global navigation links from the Resources section. Will employees now have to be trained on how to access the global nav links from the SharePoint global navigation available on the sidebar navigation in Microsoft Teams?

Unfortunately, the new Resources section shows curated links and is disconnected from the SharePoint global navigation. As you said, the global nav appears when users select the branded app icon in Teams, and surfaces elements shared with the SharePoint global navigation. I'm afraid that this will be the option to access the global nav from Viva Connections app in the Teams desktop/web client going forward.

Q8: Feedback from an attendee who uses the boosting news feature in SharePoint. In our company, we are boosting news to show in the News card in the Viva Connections dashboard. This requires using organizational news sites and there's a limitation of 100 news channels. It's a much-appreciated feature to promote important news. 

Here a few links about organizational news sites and boosting news:

Q9: Can links in the new Resources section be categorized?

No, currently there isn’t a way to categorize the links that appear in the new Resources section.

Q10: Can you control the order how links appear in the Resources section?

Yes, you can control the order how links appear in the new Resources section using drag and drop 🙂

Q11: What’s the minimum amount of licenses required to use Viva Amplify?

According to Microsoft “Anyone with a license for Viva suite or Viva Employee Communications and Communities can create campaigns or receive communications through Viva Amplify. Engagement metrics of those receiving communications through Viva Amplify will be included in analytics.”

I personally find the part about “receive communications through Viva Amplify” difficult to understand. The list price for a Viva Amplify license is $2 PUPM (per user per month). Would I need to buy Viva Amplify licenses for all users in my organization just to receive comms from Viva Amplify!? 🤔 I assume that the licensing requirement for users receiving comms might be related to the engagement metrics part. If this is correct, Viva Amplify would show only analytics related to Viva Amplify-licensed users, but you would still be able to reach all employees via Viva Amplify.

See also


Thanks for reading,
Jarbas

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

Wednesday, January 3, 2024

How to increase your comms reach with Microsoft Viva?

The marketing messaging around Microsoft Viva touches the comms aspect, mentioning that Viva has tools for communication, but what tools are these? Let’s assume you're familiar with the Viva tools; what options do corporate communicators then have to reach their audience in Microsoft 365?

Microsoft Viva offers multiple applications, but only three are part of its “Employee Communications and Communities” proposition: Viva Amplify, Viva Connections, and Viva Engage. Viva Engage concentrates on the community and employee engagement part of this offering; hence, I didn’t cover it in this blog post. In this blog post, I focused more on Viva Amplify and Viva Connections, and how communicators can use them to increase the reach of their messages within their companies. 


Licensing


Advanced comms capabilities in Microsoft 365 come with an additional cost. By purchasing the Microsoft Viva Employee Communications and Communities license at a list price of $2 per user, per month, you gain full access to the features of Viva Amplify, Viva Connections, and Viva Engage. Note that this might not apply to Copilot features in Viva Amplify or Viva Engage, whenever they become available.

Viva Amplify


The digital workplace consists of multiple applications, so you and your coworkers spend time in different tools throughout the day. When you're collaborating on a project or for daily communication (calls and chats) with your coworkers, Microsoft Teams might be the place where you spend a significant part of your work hours. When you're engaging and discussing with your coworkers about topics such as Artificial Intelligence (AI) or Environmental, Social, and Governance (ESG) in internal communities, you might be in Viva Engage. When you're accessing corporate news, how to pages, or documents, SharePoint is probably your go-to place. If you're a vendor working partially on a project, your primary communication tool with your client might be email, for example, using Microsoft Outlook. We have different touch points across Microsoft 365, and as a communicator, you want to ensure that your messages reach your audience no matter where they are.

Let's now imagine a scenario where the “Mouse & Cat” organization, in cooperation with an external agency, develops a powerful, AI-based chatbot that integrates with the organization's data. The comms team of “Mouse & Cat” was tasked with the creation of a comms campaign about the AI chatbot (Chatty) to keep employees and the external agency informed about the project's development, pre-launch, and launch activities. Enter Viva Amplify! The comms team of "Mouse & Cat" can create a comms campaign in Viva Amplify that, in simple words, will help them create and publish news posts as well as understand how the content resonates with their audience. For example, the comms team can publish a news post titled "Introducing 'Chatty', Our Internal and Secure AI-Powered Chatbot" across multiple channels; they can publish it as corporate news in one or more SharePoint sites, in the AI community in Viva Engage (coming soon to Viva Amplify), within the chatbot project in Microsoft Teams, and even email it to relevant employees at the external agency.


Launched in October 2023, Viva Amplify is an ideal tool for communicators in Microsoft 365, enabling them to reach their audience across multiple channels and keep everyone informed. Viva Amplify supports two key comms aspects a) help communicators effectively reach their audience and b) help communicators understand how their audience interact with the content across different channels. These insights enable comms teams to track metrics like unique views and identify the tools through which employees most engage with the content.

A campaign in SharePoint vs. a campaign in Viva Amplify


A Viva Amplify campaign is a dedicated area in Microsoft 365 that comms teams can use to work on one or more news posts targeting a common topic or a comprehensive comms campaign. From planning to content creation, publishing, and analytics, a campaign in Viva Amplify provides the structure for the content creation flow and content performance analysis.

A campaign in SharePoint is usually a site that concentrates information about a specific topic for a given period. In a campaign site in SharePoint, you can find documents, links, events, news posts, and more about a common topic.

Viva Connections


Viva Connections is a Microsoft Teams app that you can access from the Teams client or mobile devices, supporting audience targeting, branding customization, localization, content curation, extensibility, and multiple instances. You can use Viva Connections to access important announcements, company links, and news posts from SharePoint. You can also use Dashboard cards (widgets) to access information as well as connect with applications from your digital workplace. For example, use the People card to find information about your coworkers or use the Shifts card to check your shifts or clock in and out.

Launched in 2021, Viva Connections was initially introduced to simplify access to the SharePoint home site for Microsoft Teams users without the need for context switching. It also brought a new mobile experience, making it easier for companies to connect with their frontline workers. Viva Connections has significantly evolved over the past years, and the recent feature rollouts make this Viva app more attractive for comms teams operating in Microsoft 365 than ever before. From announcements to news spotlight, and more, the following sections cover the currently available options that comms teams can use to increase the visibility of their messages in Viva Connections.


Announcements


If you're looking for a way to communicate important messages to specific user groups in your organization, Announcements in Viva Connections is an excellent choice. Announcements take a prominent presence in the Viva Connections home experience, appearing as a top banner. Announcements remain visible for a maximum of two weeks, and you need to keep your messages concise with a title (max. of 60 characters length) and description (max. of 250 characters length).

For more information on Announcements in Viva Connections, see Use announcements in Viva Connections. If you're looking for integration options with Announcements in Viva Connections, see Integrate with Announcements in Viva Connections using the Microsoft Graph API.

Boosting news


You can boost up to ten news posts from an organizational news site in SharePoint, positioning them prominently in the following places in Viva Connections: The Feed and the News card if configured to display boosted news. However, the recently updated experience for the Feed doesn’t seem to support boosted news, so I recommend that you test this feature before depending on it to increase your comms visibility. You can also define the order and duration for how long news posts should be boosted.

For more information on how to boost SharePoint news posts, see Boost SharePoint news from organization news sites.

What is an organizational news site?


An organizational news site is an official space in SharePoint for communicators to publish their news posts, giving their content a higher relevance in the Microsoft Feed (aka. Viva Connections Feed) as well as a special visual treatment in the SharePoint start page. Currently, you can have up to 100 organizational news sites in your Microsoft 365 tenant, but you (or someone from your IT team) need to use PowerShell to designate a SharePoint site as an organizational news site. I know, I know… this isn’t an ideal experience, but I expect it to become user-friendly over time. 

Is my SharePoint home site an organizational news site? Yes, a SharePoint home site automatically becomes an organizational news site if it was created as a communication site.

For more information on organizational news sites, see Create an organization news site.

Company links


The new Resources experience in Viva Connections allows intranet owners to easily add new links that are visible to all employees in the organization. You can use that area to curate links to specific content pages in your organization, such as “Meet the HR team”, or a link to a comms campaign in SharePoint increasing the visibility of important topics.

News Spotlight


New in Viva Connections, the News Spotlight appears prominently on top of the Viva Connections home experience, displaying news posts from the home site in a carousel format based on the order they were last published and respecting the audience targeting applied to the news posts in SharePoint. Boosting a news post doesn’t impact the relevance of the content displayed in the News Spotlight section. Use this section to highlight and surface news posts that are most relevant to your audience.

Microsoft says that a future update is planned to make the News Spotlight customizable and to include news posts from organizational news sites. Stay tuned!

News card


Previously called Top News card, the News card in Viva Connections Dashboard is a valid option that you can use to display news posts from the following sources: “Boosted news”, “From the home site”, “From all sites in this hub if the home site is associated with a hub site”, “From selected sites”, or “Recommended for the user”. Use the News card to increase the visibility of news posts from a specific source in our intranet. For more information on the configuration options for the News card, see Create a Viva Connections dashboard and add cards.

Is the Viva Connections Feed a good option for communicators?


The new Feed experience has significantly changed with the latest, major Viva Connections update. Previously, the Feed in Viva Connections showed only content from SharePoint, Viva Engage, and Stream. Apparently, Microsoft has bigger plans for the Feed section, so they renamed the Viva Connections Feed to Microsoft Feed (BTW, if you aren’t aware of that, Microsoft loves product renames), extending its functionalities and removing the focus on communication. The new Feed lives behind an extra tab in Viva Connections that when clicked, shows five buttons on top of the page with content related to specific areas: For you, Stay on top, Meeting insights, My network, and News. 

According to Microsoft, “The feed automatically balances fresh and engaging content with corporate communications to keep users interested, while also ensuring that they see the most important information related to their daily work life.”; So, the Feed doesn’t give communicators control over the order their messages appear. The Feed doesn’t even display news posts in the publication order. Also, there are some extra clicks required to get to the News section in the Feed tab, complicating findability. Instead of using the new Feed and relying on luck and chance to reach my audience, I would rather use other options in Viva Connections to bring my message to the company employees. At the end of the day, the Microsoft Feed will include news posts anyway, but this isn’t a reliable option to reach employees.

For more information about the Microsoft Feed, see Overview of Microsoft Feed.

In Microsoft 365, the sky is the limit


If you have a specific use case that you’d like to implement and you can’t find the solution with out-of-the-box capabilities, never forget that Microsoft 365 is a highly customizable platform. You can work closely with your IT department or a consultancy company to develop a custom solution that will help address your specific scenario.

Conclusion


The comms aspect in Microsoft Viva has significantly evolved over the past few years from limited display-only functionalities to multi-channel publishing and more visibility for corporate news, giving communicators more options and control over the "when" and "where" to reach the company employees. If your organization can afford the extra investment, Viva Amplify helps you structure, create, publish, and monitor your news posts.

See also

Thanks for reading,
Jarbas

Monday, December 11, 2023

Create and manage Viva Engage communities with the Microsoft Graph API

Microsoft continues to expand its services and bring more functionalities into Microsoft Graph. The latest addition is the introduction of an API set for Viva Engage. I’m extremely positive about this recent development, as it introduces support for interacting with Viva Engage (formerly known as Yammer) via Microsoft Graph; laying a solid foundation for future enhancements to this API set and allowing developers to benefit from all Microsoft Graph features, including authentication and throttling management. This blog posts introduces the new Viva Engage API in Microsoft Graph and related scenarios.

Anatomy of a Viva Engage community

Each Viva Engage community is linked to a Microsoft 365 group; however, the ID of the associated group isn’t the same as the ID of the related community. This close relationship enables developers to expand the management scenarios on a community by operating at group level. When changes are applied to the associated group, they automatically reflect in the related community. This allows for more extensive scenarios that go beyond the capabilities supported in the Viva Engage API. For more information on the Viva Engage and Microsoft 365 group relationship, see Viva Engage and Microsoft 365 groups.



The Viva Engage API in Microsoft Graph

The Viva Engage API in Microsoft Graph supports three scenarios that allow developers to:

  • Create a community
  • Monitor the creation of a community
  • Access a community
The current API set is limited to creating and getting communities and it doesn’t support all CRUD operations. For consistency with similar API sets such as the team and group, I hope that the Viva Engage team will extend this API set with the following additional operations on the community resource in the short term: List, Update, and Delete community.

You can only use the Viva Engage API on Viva Engage networks in native mode, which has been the default for all new Viva Engage tenants since 2020. For more information on native mode, see Overview of Viva Engage in Native Mode for Microsoft 365.

Creating a community


The Create operation on the community resource triggers an async operation for the creation of a Viva Engage community. This is a similar approach used also for the creation of Microsoft Teams teams. 

You can create communities using delegated and application permissions. When you create a community using delegated permissions, you’re automatically defined as a community owner. When you create a community using application permissions, you have to specify a community owner in the request body.

The following example shows a request for creating a community using application permission. Note that the response body contains an Operation-Location header with a link that allows you to monitor the async operation.


For more details, see Create community.

Monitoring the creation of a community


Use the link in the Operation-Location header to poll for status update on the creation operation. Monitor the response body of the following request for a status update that indicates whether the creation operation is still running, failed, or succeeded.



For more details, see Get engagementAsyncOperation.

Accessing a community


Retrieve a newly created or already existing Viva Engage community via the Get operation on the community resource. The following example shows an example of a request that returns a community object in the response body.


For more details, see Get community.

You can also access the following two relationships to get more information about a community:

  • group: Returns the Microsoft 365 group associated with the community. For example, https://graph.microsoft.com/beta/employeeExperience/communities/eyJfdHlwZSI6Ikdyb3VwIiwiaWQiOiI4MzIxMjc1In0/group
  • owners: Returns the administrators of the community. For example, https://graph.microsoft.com/beta/employeeExperience/communities/eyJfdHlwZSI6Ikdyb3VwIiwiaWQiOiI4MzIxMjc1In0/owners

Integrating with Viva Engage communities via the Microsoft 365 group API


As mentioned previously, every Viva Engage community is associated with a Microsoft 365 group. Operations ran on the associated group, automatically apply to the related community. This section explains five scenarios that you can implement in a Viva Engage community via the Microsoft 365 group API. For more scenarios, see Viva Engage and Microsoft 365 groups.

Adding and removing members from a community


Use the Add members API on the associated group to update the members of the related community. Likewise, you can use the Remove members API to remove the members from the related community.

Adding and removing an admin from a community 


Use the Add owners API on the associated group to add admins to the related community. Likewise, you can use the Remove owners API to remove the admins from the related community.

Renaming a community


Use the Update group API on the associated group to update the displayName property of the related community.

Conclusion


I’m positive about the new Viva Engage API support for two main reasons:
  • Microsoft Viva has been around since 2021. Initially, the extensibility options for Viva apps were limited but now Microsoft continues to expose more and more API sets that enable developers to integrate and extend the services of Viva apps such as Viva Learning, Viva Goals, and now Viva Engage.
  • I spent part of my career managing and developing provisioning engines. It was awkward to use the Yammer REST API to create Yammer groups while the provision of teams and groups happened via the Microsoft Graph API. Independent software vendors (ISVs) provisioning Viva Engage communities can finally benefit from a unified approach for creating collaboration spaces and communities.
I’ll keep a close eye on the development of the Viva Engage API and look forward to seeing more Viva apps available for integration via Microsoft Graph.


Thanks for reading,
Jarbas

Thursday, November 23, 2023

Exploring GitHub Copilot

GitHub Copilot is a game-changer in the coding world. It’s like having a coding “genius” sitting right next to you, ready to help you at any time. Yeah, you read that right. It’s like having a very senior developer available for all your questions whenever you need them. And here's why I'm especially thrilled: As I get ready for an internal workshop on December 7th at our London office, I'm preparing a session about this very exciting topic. In the run-up to this event, I've been diving deep into GitHub Copilot's capabilities, and I’m happy to share my findings with you over this blog post.

If you want to learn more about GitHub Copilot, I recommend that you take the Microsoft learning path: “GitHub Copilot Fundamentals - Understand the AI pair programmer” that served as the primary source of content for this blog post.

What is GitHub Copilot?


In a nutshell, GitHub Copilot (going forward, Copilot) is a virtual, AI pair programmer that can help you write code faster and with less work. It works tirelessly by your side offering autocomplete-style suggestions on your code and comments. 

Research reveals that developers with access to Copilot finished their programming tasks 55.8% quicker than a control group without the AI pair programmer by their side. This demonstrates that Copilot increases developer productivity significantly and is an added value for those using it. For the full research, see The Impact of AI on Developer Productivity: Evidence from GitHub Copilot.

Copilot vs. ChatGPT


During my research, I considered whether ChatGPT can serve as an alternative to an AI pair programmer such as Copilot. At the end of the day, ChatGPT is free and user friendly, plus my colleagues might already be using it. Now, although ChatGPT is free and appealing, Copilot has more to offer for people who write code. To illustrate, I created the following comparison.

Feature

ChatGPT

GitHub Copilot Individual

Subscription cost

Free

$10/month

Primary function

Conversational AI

AI pair programmer

Availability

Web-based application, mobile app

IDEs (Integrated Development Environments)

Audience

General public, various industries

People who write code

Model

GPT-3.5, focused on natural language or code

Codex, a modified version of GPT-3, focused on code

Personal use

Yes, general usage

Yes, primarily for coding

Ease of use

User-friendly interface

Requires familiarity with IDEs

Learning and improvements

Pre-trained, continuous learning from interactions

Pre-trained, learns from code repositories and interactions


Copilot is based on the OpenAI Codex model, a programming model, that is focused on any type of programming tasks such as creating functions and fixing bugs. If you use the Copilot Chat to ask for support with preparing a dinner party, you will get the following answer: Sorry, but I can only assist with programming related questions. The focus of Copilot on programming tasks and the additional features it brings around that, makes it a strong peer to any person who writes code.

Now, if you don’t have access to Copilot, ChatGPT serves as an alternative, but it isn’t as specialized in programming tasks as Copilot.

Licenses


Copilot offers three licensing plans: Individual, Business, and Enterprise (release planned for February 2024). For more details on the different licenses and benefits, see GitHub Copilot pricing. This blog post focuses on the capabilities of the GitHub Copilot Individual plan.

How Copilot works


Copilot runs as a plugin within popular IDEs such as Visual Studio Code, Visual Studio, JetBrains, or Neovim. You can also use Copilot via GitHub Codespaces, a hosted developer environment that runs in the cloud.

When you type in your IDE, Copilot considers the context of the code already written, including comments, the filename, the file extension, and other open files in the IDE. This context goes through a proxy that filters out hate speech and personal data before it’s sent to Open AI. The AI model analyzes the context and generates code suggestions. These suggestions are displayed in the IDE in real-time, offering one or more alternatives for you to choose from. You can then modify, accept, or reject these suggestions. 

Your interaction helps Copilot provide more accurate suggestions over time as it adapts to your coding style. Copilot also uses your feedback on the suggestions to further improve the model. I’m not sure however whether this feedback loop also applies to Copilot for Business that has a major focus on data privacy.

Some practical tips 😉


During my hands-on trial with Copilot, I didn’t see the code block suggestions. A quick Ctrl + Enter (Windows) brings up the Copilot completions panel with many code suggestions. Also, you can accept a code suggestion using the Tab key (Windows). 

One special aspect that applies to Copilot, as described by Microsoft, is “Surround”. This means that Copilot uses the code you've already written—including comments, the filename, the file extension, and other open files in the IDE—to provide more tailored code suggestions. Consider opening more files in your IDE to provide extra context to Copilot.

Prompt engineering


You can't talk about successful generative AI interaction without talking about prompt engineering. The art of prompt engineering is crucial in reaching Copilot's full potential. A prompt is your instruction to the AI, and the more accurate and clear your prompts are, the better code suggestions Copilot generates. For example, using a comment like “// Create an API endpoint” isn't specific enough and can result in an output that doesn't meet your intentions. However, if you are more specific and define a clear scope, such as “// Create an API endpoint using the React framework that accepts a JSON payload in a POST request”, the output will more likely meet your expectations. Like anything in life, repeatedly practicing helps you get better, in this case, with prompt engineering. To learn more about prompt engineering, see Prompt Engineering Guide.

Summary


GitHub Copilot is more than a tool; it's the next level in programming and I wish Copilot had been there when I was an active developer. Its seamless integration into IDEs transforms it into the perfect programming “buddy” directly where you need it.

There might be many other features that I haven't explored, but I definitely loved these:
  • Code suggestion: Suggestion of one or more code alternatives that you can accept, reject, or modify. The suggestions appear when you start to write code or by writing natural-language comments that describe your intent.
  • GitHub Copilot Chat: A feature that makes difference, offering a conversational programming experience and responding to your questions with insights from your code's context and cursor position in the IDE. This helps you avoid context switching and navigating interruptions to look for support on the internet.
  • Surround: Copilot’s ability to use additional information (the code already written, including comments, the filename, the file extension, and other open files in the IDE) around a comment or code as context for the response.

I look forward to finishing my slides for the upcoming workshop and soon having a great time with my colleagues as we discuss and apply Copilot.

See more


Thanks for reading,
Jarbas

Wednesday, November 8, 2023

Integrate with Announcements in Viva Connections using the Microsoft Graph API

In the constantly evolving Microsoft 365 world, there's always something new to explore. One of the latest additions to catch our attention is the Announcements feature in Viva Connections. This feature introduces publishing capabilities to Viva Connections, enhancing communication within organizations by allowing communicators to share targeted, time-sensitive updates and information with their team members. In this post, I share with you my findings about how to extend Viva Connections Announcements using the Microsoft Graph API.

Anatomy of Announcements 

First things first, behind the scenes Announcements is not a common list in SharePoint, but a document library that can be accessed directly via Viva Connections or in SharePoint via the following URL: {SiteUrl}/_layouts/15/announcements.aspx. Communicators can use this area to create, manage, and share announcements to keep their team informed. Technically, an announcement is stored in XML format as an .aspx page.

Key properties for announcements:

  • Audience Targeting: When creating an announcement, audience targeting is essential and mandatory. You can target up to 10 audiences, which can be Microsoft Entra ID security groups or Microsoft 365 groups. This ensures that your message reaches the right people.
  • End date and time: Setting an end date and time for your announcement is mandatory. You can schedule it to remain visible for up to two weeks from the original publishing date.
  • Message: The message is where you convey the details. Maximum of 250 characters.
  • Title: Each announcement must have a title but keep it concise as you're limited to 60 characters.
  • Schedule to send later: If timing is crucial, you can schedule your announcement to send later. Scheduling is available only in half-hour increments, so plan accordingly.

Accessing Announcements


The most recent announcement takes the spotlight in Viva Connections. The next four announcements are accessible through a carousel format. If you want to view all announcements, a "See all" button opens a modal dialog listing all announcements in descending order.

Announcements in Viva Connections


Extending Announcements 


Microsoft Viva Connections has had so far limited extensibility options, primarily related to Dashboard cards (aka. adaptive card extensions). However, the landscape is changing with the introduction of new Viva Connections features such as Announcements and Company Links. These features leverage the SharePoint infrastructure, opening the door to a wider range of integration scenarios. Now, you can integrate with SharePoint to enhance the Viva Connections experience.

Extending via the Microsoft Graph API


At the time of this written, Microsoft hasn’t introduced a dedicated API set to integrate with Announcements in Viva Connections. However, you can use the driveItem API to seamlessly integrate with the Announcements library in SharePoint. The following examples show the requests I used to create a new announcement in Viva Connections.

Downloading an announcement


I first ran a GET request to download an existing announcement from the Announcements library.


This is what the response object looks like:


Uploading an announcement


You can upload announcements in the form of .aspx pages to the Announcements library. For this example, I updated the XML content of the previous response before uploading the new announcement to the Announcements library.


The previous request creates a new announcement in the Announcements library; however, the announcement isn’t yet visible in Viva Connections. To ensure your announcement appears in Viva Connections, remember to publish the page. Note that you'll need to check out the .aspx page before you can proceed with checking it in and publishing it.

Checking out the .aspx page (announcement)



Checking in and publishing the .aspx page (announcement)



Exploring deeper with internal APIs


For those who enjoy taking a deeper look at internal APIs, I found an endpoint that returns announcements the signed-in user has dismissed.

https://example.sharepoint.com/sites/homesite/_api/EmployeeExperience/GetAnnouncementsState. 

The EmployeeExperience path in this endpoint already exists in Microsoft Graph. I’m curious whether Microsoft plans to extend the employeeExperience resource in the future to expose other Viva APIs publicly 🤔

API integration considerations


While Announcements in Viva Connections offer powerful communication capabilities, it's worth noting that Microsoft doesn't provide dedicated Viva Connections APIs for seamless integration. To work with Announcements, you have to rely on SharePoint operations. However, this approach can be risky, as Microsoft can change the structure of the Announcements library without prior notice. Announcements are saved in XML format on .aspx pages and relying on this XML structure can be challenging because Microsoft can alter it at any time. This represents a challenge for building production-ready integrations, especially considering the ever-changing landscape of Microsoft 365.

In conclusion, Announcements in Viva Connections are a valuable tool for enhancing communication within your organization. Communicators have an additional instrument with support for audience targeting that they can use to increase their reach. As a developer or ISV, understanding the extensibility options and the potential challenges can help you make the most of this feature and potentially extend Microsoft’s services.

See also



Thanks for reading,
Jarbas

Sunday, May 21, 2023

Attending the IntraTeam event Copenhagen 2023



I look forward to attending the IntraTeam event in Copenhagen on May 25th, 2023. IntraTeam is an industry conference focused on modern intranets, collaboration, and communication. The amazing lineup of speakers comprises of employee communication leaders, Microsoft employees, and software vendors. The agenda looks great and I'm especially curious about the following sessions:

  • Viva Engage for communications and engagement by Dan Holme (Product leader, Viva Engage at Microsoft)
    Curious about: Understand how Viva Engage empowers leaders and employees to engage at scale, and how the results are measured
     
  • The Digital Era: A new frontier for internal comms by Steffen Henke (Global Head of Internal Communications at Deutsch Post DHL - DPDHL)
    Curious about: Understand how DPDHL approaches employee communication with 600.000 employees

  • Generative AI – what internal comms needs to know by David Bowman (Product Director at Fresh Intranet)
    Curious about: Understand how communicators can apply generative AI in employee communication

Let's get in touch if you're also going to participate in the event!!!


Event information in: