Search code examples
exchange-serverexchangewebservicesoffice-jsoffice-addins

Why is Restriction getting ignored?


I want to get the Id of a folder with the given name in the given parent folder using FindFolder EWS SOAP service through Office JavaScript API function Office.context.mailbox.makeEwsRequestAsync. The specified Restriction seems to get ignored.

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
   <soap:Header>
      <t:RequestServerVersion Version="Exchange2013" />
   </soap:Header>
   <soap:Body>
      <m:FindFolder Traversal="Shallow">
         <m:FolderShape>
            <t:BaseShape>IdOnly</t:BaseShape>
            <t:AdditionalProperties>
               <t:FieldURI FieldURI="folder:DisplayName" />
            </t:AdditionalProperties>
         </m:FolderShape>
         <t:Restriction>
            <t:IsEqualTo>
               <t:FieldURI FieldURI="folder:DisplayName" />
               <t:FieldURIOrConstant>
                  <t:Constant Value="xyz" />
               </t:FieldURIOrConstant>
            </t:IsEqualTo>
         </t:Restriction>
         <m:ParentFolderIds>
            <t:DistinguishedFolderId Id="root" />
         </m:ParentFolderIds>
      </m:FindFolder>
   </soap:Body>
</soap:Envelope>

The request is successful, but instead of receiving at most one Folder in the response, I am getting all the folders in the specified parent folder.

I am calling this code from an Outlook Web Add-In which has ReadWriteMailbox permissions.

Please also note that specified restriction in a FindItem SOAP service call also did not work for me while the request was successful.

Can anybody point me in the right direction, please?


Solution

  • Restriction is from Messages not Types so your request is incorrect (not sure why it doesn't throw an error) but if you use

         <?xml version="1.0" encoding="UTF-8"?>
        <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
        <soap:Header>
        <t:RequestServerVersion Version="Exchange2013" />
        </soap:Header>
        <soap:Body>
            <m:FindFolder Traversal="Shallow">
                <m:FolderShape>
                    <t:BaseShape>IdOnly</t:BaseShape>
                    <t:AdditionalProperties>
                    <t:FieldURI FieldURI="folder:DisplayName" />
                    </t:AdditionalProperties>
                </m:FolderShape>
                <m:Restriction>
                    <t:IsEqualTo>
                    <t:FieldURI FieldURI="folder:DisplayName" />
                    <t:FieldURIOrConstant>
                        <t:Constant Value="xyz" />
                    </t:FieldURIOrConstant>
                    </t:IsEqualTo>
                </m:Restriction>
                <m:ParentFolderIds>
                    <t:DistinguishedFolderId Id="root" />
                </m:ParentFolderIds>
            </m:FindFolder>
        </soap:Body>
        </soap:Envelope>
    

    it should work okay