Skip to content

Application — Configuration

Path: /configuration

The Configuration page is the central settings hub for the MS Teams Observability app. It contains 12 panels arranged in a two-column grid.

Breadcrumb navigation: Home > Configuration


RowLeft panelRight panel
1LicenseDemo Mode
2Feature Status (full width)
3Outgoing Connections (full width)
4Bucket ConfigurationOpenPipeline
5Site File Management (full width)
6IPAMAI Analysis
7Microsoft ConfigurationDomains Filter
8Permissions (full width)

Purpose: View the status and details of your MS Teams Observability license. This panel is read-only — it shows your current license validity, usage, and tenant association.

For license setup or renewal, see License.

  • At first login — confirm the license is active.
  • When a license warning banner appears in the app header.
  • Before expiry — check the remaining days and plan renewal.
  • When you see “Trial” status — evaluate before the trial expires.
FieldDescriptionInterpretation
Start dateLicense start date (DD/MM/YYYY)When your license period began
End DateLicense expiry date (DD/MM/YYYY)When the license expires — after this date, the app enters restricted mode
Days LeftDays remaining before expiry< 30 days: consider renewing. < 7 days: urgent renewal needed.
Status chipTrial (blue), Active (green), or Inactive (red)Trial = evaluation period. Active = valid commercial license. Inactive = expired or invalid.
Active Users meterCurrent active users vs. maximum allowed. Trial = “Unlimited”.Stay below 80% of the limit to avoid throttling.
Microsoft Tenant IDYour tenant ID, masked by defaultClick the eye icon to reveal, copy button to copy — useful for support requests.
BannerMeaningAction
Green “Demo license”Demo Mode is active with a valid demo licenseNormal — no action needed
Yellow/WarningLicense approaching expiry or usage limit near capacityPlan renewal or review user count
Red/CriticalLicense expired, invalid, or usage limit exceededRenew immediately or contact Phenisys support

If the license cannot be loaded (network issue, backend unavailable), all fields show “Error”. Check that the collector is running and can reach the license validation endpoint.

ActionDescription
Eye iconToggle visibility of the masked Tenant ID
Copy buttonCopy the Tenant ID to clipboard
SymptomLikely causeSolution
License shows “Inactive”License expired or invalidCheck the expiry date. Contact Phenisys for renewal.
All fields show “Error”License server unreachableVerify the collector can reach https://license.phenisys.com (check Outgoing Connections).
Active Users meter shows 0No data collected yetCheck Feature Status to see if the collector is running.
Tenant ID not matchingWrong license file uploadedRe-upload the correct license file for your tenant.

Purpose: Enable or disable Demo Mode, which replaces all live data with built-in sample data. Useful for:

  • Evaluating the app without a collector or Microsoft Teams data
  • Demonstrations to stakeholders or clients
  • Testing UI behavior without affecting production data

A chip next to the title shows the current state: Active (green) or Inactive (grey).

ButtonAppears whenWhat happens
EnableDemo Mode is offOpens a confirmation modal. Once confirmed, all app pages switch to mock data.
DisableDemo Mode is onOpens a confirmation modal. Once confirmed, the app returns to live data mode.
FeatureAvailable in Demo Mode?
Browsing all pages (Home, Sites, Calls, Users, Issues)✅ Yes — with mock data
Interacting with UI (filters, tables, charts)✅ Yes
Custom timeframe selection❌ Restricted — only the preset timeframe works
Exporting call details❌ Restricted
AI-driven insights❌ Restricted — requires live Microsoft Graph data
  • A green “Demo” banner appears in the app header
  • The Configuration page shows the Demo Mode chip as Active (green)
  • Mock data replaces all live data — the sample calls and users resemble realistic but fictional data
SymptomLikely causeSolution
Demo Mode won’t disableNetwork issue preventing license validationCheck Outgoing Connections for license.phenisys.com reachability.
Mock data looks the same after enablingPage cache not refreshedManually refresh the page or navigate between tabs.

Purpose: View the health status of each data collection feature from the MS Teams Observability agent over the last 7 days. Use this to verify that the collector is running and all expected data sources are active.

  • After installing or upgrading the collector — confirm all features are enabled.
  • When pages show no data — verify the relevant collector feature is running without errors.
  • Routine health check — ensure all collection features are green.
ColumnDescriptionColor coding
FeatureName of the collection feature (e.g., Calls, PSTN, Auto Attendant)
StatusEnabled (green) or Disabled (grey)Green = actively collecting. Grey = feature not configured in the collector.
HealthNo errors (green) or X errors (red) — only shown for enabled featuresRed = check the collector logs for the error. Green = no issues in the last 7 days.

Right-click the Health column → “Open details with” → sends the error log query to a Dynatrace app for deeper investigation.

“No features found. Please ensure that the MS Teams Observability Agent is properly configured and running.”

5 / 10 / 20 rows per page.

SymptomLikely causeSolution
All features show “Disabled”Collector not running or not configuredVerify the collector service is started and the config file has features enabled.
A specific feature shows errorsFeature-specific issue (e.g., Graph API throttling, invalid credentials)Right-click the health cell → “Open details with” to see the error logs.
No features listed at allNo collection health data in the last 7 daysCheck that the collector is running and can reach Dynatrace. Check Outgoing Connections.

Purpose: Verify that the app can reach all external services it depends on. This is a diagnostic tool for troubleshooting connectivity issues — if a feature isn’t working, check here first.

  • A feature isn’t working (e.g., AI Analysis returns no response, license status shows error).
  • After network changes (firewall rules, proxy changes, DNS updates).
  • Routine health check during maintenance.
ColumnDescriptionColor coding
StatusConnection status iconGreen = reachable. Red = unreachable. Grey = not yet tested.
CodeHTTP response code chip (e.g., 200, 401, 500)200-399 = green. 400+ = red or orange depending on severity.
ServiceName of the service. Hover the information icon for a description.
EndpointThe URL being tested
MessageHuman-readable status from the last ping
LatencyRound-trip latency in msColor-coded by performance thresholds.
EndpointPurposeExpected code
login.microsoftonline.comOAuth2 token acquisition200 (connected, token exchange works) or 401 (connected, but test query rejected — normal)
graph.microsoft.comMicrosoft Graph API for call records401 is normal here (the test doesn’t have a valid bearer token)
api.openai.com or equivalentAI analysis API endpoint401 is normal (test call without auth)
license.phenisys.comLicense validation server200 if the license is valid
github.com / api.github.comRelease version check200

Note: A 401 (Unauthorized) status is often normal for services that require authentication — the test verifies that the endpoint is reachable, not that credentials are valid. For credential validation, use the Test button in the relevant panel (Microsoft Configuration, AI Analysis).

ActionDescription
Ping (per row)Tests that specific endpoint individually
Ping All (toolbar)Tests all endpoints simultaneously — runs every test in parallel
SymptomLikely causeSolution
login.microsoftonline.com shows red/unreachableFirewall blocking Microsoft loginAdd login.microsoftonline.com to the firewall allowlist. Check proxy settings.
graph.microsoft.com unreachableMicrosoft Graph API blockedVerify network rules allow graph.microsoft.com. The collector also needs this.
license.phenisys.com unreachableLicense validation server blockedAdd license.phenisys.com to the allowlist. Without this, the license cannot be validated.
api.openai.com unreachableOpenAI API blocked (if using OpenAI)Add the AI provider’s endpoint to the allowlist.
All endpoints redGeneral network issueCheck DNS resolution, proxy configuration, and internet connectivity from the Dynatrace environment.

Purpose: Configure the Dynatrace Grail storage bucket where the collector writes all MS Teams log data. The app reads from this bucket to display calls, sites, users, and issues.

This is the foundation of the data pipeline — without a valid bucket, every page shows empty data.

  • First-time setup of the MS Teams Observability app.
  • Bucket was deleted or needs to be recreated.
  • Retention period needs adjustment.

The app looks for a bucket named ms_teams (by default) when it starts:

StateWhat you seeWhat to do
LoadingSpinnerWait — the app is checking bucket existence
Bucket existsBucket details: name, retention days, statusEverything is fine. No action needed.
Bucket not foundA creation formFill in the fields below and create it
ErrorWarning with error messageCheck permissions (see below)

When the bucket doesn’t exist, a form appears:

FieldRequiredDescriptionRecommendation
Display NameNoHuman-readable name for the bucketLeave empty to use the default
Retention DaysYesHow many days logs are retained in Grail before automatic deletion30 days is a good starting point. Longer retention (90, 365) increases storage costs.
DurationUse case
7 daysMinimal — troubleshooting only, no historical analysis
30 daysGood default — enough for monthly reporting
90 daysQuarterly analysis — higher storage cost
365 daysAnnual trend analysis — significant storage cost

The app needs these permissions to manage the bucket:

  • storage:bucket-definitions:read — check if bucket exists
  • storage:bucket-definitions:write — create the bucket
SymptomLikely causeSolution
”You don’t have the required permissions” (403)User token missing storage:bucket-definitions:read/write scopesContact your Dynatrace administrator to add these OAuth scopes to the app.
Bucket not found after creationBucket name differs from what the app expectsThe app uses the name from settings. Check that the created bucket matches the expected name.
All pages show no dataBucket exists but is empty or collector hasn’t written yetVerify the collector is running and writing to the correct bucket. Check Feature Status.

Purpose: Configure the OpenPipeline data ingestion pipeline that automatically routes MS Teams log data from the collector into the correct Grail bucket and applies data processing rules (masking, enrichment, routing).

The OpenPipeline acts as the data traffic controller — it receives logs from the collector via the Dynatrace API and ensures they land in the right bucket with the right structure.

  • First-time setup of the app — you need OpenPipeline to route collector data into Grail.
  • Pipeline was reset or needs regeneration.
  • Data processing rules need to be updated (field masking, log source routing).

The panel requires a Dynatrace API token with specific scopes. Once configured, you can either validate the existing pipeline or generate a new one automatically.

FieldRequiredDescriptionDefault
Access TokenYesDynatrace API token with settings.read and settings.write scopes, stored in a masked input field. The token must belong to a user with permissions to create and manage OpenPipeline configurations.None
  1. In Dynatrace, go to Access tokens → Create new token.
  2. Under Captures and processors, select these scopes:
    • settings.read — read existing pipeline configuration
    • settings.write — create/update pipeline configuration
  3. Give the token a recognizable name (e.g., MS Teams OpenPipeline).
  4. Copy the generated token and paste it into the Access Token field.
  5. Click Validate to confirm the token works.
IndicatorStatusMessage
GreenValid”Open Pipeline Configuration is valid”
YellowValidating”Open Pipeline Configuration is being validated”
RedInvalid”No valid Open Pipeline Configuration detected”
ButtonWhen to useWhat happens
SaveAfter entering the tokenPersists the token.
ValidateAfter saving, to verify the pipelineTests the token and checks if the OpenPipeline configuration exists and is correct.
Generate ConfigurationAfter validation, if no pipeline existsAutomatically generates and deploys a complete OpenPipeline configuration that routes MS Teams log sources, masking rules, and retention policies. This is the recommended way to set up — no manual pipeline editing needed.
ResetTo clear the saved tokenRemoves the stored token from settings.

When you click Generate Configuration, the app automatically creates:

  • Ingestion rules that route data from the collector endpoints to the correct Grail bucket
  • Processing rules for log source classification (routing each MSTeams_* log source to the right bucket field)
  • Field masking rules (optional, if configured)
  • Default retention matching your bucket configuration

This means you don’t need to manually configure the OpenPipeline in the Dynatrace UI — the app does it for you.

PageEffect when configured
All data pages (Home, Calls, Sites, Users, Issues)Data flows correctly from the collector to Grail. Without this, pages show empty data.
SymptomLikely causeSolution
”No valid Open Pipeline Configuration detected”Token is missing, invalid, or pipeline not yet generatedGenerate the configuration using the Generate Configuration button.
Validation fails after saving tokenToken lacks settings.read scopeCheck the token scopes in Dynatrace → Access tokens.
”Failed to generate configuration”Token lacks settings.write scopeAdd settings.write scope to the token.
Data flowing but not appearing in appPipeline rules not matching log sourcesRe-generate the configuration. Check Feature Status for collector health.

Purpose: Upload and manage the CSV file that maps network subnets to site locations (used on the Sites page).

ChipDescription
”Sites file exists” (green)A file is currently loaded
”No sites file” (grey)No file has been uploaded
Size / Modified / ByFile metadata
”X sites loaded” (blue)Number of active site entries
ButtonDescription
Choose CSV fileOpens file picker
Upload / Replace Sites FileUploads or replaces the file (enabled when validation passes)
Use Default SiteUploads a default one-row site file
DownloadDownloads the current file as sites.csv
DeleteDeletes the current file (no confirmation)

The Use Default Site action writes the following default entry:

subnet,location,country,latitude,longitude
0.0.0.0/0,Default,xx,0,0

If existing site data is already present, a confirmation modal is shown before replacement.

subnet,location,country,latitude,longitude
10.64.0.0/24,Paris,FR,48.8588255,2.2646343
10.64.1.0/24,Berlin,DE,52.5200066,13.404954
ColumnTypeDescription
subnetCIDRNetwork subnet
locationStringHuman-readable location name
countryStringCountry code
latitudeNumber-90 to 90
longitudeNumber-180 to 180

After selecting a file, each row is automatically validated:

  • All rows valid: green chip “Valid CSV: X/Y rows”
  • Errors exist: red chip “Invalid CSV: N error(s), X/Y valid rows”
  • Up to 5 errors shown inline; a “Copy Errors” button copies all errors.

The app needs these Dynatrace storage permissions to manage the sites file:

  • storage:files:read
  • storage:files:write
  • storage:files:delete

Purpose: Configure a URL template for linking IP addresses to your IP Address Management (IPAM) solution. When configured, right-clicking any IP address in the Sites or Call Overview tables shows a “Lookup IPAM” option, opening your IPAM system to that specific IP.

This saves time during troubleshooting — instead of copying an IP and searching for it manually, you click once and jump directly to the right IP in your IPAM.

  • You use an IPAM solution (e.g., SolarWinds, Infoblox, phpIPAM, NetBox).
  • You frequently troubleshoot network issues and need to identify switch ports, VLANs, or device names from IP addresses.
  • Optional — the app works fine without this; only the IPAM lookup feature is unavailable.
FieldRequiredDescriptionDefault
Link TemplateYesURL template containing the {{ip}} placeholder. When you right-click an IP in the app, {{ip}} is replaced with the actual IP address. Must be a valid http:// or https:// URL.None

Example template: https://ipam.company.com/ip/{{ip}}/details

This would turn IP 10.64.0.15 into: https://ipam.company.com/ip/10.64.0.15/details

After saving the template, a preview section appears:

  1. Enter a test IP (e.g., 10.0.0.1) in the preview input.
  2. The resolved URL is displayed immediately.
  3. Click Copy to copy the preview URL.
  4. Click Test Link to open the preview URL in a new browser tab.
IndicatorStatusMessage
GreenValid”Template is valid and ready to use”
YellowWarning”Contains {{ip}} but has validation errors”
RedInvalid”Template must contain the {{ip}} variable”
ButtonEnabled whenDescription
SaveTemplate is valid and contains {{ip}}Saves the IPAM link template
Test LinkTemplate is validOpens the resolved preview URL in a new tab — use this to verify the template works
ResetAlwaysClears the saved IPAM link
PageContext
SitesRight-click any IP in the Network Statistics table or the Site Inventory
Call OverviewRight-click any IP in the Streams Information table (any IP column)
SymptomLikely causeSolution
”Template must contain the {{ip}} variable”URL doesn’t include {{ip}}Add {{ip}} in the URL where the IP should appear (e.g., https://ipam.../search?q={{ip}}).
”Link must be a valid URL”URL is malformed or missing protocolEnsure the URL starts with http:// or https://.
”Lookup IPAM” doesn’t appear on right-clickTemplate not saved or invalidCheck that the template is saved and shows a green validation indicator.
Test Link opens a blank pageIPAM URL is incorrect or unreachableVerify the template URL is correct by pasting the preview URL directly in a browser.

Purpose: Configure the AI tool used to generate root cause analysis on the Call Overview page. The AI analyzes stream metrics (RTT, jitter, packet loss, codec, protocol) and participant data to identify the cause of quality degradation — for example, detecting that high jitter on a specific participant’s subnet is the root cause.

The AI panel appears as a detail view sidebar on the Call Overview page, accessible via the actions menu. Once configured, click a call ID, open the AI panel, and ask questions like “What caused the poor quality?” or “Summarize the call.”

  • You want automated root cause analysis for poor-quality calls.
  • You have an OpenAI or Anthropic API key stored in the Dynatrace vault.
  • Microsoft credentials must also be configured (panel 10) — the AI context includes raw call details fetched from the Microsoft Graph API.
FieldRequiredDescriptionDefault
API compatibilityYesDetermines the API format. Choose OpenAI for models hosted by OpenAI (GPT-4o, GPT-4o-mini) or Anthropic for Claude models hosted by Anthropic.OpenAI
Base URLYesPre-filled automatically when you select the API compatibility. Only change this if you are using a proxy or compatible endpoint (e.g., Azure OpenAI, self-hosted LLM with OpenAI-compatible API). Must be a valid URL ending in /v1.https://api.openai.com/v1 (OpenAI) / https://api.anthropic.com/v1 (Anthropic)
ModelYesThe model name to use. Enter it directly as text, or click List to fetch available models from the API (requires a valid token and base URL first). After fetching, a dropdown replaces the text input for easier selection.gpt-4o-mini
TokenYesSelect a Dynatrace vault credential of type Token that stores your API key. The vault must contain the API key for the provider (OpenAI or Anthropic). Credentials are managed in the Dynatrace platform — see Managing credentials in Dynatrace.None
System PromptYesThe system prompt sent to the AI at the start of every analysis. It defines the AI’s role, tone, and scope. The pre-filled prompt (see below) is a good default for most environments. Resize the text area vertically.Pre-filled with the default prompt
  1. In Dynatrace, go to Settings → Credentials (or Vault).
  2. Create a new credential of type Token.
  3. Paste your OpenAI or Anthropic API key as the token value.
  4. Give it a recognizable name (e.g., OpenAI API Key).
  5. Back in the AI Analysis panel, select this credential in the Token dropdown.

Click List after selecting a Token and Base URL — the app calls the API provider’s model list endpoint and populates a dropdown. This avoids typos in model names. If your provider doesn’t support model listing, simply type the model name in the text input and click Save.

You are a Microsoft Teams call quality analyst. Your sole expertise is diagnosing issues
in Teams call data (call records, stream details, participant metrics, network paths).
RULES:
- Answer only questions related to the Teams call data provided in this conversation.
- If asked anything outside this scope, reply: "I can only answer questions about the
Teams call data in this analysis."
- For the first message of a conversation: give a very brief summary (2-3 sentences) of
the overall call quality and key findings, then ask what specific aspect the user would
like to investigate.
- For subsequent messages: answer directly and concisely. Use bullet points where
appropriate.
- No emojis.
- Use technical terms appropriate for IT professionals, developers, and telecom
consultants (RTT, jitter, packet loss, MOS, subnet, relay, protocol, etc.).
- When identifying issues, include specific metrics and thresholds where relevant.
- If the call quality is good, state it clearly and briefly.
- If data is insufficient to answer, say so rather than guessing.

You can customize this prompt to match your organization’s tone or to add domain-specific context. For example, you could add: “Focus on network-related issues first, then device issues.”

  1. The app collects all call data (participants, streams, geolocations, metrics) from the current Call Overview.
  2. It sends this data along with your question to the configured AI endpoint.
  3. The AI analyzes the data and returns a Markdown-formatted answer.
  4. Each conversation is cached per call ID — navigating away and back preserves the chat.
IndicatorStatusMessage
GreenValid”AI Configuration is valid”
YellowTesting”AI Configuration is being tested”
RedInvalid”No valid AI Configuration detected”

Auto-validation runs on page load if all fields are already saved.

ButtonWhen to useWhat happens
SaveAfter entering or modifying any fieldPersists the configuration. A success or failure toast appears.
TestTo verify the configuration worksCalls the AI endpoint with a minimal test. On failure, a toast shows the first 80 characters of the error, with a Copy Details button for troubleshooting.
ResetTo clear all settingsResets every field to its default value, including the prompt. A confirmation toast appears.
PageEffect when configured
Call OverviewAn “AI Analysis” button appears in the actions menu. Clicking it opens the chat sidebar with analysis of that specific call.
ConfigurationThe panel shows a green “AI Configuration is valid” indicator.
SymptomLikely causeSolution
”No valid AI Configuration detected”Token is missing, invalid, or expiredCheck the vault credential. Test with the Test button.
Test passes but AI doesn’t respond on Call OverviewMicrosoft credentials not configuredConfigure panel 10.
”Failed to fetch models”API key permissions or network restrictionVerify the API key has model listing permissions. Check that Base URL is reachable from your Dynatrace environment.
AI responses in French instead of EnglishPrompt customization changed the languageReview the System Prompt — the default is in English. Add a language instruction if needed.

Purpose: Configure the credentials used to authenticate against the Microsoft Graph API to download raw call details. This is required for two features:

  • Downloading call details as JSON from the Call Overview page
  • AI Analysis (panel 9) — the AI needs raw call data from the Graph API to build context
  • You want to use the AI Analysis feature on the Call Overview page.
  • You need to download raw call records as JSON files for offline analysis.
  • You have an Azure AD app registration with the CallRecords.Read.All permission.

Before configuring this panel, create an app registration in Azure AD:

  1. Go to Azure Portal → App registrations → New registration.
  2. Give it a name (e.g., MS Teams Observability).
  3. Under Certificates & secrets, create a client secret.
  4. Under API permissions, add Microsoft Graph → Application permissions → CallRecords.Read.All.
  5. Click Grant admin consent.
  6. Note the Tenant ID, Client ID, and Client secret.
FieldRequiredDescriptionDefault
Credential NameYesSelect a Dynatrace vault credential that stores the Azure AD client secret. Create a credential of type Username/Password — use the Client ID as the username and the client secret as the password. Or use Certificate if you prefer certificate-based auth.None
Client IDNoAzure AD application (client) ID. Leave empty if you stored it as the username in the vault credential above.None
Tenant IDYesYour Azure AD tenant ID (a GUID like 12345678-1234-1234-1234-123456789abc). Found in Azure Portal → Azure Active Directory → Overview.None
Grant TypeYesAuthentication flow. Client Credentials for app-only access (recommended for backend services). Demo for testing without real credentials (only works with demo data).Client Credentials
ScopeYesThe OAuth2 scope for the Microsoft Graph API. The default .default scopes it to the permissions you granted in Azure AD. Only change this if you need a specific scope.https://graph.microsoft.com/.default

How to set up the Credential Name (step by step)

Section titled “How to set up the Credential Name (step by step)”
  1. In Dynatrace, go to Settings → Credentials.
  2. Create a new credential of type Username/Password.
  3. Username: paste your Azure AD Client ID.
  4. Password: paste the client secret you created in Azure AD.
  5. Give it a recognizable name (e.g., Azure Graph API).
  6. Back in the Microsoft Configuration panel, select this credential in the Credential Name dropdown.
IndicatorStatusMessage
GreenValid”Microsoft Configuration is valid”
YellowTesting”Microsoft Configuration is being tested”
RedInvalid”No valid Microsoft Configuration detected”

Auto-validation runs on page load if all fields are saved. During validation, the app attempts an OAuth2 token exchange with login.microsoftonline.com.

ButtonWhen to useWhat happens
SaveAfter entering or modifying any fieldPersists the configuration. A success or failure toast appears.
TestTo verify the configuration worksAttempts to obtain an OAuth2 token from Microsoft. On failure, a detailed error toast helps diagnose the issue (invalid tenant, expired secret, wrong scope, etc.).
ResetTo clear all settingsClears all fields. A confirmation toast appears.
PageEffect when configured
Call OverviewDownload button becomes enabled. AI Analysis becomes functional (Microsoft data is sent as context to the AI).
SymptomLikely causeSolution
”No valid Microsoft Configuration detected”Incorrect tenant ID, client ID, or secretVerify the vault credential contents and the Tenant ID. Use the Test button.
”Invalid tenant” errorTenant ID is wrongCheck your Azure AD tenant ID in Azure Portal.
”Invalid client secret”Secret expired or wrongGo back to Azure Portal → App registration → Certificates & secrets, create a new secret, and update the vault credential.
”Insufficient privileges”CallRecords.Read.All permission missingCheck the Azure AD app registration permissions. Ensure admin consent was granted.
Test works but AI doesn’t respondAI Analysis not configuredConfigure panel 9. Microsoft config alone is not sufficient.

Purpose: Configure a list of email domains to restrict the data shown on the Sites page. Only users whose email address ends with one of the configured domains are included in site-level analytics.

This is useful for:

  • Filtering out external participants (guests, vendors, customers) from your site analytics
  • Focusing on internal users only — the Sites page aggregates data per location, and external users can distort the picture
  • Multi-tenant setups where you want to isolate data per domain
  • You want the Sites page to show only internal users.
  • External participants (guests from other organizations) are common in your Teams calls.
  • Optional — the Sites page works without this, but you’ll see a warning toast reminding you to configure it.

The domain filter is applied at the DQL query level on the Sites page. Calls involving only external users (no matching domain) are excluded from site aggregations.

SettingBehavior
No domains configuredAll users included. Warning toast appears on the Sites page: “You should configure your domains.”
One or more domainsOnly users with matching email domains are included in Sites analytics.
RuleExample
Each domain must start with @@mycompany.com
Subdomains are supported@sub.mycompany.com
Multiple domains can be added@mycompany.com, @mycompany.fr, @acquired-company.com
  1. Add: Type the domain in the input field (e.g., @mycompany.com) and press Enter or click Add.
  2. Remove: Click the × button on any domain chip.
  3. Unsaved domains appear as neutral/white chips. Once saved, they turn green with a checkmark.
ButtonDescription
SavePersists the current domain list. Unsaved chips become saved (green).
ResetClears all domains (both saved and unsaved chips).
PageEffect when configured
SitesOnly internal users (matching domains) are included in all analytics — map, NPA, call quality, network stats. If no domains are configured, a warning toast appears.
CallsNo direct effect — the filter only applies to Sites page aggregations.
SymptomLikely causeSolution
Sites page shows “Configure domains” warningNo domains configuredAdd at least one domain and click Save.
Some users missing from Sites dataTheir email domain isn’t in the listCheck that all relevant domains are added. External users (guests) won’t match internal domains by design.
Domain doesn’t match expected usersFormat is wrongEnsure the domain starts with @ (e.g., @company.com not company.com).

Purpose: View the effective permissions granted to the application based on the OAuth2 scopes configured for the Dynatrace app. This is a read-only diagnostic table — it shows which scopes the app has been granted and which are missing.

  • The app isn’t loading data or shows permission errors.
  • You’re troubleshooting why a specific feature isn’t working.
  • After updating OAuth scopes in the Dynatrace app settings, to verify the changes took effect.

The table lists all OAuth scopes declared by the app and their current status:

ColumnDescription
NameThe OAuth scope name (e.g., storage:files:read, storage:files:write). Hover shows the full scope string.
GrantedStatus indicator: True (green) — the app has this permission. False (red) — the app does NOT have this permission. Condition (blue) — permission is conditional on additional context.
CommentA human-readable description of what the scope is used for in the app.

The table is searchable — type in the Search permission… field to filter by scope name.

Missing scopeFeature affected
storage:files:read / write / deleteSite File Management — cannot upload, read, or delete the sites CSV file
storage:bucket-definitions:readBucket Configuration — cannot check if the Grail bucket exists
settings.read / settings.writeOpenPipeline — cannot validate or generate the pipeline configuration
Grail query scopesAll data pages — cannot query call, site, user, or issue data
  1. Go to Dynatrace → Apps → MS Teams Observability → Settings.
  2. Under OAuth scopes, ensure all required scopes are checked.
  3. Save the configuration.
  4. Return to this panel and verify the scopes now show True.
SymptomLikely causeSolution
A scope shows FalseThe OAuth scope was not granted when the app was installedUpdate the app’s OAuth scopes in Dynatrace app settings and re-authorize.
All scopes show FalseThe app doesn’t have permission to check its own scopesThis is a chicken-and-egg issue — contact your Dynatrace administrator.
Permission was granted but still shows FalseChanges may take a few minutes to propagateWait 2-3 minutes and refresh the page.

All save, reset, and test operations provide feedback via toast notifications:

OperationSuccessFailure
SaveGreen success toastRed critical toast
ResetGreen success toastRed critical toast
Test (valid)Green success toast
Test (invalid)Red critical toast with error details + Copy button

The following panels automatically test their configuration when the page loads (if credentials are already set):

  • Microsoft Configuration
  • AI Analysis
  • OpenPipeline