Mithun
Mithun

Reputation: 47

Unable to add AppDomains in Outlook on send Add-in manifests

I'm relatively new to developing Outlook add-ins, and am facing a problem developing an on-send add-in.

I am trying to do an ajax call from inside my on-send add-in like this:

$.ajax({
    url: "https://XXXXXXX.dev:9999/createMeeting",
    data: JSON.stringify(result),
    contentType: 'application/json',
    type: 'POST',
    dataType: 'json',
    error: function(xhr, status, error) {
        console.log("ERRROR", error)
    }
}).done(function(data) {
    console.log("DONE ", data)
});

My manifest looks like this:

<?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" xsi:type="MailApp">

    <AppDomains>
        <AppDomain>DOMAIN1</AppDomain>
        <AppDomain>DOMAIN2</AppDomain>
    </AppDomains>

    <Id>XXXXXXXX-1a52-42a0-96bf-100d801a4ef7</Id>
    <Version>1.0</Version>
    <ProviderName>Contoso</ProviderName>
    <DefaultLocale>en-us</DefaultLocale>
    <DisplayName DefaultValue="Contoso Subject and CC Checker" />
    <Description DefaultValue="Contoso Subject and CC Checker" />

    <Requirements>
        <Sets DefaultMinVersion="1.1">
            <Set Name="Mailbox" />
        </Sets>
    </Requirements>



    <FormSettings>
        <Form xsi:type="ItemEdit">
            <DesktopSettings>
                <SourceLocation DefaultValue="https://XXXXXXXX.dev:3001/index.html" />
            </DesktopSettings>
        </Form>
    </FormSettings>

    <Permissions>ReadWriteMailbox</Permissions>

    <Rule xsi:type="RuleCollection" Mode="Or">
        <Rule xsi:type="ItemIs" ItemType="Message" FormType="Edit" />
        <Rule xsi:type="ItemIs" ItemType="Appointment" FormType="Edit" />
    </Rule>

    <VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0">
        <!-- On Send requires VersionOverridesV1_1 -->
        <VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1" xsi:type="VersionOverridesV1_1">
            <Description resid="residAppDescription" />
            <Requirements>
                <bt:Sets DefaultMinVersion="1.3">
                    <bt:Set Name="Mailbox" />
                </bt:Sets>
            </Requirements>

            <Hosts>
                <Host xsi:type="MailHost">
                    <DesktopFormFactor>
                        <!-- The functionfile and function name to call on message send.  -->
                        <!-- In this particular case the function validateSubjectAndCC will be called within the JavaScript code referenced in residUILessFunctionFileUrl. -->
                        <FunctionFile resid="residUILessFunctionFileUrl" />
                        <ExtensionPoint xsi:type="Events">
                            <Event Type="ItemSend" FunctionExecution="synchronous" FunctionName="validateSubjectAndCC" />
                        </ExtensionPoint>
                    </DesktopFormFactor>
                </Host>
            </Hosts>
            <Resources>
                <bt:Urls>
                    <!-- The JavaScript code is hosted on a secure and trusted web server. -->
                    <bt:Url id="residUILessFunctionFileUrl" DefaultValue="https://XXXXXXXX.dev:3001/index.html"></bt:Url>
                </bt:Urls>
            </Resources>
        </VersionOverrides>
    </VersionOverrides>

</OfficeApp>

But I keep getting this error when I try to add the add-in

This app can't be installed. 
The manifest file doesn't conform to the schema definition. 
The element 'OfficeApp' in namespace 'http://schemas.microsoft.com/office/appforoffice/1.1' has invalid child element 'AppDomains' in namespace 'http://schemas.microsoft.com/office/appforoffice/1.1'. 
List of possible elements expected: 'Id' in namespace 'http://schemas.microsoft.com/office/appforoffice/1.1'... 
The element 'OfficeApp' in namespace 'http://schemas.microsoft.com/office/appforoffice/1.1' has invalid child element 'AppDomains' in namespace 'http://schemas.microsoft.com/office/appforoffice/1.1'. 
List of possible elements expected: 'Id' in namespace 'http://schemas.microsoft.com/office/appforoffice/1.1'.

According to the docs, The AppDomains element must be a child of the OfficeApp element. Am I doing something wrong?? Thanks in advance!

EDIT: This occurs on Outlook OWA (web) and Windows application. Have not verified on other platforms.

Upvotes: 0

Views: 594

Answers (2)

Mithun
Mithun

Reputation: 47

Posting an example in case anyone else has the same problem.

Thanks to Outlook Add-ins Team - MSFT!

<?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" xsi:type="MailApp">

    <Id>XXXXXX-1a52-XXXXXX-96bf-XXXXXX</Id>
    <Version>1.0</Version>
    <ProviderName>Contoso</ProviderName>
    <DefaultLocale>en-us</DefaultLocale>
    <DisplayName DefaultValue="Contoso Subject and CC Checker" />
    <Description DefaultValue="Contoso Subject and CC Checker" />

    <AppDomains>
        <AppDomain>https://www.XXXXXX.dev</AppDomain>
        <AppDomain>https://XXXXXX.dev</AppDomain>
    </AppDomains>

    <Requirements>
        <Sets DefaultMinVersion="1.1">
            <Set Name="Mailbox" />
        </Sets>
    </Requirements>


    <FormSettings>
        <Form xsi:type="ItemEdit">
            <DesktopSettings>
                <SourceLocation DefaultValue="https://XXXXXX.dev:3001/index.html" />
            </DesktopSettings>
        </Form>
    </FormSettings>

    <Permissions>ReadWriteMailbox</Permissions>

    <Rule xsi:type="RuleCollection" Mode="Or">
        <Rule xsi:type="ItemIs" ItemType="Message" FormType="Edit" />
        <Rule xsi:type="ItemIs" ItemType="Appointment" FormType="Edit" />
    </Rule>

    <VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0">
        <!-- On Send requires VersionOverridesV1_1 -->
        <VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1" xsi:type="VersionOverridesV1_1">
            <Description resid="residAppDescription" />
            <Requirements>
                <bt:Sets DefaultMinVersion="1.3">
                    <bt:Set Name="Mailbox" />
                </bt:Sets>
            </Requirements>


            <Hosts>
                <Host xsi:type="MailHost">
                    <DesktopFormFactor>
                        <!-- The functionfile and function name to call on message send.  -->
                        <!-- In this particular case the function validateSubjectAndCC will be called within the JavaScript code referenced in residUILessFunctionFileUrl. -->
                        <FunctionFile resid="residUILessFunctionFileUrl" />
                        <ExtensionPoint xsi:type="Events">
                            <Event Type="ItemSend" FunctionExecution="synchronous" FunctionName="validateSubjectAndCC" />
                        </ExtensionPoint>
                    </DesktopFormFactor>
                </Host>
            </Hosts>
            <Resources>
                <bt:Urls>
                    <!-- The JavaScript code is hosted on a secure and trusted web server. -->
                    <bt:Url id="residUILessFunctionFileUrl" DefaultValue="https://XXXXXX:3001/index.html"></bt:Url>
                </bt:Urls>
            </Resources>
        </VersionOverrides>
    </VersionOverrides>

</OfficeApp>

Upvotes: 0

user7823505
user7823505

Reputation:

It seems like the problem is caused due to the order in which you are adding the elements in manifest. As manifest file follows the schema xmlns="http://schemas.microsoft.com/office/appforoffice/1.1" it expects elements in certain order mentioned here. If you follow the order of elements mentioned in sample manifest it should work fine.

Updated the links again.

Upvotes: 1

Related Questions