Any API to read Exchange Fast Transfer Stream - exchangewebservices

Our solution needs to understand Exchange Fast Transfer Stream like the m:data at below for calendar:
<m:ExportItemsResponseMessage ResponseClass="Success">
<m:ResponseCode>NoError</m:ResponseCode>
<m:ItemId Id="AAMkAGYzZjZmRiUsidkC+NAAAAY89GAAA=" ChangeKey="FwAAAA=="/>
<m:Data>
AQAAAAgAAAAAAAAALgBlAHgAdABlAHMAdAAuAG0AaQBjAHIAbwBzAG8AZgB0AC4A
YwBvAG0AAABTAE0AVABQAAAAVQBzAGUAcgAyAEAAYQB1AGoAaQBuAGcALQBkAG8AbQAuAGUA
eAB0AGUAcwB0AC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAAALCE/jlMAAAAVQBzAGUA
cgAyAEAAYQB1AGoAaQBuAGcALQBkAG8AbQAuAGUAeAB0AGUAcwB0AC4AbQBpAGMAcgBvAHMA
bwBmAHQALgBjAG8AbQAAAAMAADkAAAAAAwD+DwYAAAADAARAAwACQAMADkA=
</m:Data>
</m:ExportItemsResponseMessage>
I found out that MS protocol document around this [MS-OXWSBTRF]: Bulk Transfer Web Service Protocol, however it doesn't talk about how to parse the m:Data element. I did base64 decoding on it and it would become partially readable although not all the information though. I also found this link Exchange 2010 EWS ExportItems Data field where a parser was written by Glen Scales although it is not available at CodePlex any more. I also found out outlook redemption could import this into outlook although I didn't see if it could parse it and make it available for our program to use. Plus it would require outlook installation.
Any insights would be highly appreciated.
[Update on Aug 27]. Our goal is to be able to move calendars from other platforms such as google and yahoo into Exchange Online. When we created the appointment for both organizer and attendee via EWS, we are facing some challenges in reestablish the relationship and we are seeing this issue when organizer sends update to attendee.
Basically attendee would see the message "The meeting request was updated after this message was sent. You should open a later update or open the item on the calendar" for both update and cancel message. Any insights here for what MAPI properties to fix would be greatly appreciated as well.
However we are able to move calendars successful with Exchange Web Services export and import via FTS and that is why we are looking for how to generate FTS stream via Outlook Redemption and then use EWS to import those FTS data into Exchange Online side.
However if outlook redemption could allow us to import ics file directly into end user mailbox, that would be even better where we found out that service account needs full access to all mailboxes. From my manual testing, manual importing ics files into both organizer and attendee mailbox are able to re-establish the relationship. Again, it would be really appreciated for any suggestions for above "The meeting request was updated after this message was sent. You should open a later update or open the item on the calendar".

The format is indeed undocumented. It is essentially a list of properties separated by page breaks (to be able to send/receive it in chunks while parsing).
Redemption (I am its author) supports that format through RDOMail.SaveAs / Import; the format type is olFTS.
You can also see the FST data in OutlookSpy (I am also its author) - click GetItem button on the EWS section of the OutlookSpy ribbon, go to the ExportItems tab. To import an FTS stream, click GetFolder | UploadItems.

Related

In the Outlook Add-In API for javascript in a Compose Form, is it possible to require a Read Receipt on a message before it's sent?

I'm trying to find out if it's possible from an Outlook Add-In for a Compose Form to add a Read Receipt to a message before it's sent.
My company has a form library built in an older version of outlook and an older version of exchange. The form has quite a few fields that are easy to replicate with an outlook add-in. The main requirement that I haven't been able to find any documentation on is that each time the form is used to send a message, it automatically checks the Options/Tracking/Send Read Receipt checkbox before the form creates the email body and sends the message.
I've read through the documentation (https://learn.microsoft.com/en-us/office/dev/add-ins/outlook/), but I haven't been able to find anything that mentions Tracking or Read Receipts. Is that something I'd have to call in Exchange Web Services or access through the REST API? All of the messages sent with this add-in will be going to recipients inside my company.
Currently the Read Receipt feature is not a part of the Outlook Add-Ins framework. We track Outlook Add-In feature requests on ourĀ user-voice page. Please add your request there. Feature requests on user-voice are considered when we go through our planning process. Alternatively, you may be able to use the Outlook REST API to achieve this.

Can I / Should I integrate DocuSign with MS Access

I need to implement electronic signatures from an Access database without using a signature pad. I do not have an actual document that needs to be signed - just a field on an Access form. We currently use a Topaz signature pad but are needing to get away from that.
Thanks in advance,
Karen
Yes, you can. There are several .net api to access DocuSign.
You can use them to create the DocuSign envelope. You will also need to implement something to retrieve the signed envelopes. There are two options:
a cron job that calls DocuSign to get all the updated envelopes since the last call
a REST service that DocuSign will call to inform your application of every event that happens on your envelopes.
If you want to use the second option, your REST service should be open to Internet (you can find the subnet to open in the DocuSign documentation).
DocuSign is used to sign documents, not data. Since your database is holding a form's worth of data, I suggest that you:
Create a template in DocuSign that represents the Access form
When you make the Envelopes: Create call to DocuSign, populate the template's data fields with the data from the Access db.
The result will be a signing request that looks like the form in your database.
Once the document is signed in DocuSign, you can record the envelope ID in Access. It can then be used to view the signed document. Or you can download the signed documents and store them locally.
Ask further questions here if you have any difficulties.

Implementing IoT PowerBI table schema

I'm currently implementing an IoT solution that has a bunch of sensors sending information in JSON format through a gateway.
I was reading about doing this on azure but couldn't quite figure out how the JSON scheme and the Event Hubs work to display the info on PowerBI?
Can I create a schema and upload it to PowerBI then connect it to my device?
there's multiple sides to this. To start with, the IoT ingestion in Azure is done tru Event Hubs as you've mentioned. If your gateway is able to do a RESTful call to the Event Hubs entry point, Event Hubs will get this data and store it temporarily for the retention period specified. Then stream analytics, will consume the data from Event Hubs and will enable you to do further processing and divert the data to different outputs. In your case, you can set one of the outputs to be a PowerBI dashboard which you can authorize with an organizational account (more on that later) and the output will automatically tied to PowerBI. The data schema part is interesting, the JSON itself defines the data table schema to be used on PowerBI side and will propagate from EventHubs to Stream Analytics to PowerBI with the first JSON package sent. Once the schema is there it is fixed and the rest of the data being streamed in should be in the same format.
If you don't have an organizational account at hand to use with PowerBI, you can register your domain under Azure Active Directory and use that account since it is considered within your org.
There may be a way of altering the schema afterwards using PowerBI rest api. Kindly find the links below..Haven't tried it myself tho.
https://msdn.microsoft.com/en-us/library/mt203557.aspx
Stream analytics with powerbi
Hope this helps, let me know if you need further info.
One way to achieve this is to send your data to Azure Events Hub, read it and send it to PowerBI with Stream Analytics. Listing all the steps here would be too long. I suggest that you take a look at a series of blog posts I wrote describing how I built a demo similar to what you try to achieve. That should give you enough info to get you started.
http://guyb.ca/IoTAzureDemo

Add analytics to a desktop application

I have developed a desktop application using HTML 5 and node web-kit .
I would like to track parts of the app , such as how long its used , clicks ect.
I would like the analytics system to work both on and offline (storing data until its on-line).
Is there anything that I could use to do this?
The Google measurement protocol allows you to track everything that can send an http request. You need to generate a unqiue client id to group pageviews into session (the part is usually done by the Javascript tracker which does not help you) and can then choose between various interaction types and their related data to be added as parameters in a request to the Google Analytics server.
As far as offline capabilites, there is a "queue time" parameter that allows you to send delayed calls to GA. However as per documentation that delay is 4 hours at most (intended for Smartphones and Tablets that temporarily lose connection rather than to work permanently offline).
In the end it depends what data you need - you might just as well send calls to your own server and log them in a csv file and feed that to Klipfolio or some other dashboard solution (or even use Excel if you expect a low data volume).

Exchange Web Services: Access proposed date and time through Appointment

When a meeting invitee proposes a new meeting time, in outlook this information can be found in the "Scheduling Assistant" (outlook 2007):
Is there any way to access this information programmatically through the EWS API? The RequiredAttendees and OptionalAttendees collections of the Appointment allow me to find out whether and when the attendee has responded, but how can one access the actual proposed new time?
I haven't tried this before but here is how I think you'd go about getting this information. The EWS service and the EWS Managed API don't have this implemented as first class functionality. To be more precise, the propose new time functionality is currently available as first class functionality with Exchange Online. For Exchange Online, you will need to inspect the meeting response message XML for the ProposedStartTime and ProposedEndTime elements. So if you are using Exchange 2007, 2010, and currently 2013, you will need to do what I state in the next paragraph. You should be able to access this information by using extended properties.
An attendee that proposes a new meeting time will always result in the organizer getting a meeting message. When the organizer performs a GetItem request for the meeting message sent by an attendee, the request should request the PR_RECIPIENT_PROPOSED property. A value of true indicates that the recipient proposed a new time. This should trigger a request to get the PR_RECIPIENT_PROPOSEDENDTIME and PR_RECIPIENT_PROPOSEDSTARTTIME property values.
Here is an example of getting this type of property with the EWS Managed API;
Here is a quick property definition:
ExtendedPropertyDefinition PidTagRecipientProposed = new ExtendedPropertyDefinition(0x5FE1, MapiPropertyType.Boolean);
You cannot get this information using the EWS from the Appointment, I'm afraid. It's part of the PR_MESSAGE_RECIPIENTS property, which is a MAPI table (or Object, if you will), and EWS does not support retrieving this. Technically, you could probably get it if you want to build out the ExportItem functionality (a supported function serverside that is not built into the EWS Managed API) and pick through a massive binary stream to find the information, but that's hardly feasible. I haven't tried it myself. The other alternative would be to use something other than EWS to access the data.