ItemSend Event for Appointment Outlook Addin throwing manifest validation error - outlook

I'm trying to have an on send handler assigned to a function within an Outlook addin for an Appointment. I strictly follow the manual, but I'm getting an error on the manifest validation
Error #1:
Mailbox add-in containing ItemSend event is invalid.: Mailbox add-in containing ItemSend event is invalid.
- Details: Mailbox add-in manifest contains ItemSend event in VersionOverrides which is not allowed.
My manifest.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:bt="http://schemas.microsoft.com/office/officeappbasictypes/1.0"
xmlns:mailappor="http://schemas.microsoft.com/office/mailappversionoverrides/1.0"
xsi:type="MailApp">
<Id>90992a37-6ac0-4e31-8f4d-c35d61ac033b</Id>
<Version>1.0.0.0</Version>
<ProviderName>CKT (dev)</ProviderName>
<DefaultLocale>en-US</DefaultLocale>
<DisplayName DefaultValue="Sync events with CKT Portal (dev)"/>
<Description DefaultValue="Sync events of Outlook with CKT portal (dev)"/>
<IconUrl DefaultValue="https://ckt-d.internal.epo.org/addins/outlook/ckt.gif"/>
<HighResolutionIconUrl DefaultValue="https://ckt-d.internal.epo.org/addins/outlook/ckt-128x128.gif"/>
<SupportUrl DefaultValue="https://ckt-d.internal.epo.org"/>
<AppDomains>
<AppDomain>https://ckt-d.internal.epo.org</AppDomain>
</AppDomains>
<Hosts>
<Host Name="Mailbox"/>
</Hosts>
<Requirements>
<Sets>
<Set Name="Mailbox" MinVersion="1.8"/>
</Sets>
</Requirements>
<FormSettings>
<Form xsi:type="ItemRead">
<DesktopSettings>
<SourceLocation DefaultValue="https://ckt-d.internal.epo.org/addins/outlook/taskpane.html"/>
<RequestedHeight>250</RequestedHeight>
</DesktopSettings>
</Form>
</FormSettings>
<Permissions>ReadWriteMailbox</Permissions>
<Rule xsi:type="RuleCollection" Mode="Or">
<Rule xsi:type="ItemIs" ItemType="Appointment" FormType="Edit" />
<Rule xsi:type="ItemIs" ItemType="Appointment" FormType="Read" />
</Rule>
<DisableEntityHighlighting>false</DisableEntityHighlighting>
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0">
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1" xsi:type="VersionOverridesV1_1">
<Requirements>
<bt:Sets DefaultMinVersion="1.8">
<bt:Set Name="Mailbox"/>
</bt:Sets>
</Requirements>
<Hosts>
<Host xsi:type="MailHost">
<DesktopFormFactor>
<FunctionFile resid="Taskpane.Url"/>
<ExtensionPoint xsi:type="AppointmentOrganizerCommandSurface">
<OfficeTab id="TabDefault">
<Group id="apptComposeDemoGroup">
<Label resid="groupLabel" />
<!-- Task pane button -->
<Control xsi:type="Button" id="TaskpaneButton">
<Label resid="TaskpaneButton.Label" />
<Supertip>
<Title resid="TaskpaneButton.Label" />
<Description resid="TaskpaneButton.Tooltip" />
</Supertip>
<Icon>
<bt:Image size="16" resid="Icon.16x16" />
<bt:Image size="32" resid="Icon.32x32" />
<bt:Image size="80" resid="Icon.80x80" />
</Icon>
<Action xsi:type="ShowTaskpane">
<SourceLocation resid="Taskpane.Url" />
</Action>
</Control>
</Group>
</OfficeTab>
</ExtensionPoint>
<ExtensionPoint xsi:type="AppointmentAttendeeCommandSurface">
<OfficeTab id="TabDefault">
<Group id="apptReadDemoGroup">
<Label resid="groupLabel" />
<!-- Task pane button -->
<Control xsi:type="Button" id="TaskpaneButton2">
<Label resid="TaskpaneButton2.Label" />
<Supertip>
<Title resid="TaskpaneButton2.Label" />
<Description resid="TaskpaneButton2.Tooltip" />
</Supertip>
<Icon>
<bt:Image size="16" resid="Icon.16x16" />
<bt:Image size="32" resid="Icon.32x32" />
<bt:Image size="80" resid="Icon.80x80" />
</Icon>
<Action xsi:type="ShowTaskpane">
<SourceLocation resid="Taskpane.Url" />
</Action>
</Control>
</Group>
</OfficeTab>
</ExtensionPoint>
<ExtensionPoint xsi:type="Events">
<Event Type="ItemSend" FunctionExecution="synchronous" FunctionName="validateBody" />
</ExtensionPoint>
</DesktopFormFactor>
</Host>
</Hosts>
<Resources>
<bt:Images>
<bt:Image id="Icon.16x16" DefaultValue="https://ckt-d.internal.epo.org/addins/outlook/ckt.gif"/>
<bt:Image id="Icon.32x32" DefaultValue="https://ckt-d.internal.epo.org/addins/outlook/ckt-32x32.gif"/>
<bt:Image id="Icon.80x80" DefaultValue="https://ckt-d.internal.epo.org/addins/outlook/ckt-80x80.gif"/>
</bt:Images>
<bt:Urls>
<bt:Url id="Taskpane.Url" DefaultValue="https://ckt-d.internal.epo.org/addins/outlook/taskpane.html"/>
</bt:Urls>
<bt:ShortStrings>
<bt:String id="groupLabel" DefaultValue="CKT Add-in (dev)"/>
<bt:String id="TaskpaneButton.Label" DefaultValue="CKT (dev)"/>
<bt:String id="TaskpaneButton2.Label" DefaultValue="CKT (dev)"/>
</bt:ShortStrings>
<bt:LongStrings>
<bt:String id="TaskpaneButton.Tooltip" DefaultValue="Sync Outllook events with CKT as Organizer (dev)"/>
<bt:String id="TaskpaneButton2.Tooltip" DefaultValue="Sync Outllook events with CKT as Attendee (dev)"/>
</bt:LongStrings>
</Resources>
</VersionOverrides>
</VersionOverrides>
</OfficeApp>
What am I missing?

Our documentation is updated regarding office store validation with
office-addin-manifest script. Please check here:
https://learn.microsoft.com/en-us/office/dev/add-ins/testing/troubleshoot-manifest#validate-your-manifest-with-office-addin-manifest
Add-ins with On-Send events are not allowed on the add-in store. They can only be installed by the organization admin or manually.

Related

Outlook add-in Windows : Button not showing up in the ribbon

I'm developping an add-in for outlook windows and i'm having trouble setting up the manifest so that the button shows up on the ribbon in the appointment interface.
As of right now, the button that shows up on the ribbon is the button "Office Add-ins" that opens up a window that allow users to select the Add-in i'm developping.
Here is a picture of the button that shows up instead of my add-in icon :
Office Add-ins button showing up
Here is the manifest of my add-in (anonymised)
<?xml version="1.0" encoding="UTF-8"?>
<OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:bt="http://schemas.microsoft.com/office/officeappbasictypes/1.0"
xmlns:mailappor="http://schemas.microsoft.com/office/mailappversionoverrides/1.0" xsi:type="MailApp">
<Id>04049d6c-3286-46c1-be8a-965a2a8ee58f</Id>
<Version>1.0.0.0</Version>
<ProviderName>X</ProviderName>
<DefaultLocale>en-US</DefaultLocale>
<DisplayName DefaultValue="Room Finder"/>
<Description DefaultValue="Find a free room for your meeting."/>
<IconUrl DefaultValue="https://someurl.com/assets/logo-64.png"/>
<HighResolutionIconUrl DefaultValue="https://someurl.com/assets/logo-128.png"/>
<SupportUrl DefaultValue="https://someurl.com"/>
<AppDomains>
<AppDomain>https://someurl.com</AppDomain>
</AppDomains>
<Hosts>
<Host Name="Mailbox"/>
</Hosts>
<Requirements>
<Sets>
<Set Name="Mailbox" MinVersion="1.1"/>
</Sets>
</Requirements>
<FormSettings>
<Form xsi:type="ItemEdit">
<DesktopSettings>
<SourceLocation DefaultValue="https://someurl.com/webaddin/taskpane.html"/>
</DesktopSettings>
</Form>
</FormSettings>
<Permissions>ReadWriteMailbox</Permissions>
<Rule xsi:type="RuleCollection" Mode="Or">
<Rule xsi:type="ItemIs" ItemType="Appointment" FormType="Edit"/>
<Rule xsi:type="ItemIs" ItemType="Appointment" FormType="Read" />
<Rule xsi:type="ItemHasKnownEntity" EntityType="MeetingSuggestion" />
</Rule>
<DisableEntityHighlighting>false</DisableEntityHighlighting>
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0">
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1" xsi:type="VersionOverridesV1_1">
<Description resid="residAppDesc" />
<Requirements>
<bt:Sets DefaultMinVersion="1.5">
<bt:Set Name="Mailbox"/>
</bt:Sets>
</Requirements>
<Hosts>
<Host xsi:type="MailHost">
<DesktopFormFactor>
<ExtensionPoint xsi:type="AppointmentOrganizerCommandSurface">
<OfficeTab id="TabDefault">
<Group id="appOrgGroup">
<Label resid="GroupLabel"/>
<Control xsi:type="Button" id="appOrgTaskPaneButton">
<Label resid="appOrgTaskPaneButton.Label"/>
<Supertip>
<Title resid="appOrgTaskPaneButton.Label"/>
<Description resid="appOrgTaskPaneButton.Tooltip"/>
</Supertip>
<Icon>
<bt:Image size="16" resid="Icon.16x16"/>
<bt:Image size="32" resid="Icon.32x32"/>
<bt:Image size="80" resid="Icon.80x80"/>
<bt:Image size="128" resid="Icon.128x128"/>
</Icon>
<Action xsi:type="ShowTaskpane">
<SourceLocation resid="appOrgTaskPaneButton.Url"/>
</Action>
</Control>
</Group>
</OfficeTab>
</ExtensionPoint>
</DesktopFormFactor>
</Host>
</Hosts>
<Resources>
<bt:Images>
<bt:Image id="Icon.16x16" DefaultValue="https://someurl.com/webaddin/assets/logo-16.png"/>
<bt:Image id="Icon.32x32" DefaultValue="https://someurl.com/webaddin/assets/logo-32.png"/>
<bt:Image id="Icon.64x64" DefaultValue="https://someurl.com/webaddin/assets/logo-64.png"/>
<bt:Image id="Icon.80x80" DefaultValue="https://someurl.com/webaddin/assets/logo-80.png"/>
<bt:Image id="Icon.128x128" DefaultValue="https://someurl.com/webaddin/assets/logo-128.png"/>
</bt:Images>
<bt:Urls>
<!-- Separate page for appointments-->
<bt:Url id="appOrgTaskPaneButton.Url" DefaultValue="https://someurl.com/webaddin/taskpane.html"/>
</bt:Urls>
<bt:ShortStrings>
<bt:String id="GroupLabel" DefaultValue="My company"/>
<bt:String id="appOrgTaskPaneButton.Label" DefaultValue="Find Meeting Room"/>
</bt:ShortStrings>
<bt:LongStrings>
<bt:String id="appOrgTaskPaneButton.Tooltip" DefaultValue="Find an available room for this meeting based on your building and floor selection"/>
<bt:String id="residAppDesc" DefaultValue="My company"></bt:String>
</bt:LongStrings>
</Resources>
</VersionOverrides>
</VersionOverrides>
</OfficeApp>
Is there anything wrong with my manifest.xml ? I tried to deviate as less as i could from examples from microsoft teams on Github repos
Edit : It seems that this issue does not happen on outlook 2021
Environment setup : Microsoft Outlook 2016 (16.0.5182.1000) Exchange 2016 (build version 15.1.2375.7) on-premise
In the manifest file a built-in tab was specified:
<OfficeTab id="TabDefault">
Most probably there is no tab on the ribbon with such ID for appointments.
For a custom tab you need to use the following element instead:
<CustomTab id="Contoso Tab">
The OfficeTab is used for built-in ribbon tabs in the following way:
<OfficeTab id="TabData">
If you use the CustomTab element, you can't use the OfficeTab element.
You may check the Find the IDs of controls and control groups section in MSDN if you need to find the built-in tab ID.

Outlook add-in with React not visible for shared mail box

We have created an Outlook add-in to move emails/attachments to SharePoint which works fine for user mailbox but when I move to the shared mailbox the add-in is not visible
Inside get add-ins to tab the add-in is visible but not visible on the ribbon.
We have configured shared mailbox in Exchange and is auto mapped to outlook. The SupportsSharedFolders is set to true and there are no issues while installing the manifest.
Did I miss any step in configuration?
Please help to get the add-in started for the shared mailbox.
EDIT: Im including the manifest file below. Just found that the desktop client is using version override 1.0 and Web and mobile are using version override 1.1.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bt="http://schemas.microsoft.com/office/officeappbasictypes/1.0" xmlns:mailappor="http://schemas.microsoft.com/office/mailappversionoverrides/1.0" xsi:type="MailApp">
<Id>1111111111111</Id>
<Version>1.0.0.4</Version>
<ProviderName>Contoso</ProviderName>
<DefaultLocale>en-US</DefaultLocale>
<DisplayName DefaultValue="Contoso E-mail"/>
<Description DefaultValue="Contoso E-mail"/>
<IconUrl DefaultValue="https://localhost:3000/assets/Icon64.png"/>
<HighResolutionIconUrl DefaultValue="https://localhost:3000/assets/Icon128.png"/>
<SupportUrl DefaultValue="https://www.Contoso.com/help"/>
<AppDomains>
<AppDomain>https://login.microsoftonline.com</AppDomain>
<AppDomain>https://login.windows.net</AppDomain>
</AppDomains>
<Hosts>
<Host Name="Mailbox"/>
</Hosts>
<Requirements>
<Sets>
<Set Name="Mailbox" MinVersion="1.1"/>
</Sets>
</Requirements>
<FormSettings>
<Form xsi:type="ItemRead">
<DesktopSettings>
<SourceLocation DefaultValue="https://localhost:3000/taskpane.html">
<Override Locale="nl-nl" Value="https://localhost:3000/taskpane_nl.html" />
</SourceLocation>
<RequestedHeight>250</RequestedHeight>
</DesktopSettings>
</Form>
</FormSettings>
<Permissions>ReadWriteMailbox</Permissions>
<Rule xsi:type="RuleCollection" Mode="Or">
<Rule xsi:type="ItemIs" ItemType="Message" FormType="Read"/>
</Rule>
<DisableEntityHighlighting>false</DisableEntityHighlighting>
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0">
<Requirements>
<bt:Sets DefaultMinVersion="1.3">
<bt:Set Name="Mailbox"/>
</bt:Sets>
</Requirements>
<Hosts>
<Host xsi:type="MailHost">
<DesktopFormFactor>
<FunctionFile resid="Commands.Url"/>
<ExtensionPoint xsi:type="MessageReadCommandSurface">
<OfficeTab id="TabDefault">
<Group id="msgReadGroup">
<Label resid="GroupLabel"/>
<Control xsi:type="Button" id="msgReadOpenPaneButton">
<Label resid="TaskpaneButton.Label"/>
<Supertip>
<Title resid="TaskpaneButton.Label"/>
<Description resid="TaskpaneButton.Tooltip"/>
</Supertip>
<Icon>
<bt:Image size="16" resid="Icon.16x16" />
<bt:Image size="32" resid="Icon.32x32"/>
<bt:Image size="80" resid="Icon.80x80"/>
</Icon>
<Action xsi:type="ShowTaskpane">
<SourceLocation resid="Taskpane.Url"/>
</Action>
</Control>
</Group>
</OfficeTab>
</ExtensionPoint>
</DesktopFormFactor>
</Host>
</Hosts>
<Resources>
<bt:Images>
<bt:Image id="Icon.16x16" DefaultValue="https://localhost:3000/assets/Icon16.png">
<bt:Override Locale="nl-nl" Value="https://localhost:3000/assets/Icon16.png" />
</bt:Image>
<bt:Image id="Icon.32x32" DefaultValue="https://localhost:3000/assets/Icon32.png">
<bt:Override Locale="nl-nl" Value="https://localhost:3000/assets/Icon32.png" />
</bt:Image>
<bt:Image id="Icon.80x80" DefaultValue="https://localhost:3000/assets/Icon80.png">
<bt:Override Locale="nl-nl" Value="https://localhost:3000/assets/Icon80.png" />
</bt:Image>
</bt:Images>
<bt:Urls>
<bt:Url id="Commands.Url" DefaultValue="https://localhost:3000/commands.html"/>
<bt:Url id="Taskpane.Url" DefaultValue="https://localhost:3000/taskpane.html"/>
</bt:Urls>
<bt:ShortStrings>
<bt:String id="GroupLabel" DefaultValue="Contoso E-mail"/>
<bt:String id="TaskpaneButton.Label" DefaultValue="Contoso E-mail"/>
</bt:ShortStrings>
<bt:LongStrings>
<bt:String id="TaskpaneButton.Tooltip" DefaultValue="Opens a pane displaying all available properties."/>
</bt:LongStrings>
</Resources>
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1" xsi:type="VersionOverridesV1_1">
<Requirements>
<bt:Sets DefaultMinVersion="1.3">
<bt:Set Name="Mailbox"/>
</bt:Sets>
</Requirements>
<Hosts>
<Host xsi:type="MailHost">
<DesktopFormFactor>
<FunctionFile resid="Commands.Url"/>
<ExtensionPoint xsi:type="MessageReadCommandSurface">
<OfficeTab id="TabDefault">
<Group id="msgReadGroup">
<Label resid="GroupLabel"/>
<Control xsi:type="Button" id="msgReadOpenPaneButton">
<Label resid="TaskpaneButton.Label"/>
<Supertip>
<Title resid="TaskpaneButton.Label"/>
<Description resid="TaskpaneButton.Tooltip"/>
</Supertip>
<Icon>
<bt:Image size="16" resid="Icon.16x16"/>
<bt:Image size="32" resid="Icon.32x32"/>
<bt:Image size="80" resid="Icon.80x80"/>
</Icon>
<Action xsi:type="ShowTaskpane">
<SourceLocation resid="Taskpane.Url"/>
</Action>
</Control>
</Group>
</OfficeTab>
</ExtensionPoint>
</DesktopFormFactor>
</Host>
<Host xsi:type="MailHost">
<MobileFormFactor>
<FunctionFile resid="Commands.Url" />
<ExtensionPoint xsi:type="MobileMessageReadCommandSurface">
<Group id="mobileMsgRead">
<Label resid="GroupLabel" />
<Control xsi:type="MobileButton" id="TaskPaneBtn">
<Label resid="TaskpaneButton.Label" />
<Icon xsi:type="bt:MobileIconList">
<bt:Image size="25" scale="1" resid="Icon.25x25" />
<bt:Image size="25" scale="2" resid="Icon.25x25" />
<bt:Image size="25" scale="3" resid="Icon.25x25" />
<bt:Image size="32" scale="1" resid="Icon.32x32" />
<bt:Image size="32" scale="2" resid="Icon.32x32" />
<bt:Image size="32" scale="3" resid="Icon.32x32" />
<bt:Image size="48" scale="1" resid="Icon.48x48" />
<bt:Image size="48" scale="2" resid="Icon.48x48" />
<bt:Image size="48" scale="3" resid="Icon.48x48" />
</Icon>
<Action xsi:type="ShowTaskpane">
<SourceLocation resid="Taskpane.Url" />
</Action>
</Control>
</Group>
</ExtensionPoint>
</MobileFormFactor>
</Host>
</Hosts>
<Resources>
<bt:Images>
<bt:Image id="Icon.16x16" DefaultValue="https://localhost:3000/assets/Icon16.png">
<bt:Override Locale="nl-nl" Value="https://localhost:3000/assets/Icon16.png" />
</bt:Image>
<bt:Image id="Icon.32x32" DefaultValue="https://localhost:3000/assets/Icon32.png">
<bt:Override Locale="nl-nl" Value="https://localhost:3000/assets/Icon32.png" />
</bt:Image>
<bt:Image id="Icon.80x80" DefaultValue="https://localhost:3000/assets/Icon80.png">
<bt:Override Locale="nl-nl" Value="https://localhost:3000/assets/Icon80.png" />
</bt:Image>
</bt:Images>
<bt:Urls>
<bt:Url id="Commands.Url" DefaultValue="https://localhost:3000/commands.html"/>
<bt:Url id="Taskpane.Url" DefaultValue="https://localhost:3000/taskpane.html"/>
</bt:Urls>
<bt:ShortStrings>
<bt:String id="GroupLabel" DefaultValue="Contoso E-mail"/>
<bt:String id="TaskpaneButton.Label" DefaultValue="Contoso E-mail"/>
</bt:ShortStrings>
<bt:LongStrings>
<bt:String id="TaskpaneButton.Tooltip" DefaultValue="Opens a pane displaying all available properties."/>
</bt:LongStrings>
</Resources>
</VersionOverrides>
</VersionOverrides>
</OfficeApp>
You have mentioned that "SupportsSharedFolders" is set true but the manifest you shared does not have "SupportsSharedFolders". Please add "SupportsSharedFolders" as mentioned in docs and check.

How to show addin in Outlook web app when composing mail?

I used office-generator to scaffold out an Outlook addin and it seems to show up and run when mail opened in read mode but its not showing up in the addins section when a new mail is being composed. I wanted to show the addin to show up in compose mode and once clicked open the addin in pane.
Following is the generated manifest.xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:bt="http://schemas.microsoft.com/office/officeappbasictypes/1.0"
xmlns:mailappor="http://schemas.microsoft.com/office/mailappversionoverrides/1.0" xsi:type="MailApp">
<Id>5258dea2-7a90-4263-a6e9-a6a9b69c032a</Id>
<Version>1.0.0.0</Version>
<ProviderName>Contoso</ProviderName>
<DefaultLocale>en-US</DefaultLocale>
<DisplayName DefaultValue="FirstOutlookAddin"/>
<Description DefaultValue="A template to get started."/>
<IconUrl DefaultValue="https://localhost:3000/assets/icon-32.png"/>
<HighResolutionIconUrl DefaultValue="https://localhost:3000/assets/icon-80.png"/>
<SupportUrl DefaultValue="https://www.contoso.com/help"/>
<AppDomains>
<AppDomain>contoso.com</AppDomain>
</AppDomains>
<Hosts>
<Host Name="Mailbox"/>
</Hosts>
<Requirements>
<Sets>
<Set Name="Mailbox" MinVersion="1.1"/>
</Sets>
</Requirements>
<FormSettings>
<Form xsi:type="ItemRead">
<DesktopSettings>
<SourceLocation DefaultValue="https://localhost:3000/taskpane.html"/>
<RequestedHeight>250</RequestedHeight>
</DesktopSettings>
</Form>
</FormSettings>
<Permissions>ReadWriteItem</Permissions>
<Rule xsi:type="RuleCollection" Mode="Or">
<Rule xsi:type="ItemIs" ItemType="Message" FormType="Read"/>
</Rule>
<DisableEntityHighlighting>false</DisableEntityHighlighting>
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0">
<Requirements>
<bt:Sets DefaultMinVersion="1.3">
<bt:Set Name="Mailbox"/>
</bt:Sets>
</Requirements>
<Hosts>
<Host xsi:type="MailHost">
<DesktopFormFactor>
<FunctionFile resid="Commands.Url"/>
<!-- Message Compose -->
<ExtensionPoint xsi:type="MessageComposeCommandSurface">
<OfficeTab id="TabDefault">
<Group id="msgComposeCmdGroup">
<Label resid="GroupLabel"/>
<Control xsi:type="Button" id="msgComposeInsertGist">
<Label resid="TaskpaneButton.Label"/>
<Supertip>
<Title resid="TaskpaneButton.Title"/>
<Description resid="TaskpaneButton.Tooltip"/>
</Supertip>
<Icon>
<bt:Image size="16" resid="Icon.16x16"/>
<bt:Image size="32" resid="Icon.32x32"/>
<bt:Image size="80" resid="Icon.80x80"/>
</Icon>
<Action xsi:type="ShowTaskpane">
<SourceLocation resid="Taskpane.Url"/>
</Action>
</Control>
<Control xsi:type="Button" id="msgComposeInsertDefaultGist">
<Label resid="FunctionButton.Label"/>
<Supertip>
<Title resid="FunctionButton.Title"/>
<Description resid="FunctionButton.Tooltip"/>
</Supertip>
<Icon>
<bt:Image size="16" resid="Icon.16x16"/>
<bt:Image size="32" resid="Icon.32x32"/>
<bt:Image size="80" resid="Icon.80x80"/>
</Icon>
<Action xsi:type="ExecuteFunction">
<FunctionName>insertDefaultGist</FunctionName>
</Action>
</Control>
</Group>
</OfficeTab>
</ExtensionPoint>
</DesktopFormFactor>
</Host>
</Hosts>
<Resources>
<bt:Images>
<bt:Image id="Icon.16x16" DefaultValue="https://localhost:3000/assets/icon-16.png"/>
<bt:Image id="Icon.32x32" DefaultValue="https://localhost:3000/assets/icon-32.png"/>
<bt:Image id="Icon.80x80" DefaultValue="https://localhost:3000/assets/icon-80.png"/>
</bt:Images>
<bt:Urls>
<bt:Url id="Commands.Url" DefaultValue="https://localhost:3000/commands.html"/>
<bt:Url id="Taskpane.Url" DefaultValue="https://localhost:3000/taskpane.html"/>
</bt:Urls>
<bt:ShortStrings>
<bt:String id="GroupLabel" DefaultValue="Git the gist"/>
<bt:String id="TaskpaneButton.Label" DefaultValue="Insert gist"/>
<bt:String id="TaskpaneButton.Title" DefaultValue="Insert gist"/>
<bt:String id="FunctionButton.Label" DefaultValue="Insert default gist"/>
<bt:String id="FunctionButton.Title" DefaultValue="Insert default gist"/>
</bt:ShortStrings>
<bt:LongStrings>
<bt:String id="TaskpaneButton.Tooltip" DefaultValue="Displays a list of your gists and allows you to insert their contents into the current message."/>
<bt:String id="FunctionButton.Tooltip" DefaultValue="Inserts the content of the gist you mark as default into the current message."/>
</bt:LongStrings>
</Resources>
</VersionOverrides>
</OfficeApp>

outlook add-ins on safari and chrome on mobiles

Given that outlook for iOS and android only supports "MessageReadCommandSurface" I thought I'd investigate how my add-in looks on safari and chrome running on a mobile. On all other platforms I can see'Send to OneNote' as well as my own app but on mobile i only get 'My Templates'. My add-in doesn't appear. Am i doing something wrong?
<?xml version="1.0" encoding="UTF-8"?>
<!--Created:ce44715c-8c4e-446b-879c-ea9ebe0f09c8-->
<OfficeApp
xmlns="http://schemas.microsoft.com/office/appforoffice/1.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:bt="http://schemas.microsoft.com/office/officeappbasictypes/1.0"
xmlns:mailappor="http://schemas.microsoft.com/office/mailappversionoverrides/1.0"
xsi:type="MailApp">
<!-- Begin Basic Settings: Add-in metadata, used for all versions of Office unless override provided. -->
<!-- IMPORTANT! Id must be unique for your add-in, if you reuse this manifest ensure that you change this id to a new GUID. -->
<Id>23c97452-1ba9-4e87-b34d-9e99d92013d6</Id>
<!--Version. Updates from the store only get triggered if there is a version change. -->
<Version>1.0.0.0</Version>
<ProviderName>"Timewatch"</ProviderName>
<DefaultLocale>en-US</DefaultLocale>
<!-- The display name of your add-in. Used on the store and various places of the Office UI such as the add-ins dialog. -->
<DisplayName DefaultValue="My Office Add-in" />
<Description DefaultValue="My First Outlook add-in"/>
<IconUrl DefaultValue="~remoteAppUrl/Images/icon64.png"/>
<!--<IconUrl DefaultValue="https://localhost/Images/icon64.png"/>-->
<SupportUrl DefaultValue="http://www.contoso.com" />
<!-- Domains that will be allowed when navigating. For example, if you use ShowTaskpane and then have an href link, navigation will only be allowed if the domain is on this list. -->
<AppDomains>
<AppDomain>AppDomain1</AppDomain>
<AppDomain>AppDomain2</AppDomain>
<AppDomain>AppDomain3</AppDomain>
</AppDomains>
<!--End Basic Settings. -->
<Hosts>
<Host Name="Mailbox" />
</Hosts>
<Requirements>
<Sets>
<Set Name="Mailbox" MinVersion="1.1" />
</Sets>
</Requirements>
<FormSettings>
<Form xsi:type="ItemRead">
<DesktopSettings>
<SourceLocation DefaultValue="~remoteAppUrl/MessageRead.html"/>
<!--<SourceLocation DefaultValue="https://localhost//MessageRead.html"/>-->
<RequestedHeight>250</RequestedHeight>
</DesktopSettings>
</Form>
</FormSettings>
<Permissions>ReadWriteItem</Permissions>
<Rule xsi:type="RuleCollection" Mode="Or">
<Rule xsi:type="ItemIs" ItemType="Message" FormType="Read" />
</Rule>
<DisableEntityHighlighting>false</DisableEntityHighlighting>
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0">
<Requirements>
<bt:Sets DefaultMinVersion="1.3">
<bt:Set Name="Mailbox" />
</bt:Sets>
</Requirements>
<Hosts>
<Host xsi:type="MailHost">
<DesktopFormFactor>
<!-- Location of the Functions that UI-less buttons can trigger (ExecuteFunction Actions). -->
<FunctionFile resid="functionFile" />
<!-- Message Read -->
<ExtensionPoint xsi:type="MessageReadCommandSurface">
<!-- Use the default tab of the ExtensionPoint or create your own with <CustomTab id="myTab"> -->
<OfficeTab id="TabDefault">
<!-- Up to 6 Groups added per Tab -->
<Group id="msgReadGroup">
<Label resid="groupLabel" />
<!-- Launch the add-in : task pane button -->
<Control xsi:type="Button" id="msgReadOpenPaneButton">
<Label resid="paneReadButtonLabel" />
<Supertip>
<Title resid="paneReadSuperTipTitle" />
<Description resid="paneReadSuperTipDescription" />
</Supertip>
<Icon>
<bt:Image size="16" resid="icon16" />
<bt:Image size="32" resid="icon32" />
<bt:Image size="80" resid="icon80" />
</Icon>
<Action xsi:type="ShowTaskpane">
<SourceLocation resid="messageReadTaskPaneUrl" />
</Action>
</Control>
<!-- Go to http://aka.ms/ButtonCommands to learn how to add more Controls: ExecuteFunction and Menu -->
</Group>
</OfficeTab>
</ExtensionPoint>
<!-- Go to http://aka.ms/ExtensionPointsCommands to learn how to add more Extension Points: MessageRead, AppointmentOrganizer, AppointmentAttendee -->
</DesktopFormFactor>
</Host>
</Hosts>
<Resources>
<bt:Images>
<bt:Image id="icon16" DefaultValue="~remoteAppUrl/Images/icon16.png"/>
<bt:Image id="icon32" DefaultValue="~remoteAppUrl/Images/icon32.png"/>
<bt:Image id="icon80" DefaultValue="~remoteAppUrl/Images/icon80.png"/>
<!--<bt:Image id="icon16" DefaultValue="https://localhost//Images/icon16.png"/>
<bt:Image id="icon32" DefaultValue="https://localhost//Images/icon32.png"/>
<bt:Image id="icon80" DefaultValue="https://localhost//Images/icon80.png"/>-->
</bt:Images>
<bt:Urls>
<bt:Url id="functionFile" DefaultValue="~remoteAppUrl/Functions/FunctionFile.html"/>
<bt:Url id="messageReadTaskPaneUrl" DefaultValue="~remoteAppUrl/MessageRead.html"/>
<!--<bt:Url id="functionFile" DefaultValue="https://localhost//Functions/FunctionFile.html"/>
<bt:Url id="messageReadTaskPaneUrl" DefaultValue="https://localhost//MessageRead.html"/>-->
</bt:Urls>
<bt:ShortStrings>
<bt:String id="groupLabel" DefaultValue="My Add-in Group"/>
<bt:String id="customTabLabel" DefaultValue="My Add-in Tab"/>
<bt:String id="paneReadButtonLabel" DefaultValue="Display all properties"/>
<bt:String id="paneReadSuperTipTitle" DefaultValue="Get all properties"/>
</bt:ShortStrings>
<bt:LongStrings>
<bt:String id="paneReadSuperTipDescription" DefaultValue="Opens a pane displaying all available properties. This is an example of a button that opens a task pane."/>
</bt:LongStrings>
</Resources>
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1" xsi:type="VersionOverridesV1_1">
<Requirements>
<bt:Sets DefaultMinVersion="1.5">
<bt:Set Name="Mailbox" />
</bt:Sets>
</Requirements>
<Hosts>
<Host xsi:type="MailHost">
<DesktopFormFactor>
<!-- Location of the Functions that UI-less buttons can trigger (ExecuteFunction Actions). -->
<FunctionFile resid="functionFile" />
<!-- Message Read -->
<ExtensionPoint xsi:type="MessageReadCommandSurface">
<!-- Use the default tab of the ExtensionPoint or create your own with <CustomTab id="myTab"> -->
<OfficeTab id="TabDefault">
<!-- Up to 6 Groups added per Tab -->
<Group id="msgReadGroup">
<Label resid="groupLabel" />
<!-- Launch the add-in : task pane button -->
<Control xsi:type="Button" id="msgReadOpenPaneButton">
<Label resid="paneReadButtonLabel" />
<Supertip>
<Title resid="paneReadSuperTipTitle" />
<Description resid="paneReadSuperTipDescription" />
</Supertip>
<Icon>
<bt:Image size="16" resid="icon16" />
<bt:Image size="32" resid="icon32" />
<bt:Image size="80" resid="icon80" />
</Icon>
<Action xsi:type="ShowTaskpane">
<SourceLocation resid="messageReadTaskPaneUrl" />
<SupportsPinning>true</SupportsPinning>
</Action>
</Control>
<!-- Go to http://aka.ms/ButtonCommands to learn how to add more Controls: ExecuteFunction and Menu -->
</Group>
</OfficeTab>
</ExtensionPoint>
<!-- Go to http://aka.ms/ExtensionPointsCommands to learn how to add more Extension Points: MessageRead, AppointmentOrganizer, AppointmentAttendee -->
</DesktopFormFactor>
<MobileFormFactor>
<FunctionFile resid="residUILessFunctionFileUrl" />
<ExtensionPoint xsi:type="MobileMessageReadCommandSurface">
<Group id="mobileMsgRead">
<Label resid="GroupOT" />
<Control xsi:type="MobileButton" id="TaskPaneBtn">
<Label resid="ButtonOT" />
<Icon xsi:type="bt:MobileIconList">
<bt:Image size="25" scale="1" resid="icon25" />
<bt:Image size="25" scale="2" resid="icon25" />
<bt:Image size="25" scale="3" resid="icon25" />
<bt:Image size="32" scale="1" resid="icon32" />
<bt:Image size="32" scale="2" resid="icon32" />
<bt:Image size="32" scale="3" resid="icon32" />
<bt:Image size="48" scale="1" resid="icon48" />
<bt:Image size="48" scale="2" resid="icon48" />
<bt:Image size="48" scale="3" resid="icon48" />
</Icon>
<Action xsi:type="ShowTaskpane">
<SourceLocation resid="messageReadTaskPaneUrl" />
</Action>
</Control>
</Group>
</ExtensionPoint>
</MobileFormFactor>
</Host>
</Hosts>
<Resources>
<bt:Images>
<bt:Image id="icon16" DefaultValue="~remoteAppUrl/Images/icon16.png"/>
<bt:Image id="icon25" DefaultValue="~remoteAppUrl/Images/icon25.png"/>
<bt:Image id="icon32" DefaultValue="~remoteAppUrl/Images/icon32.png"/>
<bt:Image id="icon48" DefaultValue="~remoteAppUrl/Images/icon48.png"/>
<bt:Image id="icon80" DefaultValue="~remoteAppUrl/Images/icon80.png"/>
<!--<bt:Image id="icon16" DefaultValue="https://localhost//Images/icon16.png"/>
<bt:Image id="icon32" DefaultValue="https://localhost//Images/icon32.png"/>
<bt:Image id="icon80" DefaultValue="https://localhost//Images/icon80.png"/>-->
</bt:Images>
<bt:Urls>
<bt:Url id="functionFile" DefaultValue="~remoteAppUrl/Functions/FunctionFile.html"/>
<bt:Url id="messageReadTaskPaneUrl" DefaultValue="~remoteAppUrl/MessageRead.html"/>
<!--<bt:Url id="functionFile" DefaultValue="https://localhost//Functions/FunctionFile.html"/>
<bt:Url id="messageReadTaskPaneUrl" DefaultValue="https://localhost//MessageRead.html"/>-->
</bt:Urls>
<bt:ShortStrings>
<bt:String id="GroupOT" DefaultValue="OutlookTime®"/>
<bt:String id="ButtonOT" DefaultValue="Outlook Timesheet"/>
<bt:String id="ButtonOTTipTitle" DefaultValue="Outlook Timesheet"/>
<bt:String id="groupLabel" DefaultValue="My Add-in Group"/>
<bt:String id="customTabLabel" DefaultValue="My Add-in Tab"/>
<bt:String id="paneReadButtonLabel" DefaultValue="Display all properties"/>
<bt:String id="paneReadSuperTipTitle" DefaultValue="Get all properties"/>
</bt:ShortStrings>
<bt:LongStrings>
<bt:String id="paneReadSuperTipDescription" DefaultValue="Opens a pane displaying all available properties. This is an example of a button that opens a task pane."/>
</bt:LongStrings>
</Resources>
</VersionOverrides>
</VersionOverrides>
</OfficeApp>
Please add PhoneSettings element in your manifest for that experience.

Office365 outlook add-in commands

I'm using the following manifest to add addin command in outlook 2016.
<?xml version="1.0" encoding="utf-8"?>
<OfficeApp xsi:type="MailApp"
xmlns:bt="http://schemas.microsoft.com/office/officeappbasictypes/1.0"
xmlns:mailappor="http://schemas.microsoft.com/office/mailappversionoverrides/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/office/appforoffice/1.1">
<Id></Id>
<Version>1.0.0.0</Version>
<ProviderName></ProviderName>
<DefaultLocale>en-US</DefaultLocale>
<DisplayName DefaultValue="" />
<Description DefaultValue="" />
<SupportUrl DefaultValue="" />
<Hosts>
<Host Name="Mailbox" />
</Hosts>
<Requirements>
<Sets>
<Set Name="MailBox" MinVersion="1.1" />
</Sets>
</Requirements>
<FormSettings>
<Form xsi:type="ItemRead">
<DesktopSettings>
<SourceLocation DefaultValue="~remoteAppUrl/AppRead/Home/home.html" />
<RequestedHeight>250</RequestedHeight>
</DesktopSettings>
<TabletSettings>
<SourceLocation DefaultValue="~remoteAppUrl/AppRead/Home/home.html" />
<RequestedHeight>250</RequestedHeight>
</TabletSettings>
<PhoneSettings>
<SourceLocation DefaultValue="~remoteAppUrl/AppRead/Home/home.html" />
</PhoneSettings>
</Form>
<Form xsi:type="ItemEdit">
<DesktopSettings>
<SourceLocation DefaultValue="~remoteAppUrl/AppRead/Home/home.html" />
</DesktopSettings>
<TabletSettings>
<SourceLocation DefaultValue="~remoteAppUrl/AppRead/Home/home.html" />
</TabletSettings>
<PhoneSettings>
<SourceLocation DefaultValue="~remoteAppUrl/AppRead/Home/home.html" />
</PhoneSettings>
</Form>
</FormSettings>
<Permissions>ReadWriteMailbox</Permissions>
<Rule xsi:type="RuleCollection" Mode="Or">
<Rule xsi:type="ItemIs" ItemType="Message" FormType="Read" />
<Rule xsi:type="ItemIs" ItemType="Message" FormType="ReadOrEdit" />
<Rule xsi:type="ItemIs" ItemType="Appointment" FormType="Read" />
<Rule xsi:type="ItemIs" ItemType="Appointment" FormType="ReadOrEdit" />
</Rule>
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0">
<Description resid="residDescription" />
<Requirements>
<bt:Sets DefaultMinVersion="1.3">
<bt:Set Name="Mailbox" />
</bt:Sets>
</Requirements>
<Hosts>
<Host xsi:type="MailHost">
<DesktopFormFactor>
<FunctionFile resid="residDesktopFuncUrl" />
<ExtensionPoint xsi:type="MessageComposeCommandSurface">
<OfficeTab id="TabDefault">
<Group id="msgreadTabMessage.grp1">
<Label resid="residTemplateManagement" />
<Tooltip resid="residTemplateManagementTip" />
<Control xsi:type="Button" id="msgreadTabMessage.grp1.btnView">
<Label resid="residViewTemplates" />
<Tooltip resid="residViewTemplatesTip" />
<Supertip>
<Title resid="residVewAndManageTemplates" />
<Description resid="residViewManageTemplatesSprTip" />
</Supertip>
<Icon>
<bt:Image size="16" resid="icon1_16x16" />
<bt:Image size="32" resid="icon1_32x32" />
<bt:Image size="80" resid="icon1_80x80" />
</Icon>
<Action xsi:type="ShowTaskpane">
<SourceLocation resid="residManageTemplatesUrl" />
</Action>
</Control>
</Group>
</OfficeTab>
</ExtensionPoint>
</DesktopFormFactor>
</Host>
</Hosts>
<Resources>
<bt:Images>
<bt:Image id="icon1_16x16" DefaultValue="https://contoso.com/owa/images/app_icon_small.png" >
</bt:Image>
<bt:Image id="icon1_32x32" DefaultValue="https://contoso.com/owa/images/app_icon.png" >
</bt:Image>
<bt:Image id="icon1_80x80" DefaultValue="https://contoso.com/owa/images/app_icon_large.png" >
</bt:Image>
</bt:Images>
<bt:Urls>
<bt:Url id="residDesktopFuncUrl" DefaultValue="~remoteAppUrl/AppRead/Home/home.html" >
</bt:Url>
<bt:Url id="residManageTemplatesUrl" DefaultValue="~remoteAppUrl/AppRead/Home/home.html">
</bt:Url>
<bt:Url id="residAddNewTemplateUrl" DefaultValue="~remoteAppUrl/AppRead/Home/home.html">
</bt:Url>
</bt:Urls>
<bt:ShortStrings>
<bt:String id="residTemplateManagement" DefaultValue="Do.com">
</bt:String>
<bt:String id="residViewTemplates" DefaultValue="Launch Do.com">
</bt:String>
<bt:String id="residVewAndManageTemplates" DefaultValue="View and Manage Templates">
</bt:String>
</bt:ShortStrings>
<bt:LongStrings>
<bt:String id="residDescription" DefaultValue="Use this app to automatically scan outgoing mails and insert content according to customizable mark-up. This app will not share your data with any third-party service.">
</bt:String>
<bt:String id="residTemplateManagementTip" DefaultValue="Operations for managing your template collection">
</bt:String>
<bt:String id="residViewTemplatesTip" DefaultValue="Open a taskpane to display and manage your current templates">
</bt:String>
<bt:String id="residViewManageTemplatesSprTip" DefaultValue="Open a taskpane that will display all templates saved under your profile and default templates provided by the service. From this pane you can add, remove, or change template properties.">
</bt:String>
<bt:String id="residMyTemplatesTabTip" DefaultValue="Insert content from a saved collection of prepared data, or embed tags into your mail that are automatically replaced on send!">
</bt:String>
</bt:LongStrings>
</Resources>
</VersionOverrides>
</OfficeApp>
But the button is not getting added into ribbon. If i remove the "VersionOverrides" the addin is getting shown in outlook 2016.
So, the VersionOverrides is working but somehow the button is not getting shown inside mail during read and in the list of addins in compose mode.
What am I missing?
Use this sample to grab a manifest, which you can edit to your liking: github.com/jasonjoh/command-demo
The URLs in your manifest need to be reachable. You have a lot that start with remoteAppUrl, and some that are contoso.com.

Resources