Microsoft teams
Utilizing Microsoft Teams with Altus provides visibility into Altus projects, programs and portfolios as well as integration avenues to display various pieces of data in Teams and Channels within the Native Teams Experience.
Altus offers a number of Teams integrated features that improve productivity and collaboration when working on the PPM Platform.
This includes:
- Leveraging notifications in Teams when approvals for proposals are posted
- Leveraging Teams and Channels for management/interaction with collaboration artifacts (Documents, Risks, Issues, Decisions, etc..)
- Views of the portfolios, programs, projects and proposals with quick links to the various portals where related content is stored (link to Altus, link to SharePoint, link to Teams Team, link to Execution tool)
Out of the box, organizations can choose from two management methods with their Microsoft 365 Groups and Teams. For the purpose of exploring these scenarios we define the term “Headline Table” as “Projects, Programs or Portfolios”, and we define “Child Artifacts” as all of the content you would manage related to a headline Table like “Risks, Issues, Change Requests, Decisions, etc…”
Teams usage method 1 - unique groups
The first scenario offers an organization the ability to ensure that the security around their headline Tables are uniquely managed. In this scenario, when creating a headline Table, the manager would create a group for each of these initiatives. This ensures that the security around the child artifacts of these headline Tables is limited to those in the specific group created for that initiative.
In Teams, this would create a separate Team for each of these groups created, in which the collaborating team can manage their conversations, artifacts, documents, and more.
Having separate Groups/Teams for each Table may also be useful as certain Teams features are only available at the Team level rather than the channel level. Inviting guest users from other Azure AD's for B2B collaboration is best maintained per Team and so in this scenario having a separate group per Table would be advantageous.
| Summary | |
|---|---|
| Maximum flexibility as personnel relevant to a project/table change | ✅ |
| Good separation between initiatives (maybe needed for guest users) | ✅ |
| End-users will likely need Group/Team creation rights | ❌ |
| Proliferation of many Groups/Teams may become cumbersome over time | ❌ |
Note
There is a Microsoft limitation that users may only own up to 250 groups. Please keep this in mind when planning Group provisioning.
Teams usage method 2 - reusable groups (RECOMMENDED)
An alternative scenario would be to consider the recommendation that groups should be representative of functional teams or groups of people.
The projects, programs and portfolios are the initiatives that these teams collaborate on. For that reason, and to keep these items secure within the purview of the team working on them, groups can be created to represent the team, and then these groups can be reused across projects, programs and portfolios, if the individuals responsible for those headline Tables remain the same.
This scenario results in fewer groups created, and the individuals in the groups that are created have less administrative overhead in terms of the groups/teams that they belong to.
This method is also better aligned for larger organizations that have governance policies around the creation of Microsoft 365 Groups and Teams. If there is an approval process or 3rd party mechanism used to administer the creation of Groups/Teams this process can be employed and then once the Group/Team is created that is representative of the people working on the initiatives, this group can be reused in Altus to allocate to all the desired Tables related to that group of people.
This provides what we consider to be better organization and more efficient management of the groups/teams. An additional consideration with this choice is that when reusing a group/team for multiple headline Tables, in Microsoft Teams, the various initiatives will be added by Altus as channels.
| Summary | |
|---|---|
| Lower total number of Groups | ✅ |
| People on the Team see what is important to them as channels | ✅ |
| Groups can optionally be created by Administrators / 3rd party approval systems | ✅ |
| Not as flexible when the personnel relevant to a project/table change | ❌ |
| Not as much separation between initiatives (which maybe important to Team-based features like guest users) | ❌ |
Reusable Teams (RECOMMENDED)

These two strategies can co-exist simultaneously for different parts of the organization as necessary and can be utilized immediately with Altus. Other than disabling tenant functionality (turning off user-driven group creation – NOT RECOMMENDED), there is no method to disable or choose one or the other exclusively. We suggest you decide on the strategy best for your organization, and educate your users as to how they should best utilize groups/teams with Altus.
Teams App - app tab configuration setting
The teamsAppTabs configuration setting allows administrators to configure custom tabs that appear in the Altus Teams app itself (as opposed to a tab within a Team's Project channel - see channel tab configuration below). Each App Tab can display either a Dataverse entity view or a web page.
The teamsAppTabs screen contains the following fields:
- Display Name: The label shown for the tab in the Altus Teams app.
- Security Roles: Restricts visibility of the tab to users holding at least one of the specified Security Roles.
- Tab Configuration: Defines the type of tab (e.g. a Dataverse Entity View or a web page) and its associated settings.
Note
The default App Tabs ship with the Security Roles field pre-populated with default Altus Security Roles. If your organisation is replacing the default Altus roles with custom Security Roles, review and update the Security Roles field on each App Tab so your custom roles are included - otherwise users who only hold custom roles will not see the tab.
Default App Tabs
Altus ships with the following default App Tabs, each pre-populated with the default Altus Security Roles listed below:
| Display Name | Entity | Default Security Roles |
|---|---|---|
| Projects | Project | Altus Project User, Altus Project Executive, Altus Portfolio User, Altus Strategy User, Altus - Proposal Manager, Altus - Idea User, Altus - Challenge User, Altus - Program Manager, Altus - Portfolio Manager, Altus - Strategy Executive, Altus - PMO User, Altus Admin User |
| Programs | Program | Altus - Program Manager, Altus - Program Manager - Team, Altus Portfolio User, Altus - Portfolio Manager, Altus - Portfolio Manager - Team, Altus - Proposal Manager, Altus - Idea User, Altus - Challenge User, Altus - PMO User, Altus Strategy User, Altus - Strategy Executive, Altus Admin User |
Portfolios (two variants, one per required app module: sensei_kaizen and sensei_senseiiqforproject) |
Portfolio | Same list as Programs above |
| Proposals | Proposal | Same list as Programs above |
| My Timesheet | Timesheet | (none - visible to all users) |
Note
Because the My Timesheet tab has no Security Roles specified, it remains visible to all users regardless of role - an empty Security Roles field means the tab is unrestricted, not hidden.
If you need to restore a tab's original defaults, use the Load defaults/Use default value option on the setting rather than re-entering the values by hand.
Teams App - channel tab configuration setting
The teamsAppChannelTabs configuration setting allows the administrator to specify the channel tabs that will be created by the Teams app for each project. The array contains a list of the Microsoft Graph objects to create a channel tab.
The following tokens will be replaced with the project specific value:
.replace("{projectId}", channelArgs.entity.ItemId!).replace("{entityId}", channelArgs.entity.ItemId!).replace("{tasksUrlEmbed}", channelArgs.entity.EmbedUrl!).replace("{tasksUrl}", channelArgs.entity.Url!).replace("{teamsLocale}", channelArgs.entity.Locale!).replace("{entityTypeName}", channelArgs.entityTypeName).replace("{orgUrl}", channelArgs.organisation.Url).replace("{appId}", channelArgs.appId);
See: https://docs.microsoft.com/en-us/graph/api/resources/teamstab?view=graph-rest-1.0#json-representation For information on configuration of the different supported app tabs see https://docs.microsoft.com/en-us/graph/teams-configuring-builtin-tabs#power-bi-tabs
For information relating to deep-deep linking please see here: https://hub.sensei.cloud/Docs/Altus/Customisation/index.html#deep-deep-linking
For information on using filters in an embed url see here https://powerbi.microsoft.com/en-us/blog/easily-embed-secure-power-bi-reports-in-your-internal-portals-or-websites/
The teamsAppChannelTabs screen contains the following fields:

- Value: Click + New Channel Tab to create the New Channel Tab.
Export the generated JSON
After configuring the required channel tabs, click the curly braces button in the lower-right corner of the Channel Tabs setting next to the gears icon, to display the generated JSON.

Copy the displayed JSON to use it in another configuration setting or environment.
Hiding the Out of the Box Teams tab within the Altus Microsoft Teams Project Channel
To disable a default channel tab (e.g. Task)
- Within Altus go to Settings and open the Channel Tabs setting
- Click Load defaults
- Click the Edit Channel Tab button on the Tasks Channel Tabs
- Toggle the Provisioning Enabled option to No
- Click OK
- Save your changes.