title: Can't use EWS UpdateItem operation from Outlook add-in
body: <p>I'm am trying to update a dictionary element in the <code>IPM.Configuration.OWA.UserOptions</code> message using an <code>UpdateItem</code> via an EWS (SOAP) request from an Outlook web add-in with <code>ReadWriteMailbox</code> permissions. However it is failing with the following error in the response: </p>
  
  <pre><code>ErrorAccessDenied: Office extension is not allowed to update this type of item.
  </code></pre>
  
  <p>The UpdateItem request I'm using is a fairly straightforward example of updating a message by it's ID and setting the value of an extended property:</p>
  
  <pre class="lang-xml prettyprint-override"><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"               xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"               xmlns:xsd="http://www.w3.org/2001/XMLSchema"               xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"               xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"&gt;
    &lt;soap:Header&gt;
      &lt;RequestServerVersion Version="Exchange2013" xmlns="http://schemas.microsoft.com/exchange/services/2006/types" soap:mustUnderstand="0" /&gt;
    &lt;/soap:Header&gt;
    &lt;soap:Body&gt;
      &lt;m:UpdateItem MessageDisposition="SaveOnly" ConflictResolution="AlwaysOverwrite"&gt;
        &lt;m:ItemChanges&gt;
          &lt;t:ItemChange&gt;
            &lt;t:ItemId Id="AAMkAGM0YTZmNjhiLTI0OWYtNGFlNC05ODAzLTNlZWQyODhmOTY2MABGAAAAAACxU7lpjO+oS5hB0UfA6muFBwDcAGmTk49MRrSCdR7rvVFPAAAAAAEBAADcAGmTk49MRrSCdR7rvVFPAAD2pXuVAAA=" ChangeKey="CQAAABYAAADcAGmTk49MRrSCdR7rvVFPAAD2uhNb" /&gt;
            &lt;t:Updates&gt;
              &lt;t:SetItemField&gt;
                &lt;t:ExtendedFieldURI PropertyTag="0x7c07" PropertyType="Binary" /&gt;
                &lt;t:Message&gt;
                  &lt;t:ExtendedProperty&gt;
                      &lt;t:ExtendedFieldURI PropertyTag="0x7c07" PropertyType="Binary" /&gt;
                      &lt;t:Value&gt;PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxVc2VyQ29uZmlndXJhdGlvbj4NCgk8SW5mbyB2ZXJzaW9uPSJFeGNoYW5nZS4xMiIgLz4NCgk8RGF0YT4NCgkJPGUgaz0iMTgtSXNGb2N1c2VkSW5ib3hPbkxhc3RVcGRhdGVUaW1lIiB2PSIxOC0wMS8wMS8wMDAxIDAwOjAwOjAwIiAvPg0KCQk8ZSBrPSIxOC1hdXRvYWRkc2lnbmF0dXJlIiB2PSIzLVRydWUiIC8+DQoJCTxlIGs9IjE4LVVzZXJPcHRpb25zTWlncmF0aW9uU3RhdGUiIHY9IjktNSIgLz4NCgkJPGUgaz0iMTgtdGhlbWVTdG9yYWdlSWQiIHY9IjE4LSIgLz4NCgkJPGUgaz0iMTgtYXV0b2FkZHNpZ25hdHVyZW9ucmVwbHkiIHY9IjMtVHJ1ZSIgLz4NCgkJPGUgaz0iMTgtdGltZXpvbmUiIHY9IjE4LUNlbnRyYWwgU3RhbmRhcmQgVGltZSIgLz4NCgkJPGUgaz0iMTgtc2lnbmF0dXJldGV4dCIgdj0iMTgtJiN4RDsmI3hBOy0tJiN4RDsmI3hBO0l6enogYW0gSmFuaWNrJiN4RDsmI3hBOyYjeEQ7JiN4QTsiIC8+DQoJCTxlIGs9IjE4LUZhdm9yaXRlRm9sZGVycyIgdj0iMS0xOC0zLTEyMC1BQU1rQUdNMFlUWm1OamhpTFRJME9XWXROR0ZsTkMwNU9EQXpMVE5sWldReU9EaG1PVFkyTUFBdUFBQUFBQUN4VTdscGpPK29TNWhCMFVmQTZtdUZBUURjQUdtVGs0OU1SclNDZFI3cnZWRlBBQUFBQUFFTUFBQT0tMTIwLUFBTWtBR00wWVRabU5qaGlMVEkwT1dZdE5HRmxOQzA1T0RBekxUTmxaV1F5T0RobU9UWTJNQUF1QUFBQUFBQ3hVN2xwak8rb1M1aEIwVWZBNm11RkFRRGNBR21UazQ5TVJyU0NkUjdydlZGUEFBQUFBQUVKQUFBPS0xMjAtQUFNa0FHTTBZVFptTmpoaUxUSTBPV1l0TkdGbE5DMDVPREF6TFRObFpXUXlPRGhtT1RZMk1BQXVBQUFBQUFDeFU3bHBqTytvUzVoQjBVZkE2bXVGQVFEY0FHbVRrNDlNUnJTQ2RSN3J2VkZQQUFBQUFBRVBBQUE9IiAvPg0KCQk8ZSBrPSIxOC1Jc09wdGltaXplZEZvckFjY2Vzc2liaWxpdHkiIHY9IjMtRmFsc2UiIC8+DQoJCTxlIGs9IjE4LUlzRm9jdXNlZEluYm94RW5hYmxlZCIgdj0iMy1UcnVlIiAvPg0KCQk8ZSBrPSIxOC1OZXdFbmFibGVkUG9udHMiIHY9IjktMjE0NzQwMTcyNyIgLz4NCgkJPGUgaz0iMTgtc2lnbmF0dXJlaHRtbCIgdj0iMTgtJmx0O2h0bWwmZ3Q7JiN4RDsmI3hBOyZsdDtoZWFkJmd0OyYjeEQ7JiN4QTsmbHQ7L2hlYWQmZ3Q7JiN4RDsmI3hBOyZsdDtib2R5Jmd0OyYjeEQ7JiN4QTsmbHQ7cCZndDsmYW1wO25ic3A7Jmx0Oy9wJmd0OyYjeEQ7JiN4QTsmbHQ7cCZndDstLSZsdDsvcCZndDsmI3hEOyYjeEE7Jmx0O3AmZ3Q7SXp6eiBhbSBKYW5pY2smbHQ7L3AmZ3Q7JiN4RDsmI3hBOyZsdDtwJmd0OyZhbXA7bmJzcDsmbHQ7L3AmZ3Q7JiN4RDsmI3hBOyZsdDsvYm9keSZndDsmI3hEOyYjeEE7Jmx0Oy9odG1sJmd0OyYjeEQ7JiN4QTsiIC8+DQoJPC9EYXRhPg0KPC9Vc2VyQ29uZmlndXJhdGlvbj4=&lt;/t:Value&gt;
                  &lt;/t:ExtendedProperty&gt;                
                &lt;/t:Message&gt;
              &lt;/t:SetItemField&gt;
            &lt;/t:Updates&gt;
          &lt;/t:ItemChange&gt;
        &lt;/m:ItemChanges&gt;
      &lt;/m:UpdateItem&gt;
    &lt;/soap:Body&gt;
  &lt;/soap:Envelope&gt;
  </code></pre>
  
  <p>The 0x7c07 property I'm updating in the UserOptions message contains a base64 encoded value of various signature related dictionary properties that I've modified:</p>
  
  <pre class="lang-xml prettyprint-override"><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;UserConfiguration&gt;
      &lt;Info version="Exchange.12" /&gt;
      &lt;Data&gt;
          &lt;e k="18-IsFocusedInboxOnLastUpdateTime" v="18-01/01/0001 00:00:00" /&gt;
          &lt;e k="18-autoaddsignature" v="3-True" /&gt;
          &lt;e k="18-UserOptionsMigrationState" v="9-5" /&gt;
          &lt;e k="18-themeStorageId" v="18-" /&gt;
          &lt;e k="18-autoaddsignatureonreply" v="3-True" /&gt;
          &lt;e k="18-timezone" v="18-Central Standard Time" /&gt;
          &lt;e k="18-signaturetext" v="18-&amp;#xD;&amp;#xA;--&amp;#xD;&amp;#xA;Izzz am Janick&amp;#xD;&amp;#xA;&amp;#xD;&amp;#xA;" /&gt;
          &lt;e k="18-FavoriteFolders" v="1-18-3-120-AAMkAGM0YTZmNjhiLTI0OWYtNGFlNC05ODAzLTNlZWQyODhmOTY2MAAuAAAAAACxU7lpjO+oS5hB0UfA6muFAQDcAGmTk49MRrSCdR7rvVFPAAAAAAEMAAA=-120-AAMkAGM0YTZmNjhiLTI0OWYtNGFlNC05ODAzLTNlZWQyODhmOTY2MAAuAAAAAACxU7lpjO+oS5hB0UfA6muFAQDcAGmTk49MRrSCdR7rvVFPAAAAAAEJAAA=-120-AAMkAGM0YTZmNjhiLTI0OWYtNGFlNC05ODAzLTNlZWQyODhmOTY2MAAuAAAAAACxU7lpjO+oS5hB0UfA6muFAQDcAGmTk49MRrSCdR7rvVFPAAAAAAEPAAA=" /&gt;
          &lt;e k="18-IsOptimizedForAccessibility" v="3-False" /&gt;
          &lt;e k="18-IsFocusedInboxEnabled" v="3-True" /&gt;
          &lt;e k="18-NewEnabledPonts" v="9-2147401727" /&gt;
          &lt;e k="18-signaturehtml" v="18-&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;--&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;John Doe&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;;" /&gt;
      &lt;/Data&gt;
  &lt;/UserConfiguration&gt;
  </code></pre>
  
  <p>I can't find any documentation that states what is allowed or not allowed with <code>UpdateItem</code> operations (<a href="https://docs.microsoft.com/en-us/outlook/add-ins/understanding-outlook-add-in-permissions" rel="nofollow noreferrer">the list should be here</a>). Updating the Outlook Online signature is also not currently possible with Graph or the Mail API.  If what I'm trying to do ultimately cannot work then I just wasted 40+ hours of effort and will lose a client. :-|</p>
  
  <p>Does anybody have any clever workarounds or know of a way to enable this operation?  Note that using the EWS Managed API in server-side code is not currently an option for this solution.</p>