Introducing Microsoft Teams Apps
In this first chapter of the book, we’ll start with how Microsoft Teams has grown fast as a platform in a very short time. Our focus will mostly be on the context of apps and reviewing various types of apps, such as built-in, third-party, and custom, that are hosted on Microsoft Teams, a few examples that’ll help you understand the apps better.
This book is all about building or hosting customizations on Microsoft Teams; the Teams customizations come in various shapes, such as tabs, apps, web services, and message extensions, just to name a few. To build these apps, you need to have some prior knowledge of supporting technologies such as Azure, Microsoft 365, and Power Platform. In this chapter, we will also review these prerequisites and will go into detail in later chapters on an as-needed basis. However, I highly recommend you spend time reading relevant books for a deeper and broader understanding of these supporting concepts, which is beyond the scope of this book.
Finally, we’ll conclude this chapter by getting ourselves acquainted with the prerequisites of admin and configuration. These are required for making your tenant ready for custom apps and understanding the core permission and set-up policies available through Microsoft Teams administration. A typical developer may not have access to the Teams administration but understanding various policies will help them think through and generate intelligent conversations with a Teams administrator for the required configuration and setup at the tenant level.
These are the main topics we’ll be covering in this chapter:
- Overview of Microsoft Teams as a platform
- Exploring the Microsoft Teams app architecture
- Exploring the core services used for the development of Teams
- Microsoft Teams admin, configuration, and prerequisites such as Azure, Microsoft 365, and Power Platform
So, let’s get started!
Overview of Microsoft Teams as a platform
According to Microsoft’s data, Teams is the fastest-growing app in Microsoft's suite. It started as a group chat-based utility and developed into an updated version of Skype with features such as chat, calls, and meetings. However, Microsoft Teams has grown as a platform for collaboration and is now home to various apps that are used by almost every organization every day.
Microsoft has even made Microsoft Teams an integral part of Windows 11 by pinning it to the taskbar. With the spread of the Covid pandemic, the need to work remotely and the concept of hybrid work have had an unprecedented surge and become the new norm. Understandably, there is a high demand for teleconference solutions such as Microsoft Teams, Zoom, Slack, Webex, and so on. In my opinion, the winner here is Microsoft Teams, as it goes beyond communication features such as chat, voice, and meetings. It has evolved as a platform for hosting apps so that businesses can do their day-to-day work without leaving Microsoft Teams.
Every organization prioritizes business productivity; most of the leadership wants to make Microsoft Teams sticky, bringing all the required tools for the job to one location and providing access to enterprise applications, custom applications, and even the intranet to Teams – so Teams has become a one-stop-shop for all things needed by members of IT.
In recent publications (Microsoft FY22 Q2 Commercial Highlights), they announced that Microsoft Teams’ active users have hiked up to 270 million per month.
In this book, we are going to focus on various customization options that will help IT workers to make their day-to-day business scenarios easier. Here are a few examples:
- Opening a ticket or escalating in ServiceNow (www.servicenow.com) without leaving Microsoft Teams
- Using DevOps tools such as Jira Cloud and GitHub to build, test, and release software directly in Teams
- Consuming Azure-hosted FAQs or QnA Maker bots in Microsoft Teams
- Using no-code Power Apps, Power Automate, and chatbots easily
- Using Teams app templates such as Appointment Manager, an app template for conducting virtual appointments through Teams
- Using Building Access, a Power Platform-based full-blown app to support building occupancy by helping employees with on-site facility access adhere to social distancing rules
- Using Viva Connections, which acts as a gateway to monitor employee experience in Microsoft Teams
These are a few sample scenarios that highlight Microsoft Teams’ role as a platform to host various customizations. Our focus is to learn how to build these customizations for end users with no code or very little code and complex solutions for developers with code. General best practices in Power Apps development are using a fusion development approach with blended groups of teams with low code or no code (also called citizen developers) and professional developers.
Exploring the Microsoft Teams app architecture
The customization of Microsoft Teams refers to bringing all the applications that a business needs to use daily to one location and integrating chats, meetings, calls, and files into it to be more productive. This will help business users stick to one tool and access all apps and services, which thereby avoids switching between multiple applications or services.
Classification of apps
You can bring most of the apps and services used in your organization and incorporate them into Teams as an app. These apps are grouped into the following three categories, mostly based on who created them.
Figure 1.1 – Lists app
With this Lists app, you can create a new SharePoint list or use an existing SharePoint list and add it as a tab to any Teams channel. More precisely, you can create a custom list, import it from Excel, or generate one from an existing or predefined list template. The following screenshot shows various templates of list options:
Figure 1.2 – Various list options through the Microsoft Lists app
Figure 1.3 – The Tasks by Planner and To Do app
Figure 1.4 shows the page that displays any tasks that were created by you or have been assigned to you in Planner or To Do.
Figure 1.4 – The Tasks by Planner and To Do app
These tasks are automatically categorized into four lists as listed here:
- Tasks – all the tasks you’ve created
- Important – any task marked as Important
- Planned – tasks marked with a due date
- Assigned to me – tasks that are assigned to you
Microsoft works with various developers and partners to build apps that work in Microsoft Teams. These are Microsoft-certified third-party apps; with certified apps, Microsoft provides assurance that you can trust them and that they comply with strong security principles that protect data and privacy.
Figure 1.5 – Third-party Jira Cloud app
Jira Software is a software development tool used by several agile teams; the cloud service of this software is called Jira Cloud, and it is built with project functions such as planning, tracking, releasing, and reporting in the service.
We have a Jira Cloud Teams app that enables your project team to track, update, and manage projects from Microsoft Teams. This app has integration with Jira Cloud so that your project team or user can receive notifications, create or update tickets, and view them in Teams meetings as a group.
Figure 1.6 – Jira Cloud app – sign in to Atlassian account (Jira Software)
ServiceNow Virtual Agent
This enables employees to perform routine ServiceNow tasks directly in Microsoft Teams.
Consider the following few scenarios:
- Employees can access ServiceNow’s Employee Center embedded directly within Microsoft Teams
- IT service desk agents can reach out to employee requests directly in Microsoft Teams to resolve questions about open tickets
- Actionable notifications within Microsoft Teams enable employees to stay up to date on their tickets
Figure 1.7 – Now Virtual Agent
This app (Now Virtual Agent) is free with Microsoft Teams, and users of this app are required to have an appropriate ServiceNow license. For a better experience and range of features, it is recommended to have ITSM Pro/HR Pro, as the standard license doesn’t cover many use cases. The following figure shows the experience of ServiceNow Virtual Agent in Teams:
Figure 1.8 – Now Virtual Agent in Teams
In addition to Microsoft-provided and third-party-provided apps, as an organization, you can also build custom apps using various Teams integration strategies. These types of apps are called custom apps. We will spend a good amount of time in this book on building custom apps using various technologies such as Microsoft Power Platform, Azure, and the SharePoint Framework (SPFx).
Figure 1.9 – The Landings custom app
Through the Teams App Store, you can see the custom apps built in your organization.
Figure 1.10 – View of custom apps built in your organization
This section gave you a quick overview of the types of apps available in Microsoft Teams. In the next section, we’ll learn more about core services used in the development of custom apps that are built by your organization.
Exploring the core services used for the development of Teams
Before moving on to learning more about custom apps in Microsoft Teams, it is good to have some understanding of the following technologies:
- Microsoft 365
- Power Platform
These concepts will be used in most of the apps that you are going to build and host in Teams. Let us have a look at each of them in brief.
Azure is the core platform that Microsoft Teams is built and hosted on; it takes advantage of core Azure features such as scaling, global footprint, redundancy, and disaster recovery. In this book, we are focusing on apps in Microsoft Teams and these apps can also use Azure services. We will briefly discuss a few of those Azure services, although it would be good for you to explore more about these services as a self-study.
Azure App Service
Azure App Service enables you to quickly build and host web apps, mobile backends, and RESTful APIs in the programming language of your choice without worrying about infrastructure. This platform as a service (PaaS) is offered by Azure so that you can focus on developing your application while the platform takes care of infrastructure needs and scaling based on your business requirements. Speaking of scaling, you can scale your app up or down by adding or removing resources based on demand, which helps control infrastructure costs. Scale-out is another option, increasing the machine instances that your app running on.
QnA Maker is a cloud-based service that allows you to create a natural conversational layer over your data. QnA Maker lets you import a knowledge base (KB) of question and answer pairs from any FAQs, support websites, manuals, or documents. It also answers questions with the best answers from the QnA in your KB automatically.
Conversational applications are the most common scenario in which to use QnA Maker. A common scenario would be to create a FAQ bot with no code:
- Best practices: https://aka.ms/QnAMakerBestPractices
- Documentation: https://aka.ms/QnAMakerDocumentation
- QnA Maker portal: https://aka.ms/QnAMakerPortal
Azure Blob Storage
Azure Blob Storage is an optimized solution for storing massive amounts of unstructured data that doesn’t adhere to a particular data model or definition, such as text or binary data. This helps you create data lakes for your analytics needs and provides storage to build powerful cloud-native and mobile apps.
- Bringing images or documents directly to a browser
- Storing files for distributed access
- Streaming video and audio
- Writing log files
- Storing data for backup and restoration, disaster recovery, and archiving
- Storing data for analysis by an on-premises or Azure-hosted service
These are the resources that Blob storage offers:
- The storage account: A storage account provides a unique namespace in Azure for your data.
- A container in the storage account: A container organizes a set of blobs, like a directory in a filesystem. A storage account can include an unlimited number of containers, and a container can store an unlimited number of blobs.
- A blob in a container
Figure 1.11 – Representation of the relationship between blob storage resources
Azure Storage supports three types of blobs:
- Block blobs: Defined by a list of blocks and predominantly used to store objects such as documents, images, video, and so on.
- Append blobs: An append blob is comprised of blocks and is optimized for append operations, used mostly for scenarios such as logging, big data analytics, output, and so on.
- Page blobs: These are collections of 512-byte pages with the ability to read/write arbitrary ranges of bytes. Also, page blobs are designed for random read/write operations, such as for IaaS disks, Azure Event Hubs, and block-level backup.
Azure Functions is a serverless event-driven solution that extends Azure App Service on less infrastructure, thereby saving a lot of costs. As a developer, you focus on code and the rest will be handled by Azure Functions.
- Building a web API
- Time-based processing
- Images added
- Building a serverless workflow
- Responding to database changes
- Creating reliable message queue systems
- Processing data in real time
- Real-time bot messaging
Azure Cognitive Services
Cognitive Services is a collection of intelligent APIs that you can embed into your app, as these REST APIs are very easy to implement. These services can span Vision, Speech, Language, Knowledge, and Web search. There are a variety of domains that give apps a human side, including Speech, Decision, Language, and Vision. Speech-to-text is one feature of the Speech service.
The following figure shows domain-specific pre-trained models:
Figure 1.12 – Screenshot of domain-specific pre-trained models
Office 365 is a service that connects a variety of collaboration tools across Office 365. You can create an Office 365 Group from a SharePoint page or a SharePoint administrator can create one from SharePoint Online Administration.
Figure 1.13 – SharePoint start page | + Create site
The preceding screen shows you the + Create site option on the SharePoint start page; the following screen shows the option to create a site in the SharePoint admin center window:
Figure 1.14 – SharePoint admin center | + Create | Team site
Power Platform is a low-code or no-code platform that lets you build end-to-end solutions with custom apps using Power Apps, automation processes using Power Automate, and intelligent bots using Power Virtual Agents (PVA), as well as analyze data with Power BI.
This diagram represents all the services from Power Platform in a row:
Figure 1.15 – Power Platform services
Power BI provides insights into the value of your data; it can visualize most of your organization’s data on the platform. With the Power BI tab, you can embed interactive reports into Microsoft Teams channels and chats.
Microsoft Power Apps is a SaaS for creating and using custom business apps across different mobile and web platforms. Through this, you can connect to various enterprise systems and data sources that may be used in your organization, such as SAP ERP and Oracle.
Power Apps enables you to build applications with no code or very little code. It will help businesses write their application with minimal help and support from IT organizations.
These apps can be shared with co-workers and even with guests across the web, tablets, and mobile devices.
To view the existing Power Apps or to create new ones, go to https://web.powerapps.com. From there, you can click Apps on the left-hand side to view existing apps and + New app to create a new Power App.
Figure 1.16 – Power Apps with options for creating a new app
Power Apps types
There are three types of Power Apps you can create as shown in the preceding figure:
- Canvas: Canvas apps are Power Apps that start with user experience or data, and will be built using concepts such as screens, controls, formulas, and connections.
- Model-driven: Model-driven apps are apps that start with data models in tables of Dataverse. They are built with components such as site maps, tables, forms, views, charts, dashboards, business processes, and Power Automate.
- Portal: Power Apps portals are external-facing websites that allow users outside your organization to create and modify data in Dataverse tables. These users can be signed via various identities or access content anonymously.
Power Automate helps businesses work smarter by automating workflows with personal productivity and various business apps and services across your organization. In addition, you can also integrate a Power App with Power Automate.
To view the existing Power Automate functionality or to add to it, go to https://flow.microsoft.com.
Figure 1.17 – Power Automate with the option to create new flows
- Scheduled Power Automate
- The Power Apps button
- SharePoint items, files, emails, contacts created, HTTP triggers, or webhooks
The following figure is a sample Power Automate action with a trigger when a new item is created in SharePoint:
Figure 1.18 – Sample Power Automate
PVA enables you to empower your subject matter experts to easily create powerful bots using a guided, no-code graphical interface – no need for developers or data scientists.
We will discuss more of these technologies in Chapter 7, Microsoft Dataverse for Teams.
To work on PVA or add to it, go to https://powerva.microsoft.com/.
Figure 1.19 – PVA
Microsoft Teams admin, configuration, and prerequisites such as Azure, Microsoft 365, and Power Platform
If you want to start building various customization options such as apps, bots, and tabs (discussed in detail in the next chapter) for Microsoft Teams to use in your tenant, you should prepare your Microsoft 365 tenant for these customizations by configuring the required policies and settings in the Microsoft Teams admin center.
The Teams admin center is a single place to configure various settings and policies to control the behavior of all three types of apps (Microsoft, third-party, and custom): https://admin.teams.microsoft.com. You need to be a Teams Administrator or a Global/Tenant Admin to access and adjust the policies or settings in the Teams admin center.
There are many types of Teams policies, such as those related to messaging, phone, voice, apps, and so on. Policies are a collection of configuration elements and can be assigned per user, group, or tenant (organization-wide). As this book is about Teams app customizations, our focus is mostly on policies that concern apps.
In addition to policies, you can also control the configuration through settings – settings meaning a collection of configuration elements that can only be controlled at the tenant level.
You have the following options on the left-hand side to control Microsoft Teams apps for end users and their assignments at the user, group, or tenant level:
Assigning policies at the user level or tenant level is mostly clear based on the name; when it comes to groups, you can assign the policies to a group of users with a security group or distribution list.
It will look as follows on your screen:
Figure 1.20 – Teams apps administration
Teams apps have the following options for the configuration of the app’s permissions and settings:
- Manage apps – org-wide settings
- Permission policies
- Setup policies
Let us discuss these in detail in the following sub-sections.
Org-wide app settings
Org-wide app settings can control the apps available to your whole organization. Permissions and set-up policies can’t be more permissive than org-wide app settings, so org-wide settings override any custom policies that you assign to users.
By navigating to the Teams admin center | Teams apps | Manage apps | Org-wide app settings, you can control the third-party apps and custom apps for your organization’s tenant:
Figure 1.21 – Accessing Org-wide app settings through Manage apps
Figure 1.22 – Org-wide app settings
From Figure 1.22, we can see how these org-wide settings can be controlled:
- Allow third-party apps: Turning this off will block all users from installing any third-party apps
- Allow any new third-party apps published to the store by default: Turning this on will allow users to install any new third-party apps published to the store based on their app permission policy
- Custom apps: Turning this off means no users will be able to upload custom apps
You can do this through the following actions:
- Creating custom app permission policies
- Controlling the apps available for various users and groups
Creating custom app permission policies
Through the Teams admin center | Teams apps | Permission policies | App permission policies, you can create a custom app permission policy by clicking on + Add and selecting the permissions that you want for various app types.
Figure 1.23 – App permission policies view
The following screenshot shows the various options that you can include for each type of app (Microsoft apps, Third-party apps, and Custom apps) in the custom policy:
Figure 1.24 – Creating a custom app permission policy
Figure 1.25 – Permission policies
Figure 1.26 – Assigning a custom policy to individual users
When you block apps through an app permission policy, the users who are affected by this policy are unable to install the blocked apps from the Teams store.
In a nutshell, allowing all apps would be the least restrictive, and blocking all apps the most restrictive.
Setup policies will make the approved apps in your organization more accessible to Teams users. This will let you customize Teams by pinning the apps that are most important to the users—you can pin the apps to the left rail (on your desktop) or app bar (from your mobile) and set the order of the apps as they appear. This also includes all three types of apps – Microsoft-built, third-party, and custom. In addition to this, you can control who (such as the developers) can upload custom apps that they have built. The process of uploading custom apps is also called side-loading.
You have two built-in app setup policies that are included with the Microsoft Teams admin center:
- Global (org-wide default): Applies to all users – you can pin apps that should be available to all users
- Frontline worker: You can assign this to frontline workers
Frontline workers are employees that work directly with customers or the public, providing services and support and selling products, or employees directly involved in the manufacturing and distribution of products or services.
You can customize the built-in app setup policies by selecting the policy and clicking on Edit. Once you are in the policy, you can control the ability to upload a custom app or allow users to pin apps through the following features:
Figure 1.27 – App setup policies
- Upload custom apps: This determines whether a user can upload a custom app package to the Teams app. Turning it on lets you create or develop a custom app to be used personally or across your organization without having to submit it to the Teams app store.
- User pinning: With this policy, the user’s existing app pins will be added to the list of pinned apps, and users can rearrange, add, and remove pins as they choose.
You can pin more apps through the + Add apps option on the following screen:
Figure 1.28 – Sample view of pinned apps
Pinning apps will give Teams users easy access by showcasing the important apps in your organization.
If the admin allows user pinning, the users can pin any existing app; however, if an admin pins apps, the latter configuration always take precedence.
You can also choose the apps that can be installed through this policy.
Figure 1.29 – Installing apps through the setup policies
Congratulations on getting through the first chapter! In this chapter, you learned about the context behind custom apps for Microsoft Teams and the pre-configuration requirements for your Microsoft 365 tenant to support custom apps via its setup and permission policies. You also learned about supporting technologies that are very important in custom app development and hosting.
The next chapter will dive into various types of customizations that you can build into Microsoft Teams.