Forum Discussion

Anonymous42's avatar
Anonymous42
Copper Contributor
Feb 07, 2025

Outlook plugin: Updating manifest doesn't work, Update TenantAppDefinition failed

Hello,

I raised this request to the official MS customer service already and they couldn't help.

The problem is as follows: We are developing an Outlook Add-In using the 'new' JSON manifest way.

So far, we deployed our plugin to the Azure BLOB storage destination as it's specified by Teams Toolkit. Also, we were able to register it in the MS Teams Admin Center.

Now we wanted to make some changes to our icons registration in the manifest file and ran into an unknown exception. For testing, we reverted those changes and only increased the version number. However, the error message remained as-is, although the same manifest worked some time (maybe 1-2 weeks maybe) ago. There were no changes to the manifest file since then, except an increase in the version number.

 

The manifest can be submitted without any issues if the "ribbons" part is completely removed.

However, it passes all validations described in https://learn.microsoft.com/en-us/office/dev/add-ins/testing/troubleshoot-manifest . All icons match the specifications.

The same happens if we submit it as a new app.

 

This is the error message that we could intercept in the browser's DEV Tools when submitting the manifest in the appPackage to MS Teams Admin Center (manage existing app). Sensitive info was removed: 

{
    "error": {
        "code": "BadRequest",
        "message": "Update TenantAppDefinition failed, UserId: 'beefbeef-beef-beef-beef-beefbeefbeef', TenantId: 'beefbeef-beef-beef-beef-beefbeefbeef', Exception: 'Microsoft.SkypeSpaces.MiddleTier.Common.ServiceException: Failed to execute settings store request: https://emea.settings.teams.internal.office.com/v1.0/settings/teams/apps/beefbeef-beef-beef-beef-beefbeefbeef/definitionv2, StatusCode: 400, ReasonPhrase: Schema validation errors, X-MSEdge-Ref: beefbeef-beef-beef-beef-beefbeefbeef\r\n   at Microsoft.SkypeSpaces.MiddleTier.BackendServices.SettingsStore.SettingsStore.ExecuteRequestAsync(HttpRequestMessage requestMessage, String requestName, String entityType, String facet, Boolean throwOn404) in C:\\a\\_work\\1\\s\\Source\\BackendServices\\BackendServices\\SettingsStore\\SettingsStore.cs:line 339\r\n   at Microsoft.SkypeSpaces.MiddleTier.BackendServices.SettingsStore.SettingsStore.PutSettingAsync(String entityType, String entityId, String facet, String value, String ifMatch, String tenantIdForRegionLookup) in C:\\a\\_work\\1\\s\\Source\\BackendServices\\BackendServices\\SettingsStore\\SettingsStore.cs:line 146\r\n   at Microsoft.SkypeSpaces.MiddleTier.BackendServices.SettingsStore.SettingsStore.PutSettingAsync(String entityType, String entityId, String facet, String value, String ifMatch) in C:\\a\\_work\\1\\s\\Source\\BackendServices\\BackendServices\\SettingsStore\\SettingsStore.cs:line 118\r\n   at Microsoft.SkypeSpaces.MiddleTier.BackendServices.SettingsStore.SettingsStore.PutSettingAsync(String entityType, String entityId, String facet, String value) in C:\\a\\_work\\1\\s\\Source\\BackendServices\\BackendServices\\SettingsStore\\SettingsStore.cs:line 100\r\n   at Microsoft.SkypeSpaces.MiddleTier.Provider.SettingsStore.RegionalSettingsStoreProvider.SetAppDefinitionAsync(String appId, AppDefinitionItem appDefinition) in C:\\a\\_work\\1\\s\\Source\\Provider\\Provider\\SettingsStore\\RegionalSettingsStoreProvider.cs:line 1910\r\n   at Microsoft.Teams.MiddleTier.Apps.AppDefinitionsStore.Commands.CustomAppDefinitionWriter.<>c__DisplayClass10_0.<<UpdateAsync>b__0>d.MoveNext() in C:\\a\\_work\\1\\s\\Source\\Modules\\Apps\\MiddleTier.Apps\\AppDefinitionsStore\\Commands\\CustomAppDefinitionWriter.cs:line 103\r\n--- End of stack trace from previous location ---\r\n   at Microsoft.SkypeSpaces.MiddleTier.Common.InstrumentedAsyncFunc`1.ExecuteAsync()\r\n   at Microsoft.Teams.MiddleTier.Apps.AppDefinitionsStore.Commands.CustomAppDefinitionWriter.UpdateAsync(CustomAppDefinitionWriteContext context) in C:\\a\\_work\\1\\s\\Source\\Modules\\Apps\\MiddleTier.Apps\\AppDefinitionsStore\\Commands\\CustomAppDefinitionWriter.cs:line 113\r\n   at Microsoft.Teams.MiddleTier.Apps.AppDefinitionsStore.Commands.CustomTenantAppDefinitionWriter.UpdateAsync(CustomAppDefinitionWriteContext context) in C:\\a\\_work\\1\\s\\Source\\Modules\\Apps\\MiddleTier.Apps\\AppDefinitionsStore\\Commands\\CustomTenantAppDefinitionWriter.cs:line 56\r\n   at Microsoft.Teams.MiddleTier.Apps.Providers.AppsProviderTenant.UpdateTenantAppDefinitionAsync(AppDefinitionItem appDefinitionItem, ZipArchive appPackage) in C:\\a\\_work\\1\\s\\Source\\Modules\\Apps\\MiddleTier.Apps\\Providers\\AppsProviderTenant.cs:line 1733'Failed to execute settings store request: https://emea.settings.teams.internal.office.com/v1.0/settings/teams/apps/beefbeef-beef-beef-beef-beefbeefbeef/definitionv2, StatusCode: 400, ReasonPhrase: Schema validation errors, X-MSEdge-Ref: beefbeef-beef-beef-beef-beefbeefbeef",
        "innerError": {
            "code": "BadRequest",
            "message": "Update TenantAppDefinition failed, UserId: 'beefbeef-beef-beef-beef-beefbeefbeef', TenantId: 'beefbeef-beef-beef-beef-beefbeefbeef', Exception: 'Microsoft.SkypeSpaces.MiddleTier.Common.ServiceException: Failed to execute settings store request: https://emea.settings.teams.internal.office.com/v1.0/settings/teams/apps/beefbeef-beef-beef-beef-beefbeefbeef/definitionv2, StatusCode: 400, ReasonPhrase: Schema validation errors, X-MSEdge-Ref: beefbeef-beef-beef-beef-beefbeefbeef\r\n   at Microsoft.SkypeSpaces.MiddleTier.BackendServices.SettingsStore.SettingsStore.ExecuteRequestAsync(HttpRequestMessage requestMessage, String requestName, String entityType, String facet, Boolean throwOn404) in C:\\a\\_work\\1\\s\\Source\\BackendServices\\BackendServices\\SettingsStore\\SettingsStore.cs:line 339\r\n   at Microsoft.SkypeSpaces.MiddleTier.BackendServices.SettingsStore.SettingsStore.PutSettingAsync(String entityType, String entityId, String facet, String value, String ifMatch, String tenantIdForRegionLookup) in C:\\a\\_work\\1\\s\\Source\\BackendServices\\BackendServices\\SettingsStore\\SettingsStore.cs:line 146\r\n   at Microsoft.SkypeSpaces.MiddleTier.BackendServices.SettingsStore.SettingsStore.PutSettingAsync(String entityType, String entityId, String facet, String value, String ifMatch) in C:\\a\\_work\\1\\s\\Source\\BackendServices\\BackendServices\\SettingsStore\\SettingsStore.cs:line 118\r\n   at Microsoft.SkypeSpaces.MiddleTier.BackendServices.SettingsStore.SettingsStore.PutSettingAsync(String entityType, String entityId, String facet, String value) in C:\\a\\_work\\1\\s\\Source\\BackendServices\\BackendServices\\SettingsStore\\SettingsStore.cs:line 100\r\n   at Microsoft.SkypeSpaces.MiddleTier.Provider.SettingsStore.RegionalSettingsStoreProvider.SetAppDefinitionAsync(String appId, AppDefinitionItem appDefinition) in C:\\a\\_work\\1\\s\\Source\\Provider\\Provider\\SettingsStore\\RegionalSettingsStoreProvider.cs:line 1910\r\n   at Microsoft.Teams.MiddleTier.Apps.AppDefinitionsStore.Commands.CustomAppDefinitionWriter.<>c__DisplayClass10_0.<<UpdateAsync>b__0>d.MoveNext() in C:\\a\\_work\\1\\s\\Source\\Modules\\Apps\\MiddleTier.Apps\\AppDefinitionsStore\\Commands\\CustomAppDefinitionWriter.cs:line 103\r\n--- End of stack trace from previous location ---\r\n   at Microsoft.SkypeSpaces.MiddleTier.Common.InstrumentedAsyncFunc`1.ExecuteAsync()\r\n   at Microsoft.Teams.MiddleTier.Apps.AppDefinitionsStore.Commands.CustomAppDefinitionWriter.UpdateAsync(CustomAppDefinitionWriteContext context) in C:\\a\\_work\\1\\s\\Source\\Modules\\Apps\\MiddleTier.Apps\\AppDefinitionsStore\\Commands\\CustomAppDefinitionWriter.cs:line 113\r\n   at Microsoft.Teams.MiddleTier.Apps.AppDefinitionsStore.Commands.CustomTenantAppDefinitionWriter.UpdateAsync(CustomAppDefinitionWriteContext context) in C:\\a\\_work\\1\\s\\Source\\Modules\\Apps\\MiddleTier.Apps\\AppDefinitionsStore\\Commands\\CustomTenantAppDefinitionWriter.cs:line 56\r\n   at Microsoft.Teams.MiddleTier.Apps.Providers.AppsProviderTenant.UpdateTenantAppDefinitionAsync(AppDefinitionItem appDefinitionItem, ZipArchive appPackage) in C:\\a\\_work\\1\\s\\Source\\Modules\\Apps\\MiddleTier.Apps\\Providers\\AppsProviderTenant.cs:line 1733'Failed to execute settings store request: https://emea.settings.teams.internal.office.com/v1.0/settings/teams/apps/beefbeef-beef-beef-beef-beefbeefbeef/definitionv2, StatusCode: 400, ReasonPhrase: Schema validation errors, X-MSEdge-Ref: beefbeef-beef-beef-beef-beefbeefbeef",
            "details": [],
            "date": "2025-02-07T13:18:12",
            "request-id": "beefbeef-beef-beef-beef-beefbeefbeef",
            "client-request-id": "beefbeef-beef-beef-beef-beefbeefbeef"
        }
    }
}

This is our manifest (also with sensitive info being removed):

 

{
  "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.17/MicrosoftTeams.schema.json",
  "id": "beefbeef-beef-beef-beef-beefbeefbeef",
  "manifestVersion": "1.17",
  "version": "1.0.6",
  "name": {
    "short": "Outlook Addin name (dev)",
    "full": "Outlook Addin name"
  },
  "description": {
    "short": "Outlook Addin name (dev)",
    "full": "Outlook Addin name"
  },
  "developer": {
    "name": "OurCompany",
    "websiteUrl": "https://www.OurCompany.de",
    "privacyUrl": "https://www.OurCompany.de/privacy",
    "termsOfUseUrl": "https://www.OurCompany.de/servicesagreement"
  },
  "icons": {
    "outline": "assets/logoOutlined.png",
    "color": "assets/logo.png"
  },
  "accentColor": "#230201",
  "localizationInfo": {
    "defaultLanguageTag": "en-us",
    "additionalLanguages": []
  },
  "webApplicationInfo": {
    "id": "beefbeef-beef-beef-beef-beefbeefbeef",
    "resource": "api://CENSORED/beefbeef-beef-beef-beef-beefbeefbeef"
  },
  "authorization": {
    "permissions": {
      "resourceSpecific": [
        {
          "name": "MailboxItem.Read.User",
          "type": "Delegated"
        },
        {
          "name": "Group.Read.All",
          "type": "Delegated"
        },
        {
          "name": "Channel.ReadBasic.All",
          "type": "Delegated"
        },
        {
          "name": "Sites.ReadWrite.All",
          "type": "Delegated"
        },
        {
          "name": "Tasks.ReadWrite.All",
          "type": "Delegated"
        },
        {
          "name": "Tasks.ReadWrite.Shared",
          "type": "Delegated"
        },
        {
          "name": "Group-Conversation.ReadWrite.All",
          "type": "Delegated"
        }
      ]
    }
  },
  "validDomains": ["OurCompany.de"],
  "extensions": [
    {
      "requirements": {
        "scopes": ["mail"],
        "capabilities": [
          {
            "name": "Mailbox",
            "minVersion": "1.3"
          }
        ]
      },
      "runtimes": [
        {
          "requirements": {
            "capabilities": [
              {
                "name": "Mailbox",
                "minVersion": "1.3"
              }
            ]
          },
          "id": "TaskPaneRuntime",
          "type": "general",
          "code": {
            "page": "https://censored.web.core.windows.net/taskpane.html"
          },
          "lifetime": "short",
          "actions": [
            {
              "id": "TaskPaneRuntimeShow",
              "type": "openPage",
              "pinnable": false,
              "view": "dashboard"
            }
          ]
        }
      ],
      "ribbons": [
        {
          "contexts": ["mailRead"],
          "tabs": [
            {
              "builtInTabId": "TabDefault",
              "groups": [
                {
                  "id": "msgReadGroup",
                  "label": "Outlook Addin name",
                  "icons": [
                    {
                      "size": 16,
                      "url": "https://censored.web.core.windows.net/assets/icon-16.png"
                    },
                    {
                      "size": 32,
                      "url": "https://censored.web.core.windows.net/assets/icon-32.png"
                    },
                    {
                      "size": 80,
                      "url": "https://censored.web.core.windows.net/assets/icon-80.png"
                    }
                  ],
                  "controls": [
                    {
                      "id": "msgReadOpenPaneButton",
                      "type": "button",
                      "label": "Outlook Addin name (dev)",
                      "icons": [
                        {
                          "size": 16,
                          "url": "https://censored.web.core.windows.net/assets/icon-16.png"
                        },
                        {
                          "size": 32,
                          "url": "https://censored.web.core.windows.net/assets/icon-32.png"
                        },
                        {
                          "size": 80,
                          "url": "https://censored.web.core.windows.net/assets/icon-80.png"
                        }
                      ],
                      "supertip": {
                        "title": "Show Outlook Addin name",
                        "description": "Opens a pane displaying Outlook Addin name."
                      },
                      "actionId": "TaskPaneRuntimeShow"
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}

Is there anything we can do to further investigate the issue?

  • Hello Anonymous42, Thank you for your inquiry about your Teams app development issue! 
    Could you please ensure the "ribbons" section in your manifest file is correctly defined according to the specifications.Double-check the properties and values within the "ribbons" section to ensure they meet the requirements.
    If possible, create a minimal version of your manifest file with only the essential elements, excluding the "ribbons" section. Gradually add back sections to identify which part of the manifest is causing the issue.

    Reference Document-Customize app manifest in Teams Toolkit - Teams | Microsoft Learn

    • Anonymous42's avatar
      Anonymous42
      Copper Contributor

      Hi,

      I checked the manifest using teamsfx validate and also checked the "ribbons" part against the JSON Schema of the 1.17 manifest version. Both checks didn't give any error.

      Once I remove the entire "ribbons" section, it can be uploaded fine, just like our other Teams apps. Once all mandatory fields of the "ribbons" are there again, it fails.

      If I remove any mandatory fields from the "ribbons", the validation finds them correctly.

      Also, we didn't make any changes to the manifest itself, nor the images being referenced. It just stopped working.

      Does the error message maybe give more insights?

      • Sayali-MSFT's avatar
        Sayali-MSFT
        Icon for Microsoft rankMicrosoft

        @Anonymous42, Thank you for quick response. We will check this issue with our internal team and let you know the update once we have any.

  • KiteloopMaster's avatar
    KiteloopMaster
    Copper Contributor

    Hello,

    I am having the exact same issue for more than a week...Did you ever manage to solve it?

    Thanks for the help!

     

Resources