I'm designing a winforms application that will run on users machines at my company. One of its features will be to pull up upcoming appointments from the user's outlook account. I'm wondering what the primary purposes for both office outlook interop and exchange web services are so that I can choose the best one for this situation.
I would use Office interop primarily from within Outlook - for example, an Outlook Addin. In all other cases I would use EWS, primarily, because it removes the dependency on Outlook. If you use Outlook interop you need to care about the user having multiple outlook profiles and only working in the correct ones. You can use notifications (push, pull or streaming) to get notifications about changes in the users calendar so you don't have to constantly poll for changes.
You can pull appointments quite easily using the EWS Managed API:
EWS Managed API - Download: http://www.microsoft.com/download/en/details.aspx?id=13480
EWS Managed API - SDK: http://msdn.microsoft.com/en-us/library/dd633710(v=exchg.80).aspx
Related
I have implemented an application which accesses calendars in an Office 356 E3 tenant. I've used the client_credentials flow and obtained Admin Consent. So far everything seems to work as expected.
Now I have a customer how wants to use my application with an Exchange 2016 on-premise setup. Is there a way to use the same application in this setup as well? Or do I have to implement a new application using EWS?
The graph API is not available on on-prem Exchange, so yes, you have to replace the graph API code with EWS code.
Depending on your use case, it is probably possible to abstract it such that your application can use either one or the other.
We had a similar issue.
You can change from Office365 Api to the MsGraph Api which supports many of the same features as the Office365 Api does. Your on premise customer needs to put his Exchange servers into hybrit mode for this. MS explained the necessary steps here.
The only problem we had is that you cant subscribe onto on premise calendars.
Here is the MsGraph Api doc
https://learn.microsoft.com/en-us/graph/api/overview?view=graph-rest-1.0
You can also consider switching from Office365 to MsGraph entirely as this should also work for you Office365 customers. As I understand it MS is gonna expand the MsGraph Api in the future giving us a single point of contact for interaction with the Office suite and authentication.
#Marc LaFleur pls correct me if I'm wrong on this
My question is specific to Exchange Online not Exchange server. I am not able to find any document online stating if Contacts & Calendars can be moved to In-Place Archive mailbox on Exchange Online.
It would be great if you can help me with the steps, if this is possible.
Also, is there a way to access them through Office365 APIs.
Additionally, it would be great to know if this can be done in Hybrid setups, where the primary mailbox is on-premise and archive mailbox is on Exchange Online.
My question is specific to Exchange Online not Exchange server. I am not able to find any document online stating if Contacts & Calendars can be moved to In-Place Archive mailbox
From a Technical point of view you can move any item you like into an In-Place archive, the Archive policies and the Managed Folder Agent however won't move them for reason that Contact are ageless and Calendar appointment if they are recurring shouldn't need archiving. EWS has an ArchiveItem operation https://msdn.microsoft.com/en-us/library/office/jj219964(v=exchg.150).aspx which make the move between store pretty easy. But you should be able to do the same thing with a Move in the REST api.
AFAIK None of the API methods apart from MAPI will work in Hybrid you'll need to rely on a export/import with the other API's
I wanted to know if and how CRM For Outlook application (for the Outlook client) carries out synchronization of Appointments, Tasks and Contacts with CRM Online. I am also not sure if POP3/SMTP supports Appointments, Contacts or Tasks of any kind.
I Googled for this information but was not able to find desired information.
Kindly advised.
There are a number of ways to do this and there is documentation available, I suggest looking at the following:
Integrate your email system with Microsoft Dynamics CRM.
To store email and other messaging records in CRM, you need to
synchronize your email system with CRM. There are three ways to do
this:
Server-side synchronization
Microsoft Dynamics CRM for Outlook
Microsoft Dynamics CRM Email Router
You can also use server-side synchronization together with Dynamics
CRM for Outlook.
Outlook Synchronization in Microsoft Dynamics CRM
Overview of CRM for Outlook synchronization
Microsoft Dynamics CRM manages replication of information between the
central CRM database and the local data store on a computer running
Microsoft Dynamics CRM for Microsoft Outlook by using Outlook
synchronization and server-side synchronization.
Outlook synchronization
CRM for Outlook (also known as “the Outlook client”) supports Outlook
synchronization, which is synchronizing CRM contacts and CRM
activities to Outlook folders. Outlook synchronization enables Outlook
users to view CRM information, including contacts, tasks, phone calls,
letters, faxes, appointments, and email, within the Outlook interface.
Server-side synchronization
Starting with Dynamics CRM 2013, server-side synchronization is
available, which is used to integrate CRM with Exchange and POP3 or
SMTP-based email servers. This has benefits compared to using the
email router because it’s built in to CRM and doesn’t require a
separate component. It also has benefits compared to Outlook
synchronization by eliminating the load on clients.
We have started to use Microsoft CRM for all our client information however we would like to have the most up to date information from CRM for internal tools.
The way we could do this is by running a tool that looks at the data every x minutes and keeps all updated records in the database.
Could someone give a explination on how we could use webhooks for this and if it actually is possible. This would be a lot more efficient to be notified when there is a change rather than checking all the time.
I have researched and found a few projects but they were all in beta - invite only or not available.
In Dynamics CRM Webhooks are not available as intended in the normal definition.
But you can use plugins to implement your notifications. From MSDN:
https://msdn.microsoft.com/en-us/library/gg328490.aspx
Another way to think about plug-ins is that they are handlers for
events fired by Microsoft Dynamics CRM. You can subscribe, or
register, a plug-in to a known set of events to have your code run
when the event occurs.
I've a scenario wherein I need to send/assign tasks from my browser UI to the concerned. This should happen with Outlook being offline (or for that matter outlook not even configured on the terminal) so that the user can be accessing a workflow from any terminal (using his/her AD credentials) and if required should have the ability to send a task to the concerned without having to return to his own terminal to be able to do so.
I envision that the user's credentials should be used to look up the AD for his/her email ID and send a task using the same from anywhere in the intranet.
Using Outlook object library I have been able to assign/send tasks, but with the Outlook being fired up and not otherwise.
Redemption does the sync of contacts while Outlook is offline but not tasks.
Kindly help if anybody has had a chance to do something similar.
Thanks in advance.
Redemption could help you here as you can run it it on a web server which will connect to you exchange env via mapi for you.
There are other ways dependant on you version of exchange EWS or Exchange DAV.
EWS comes with a managed API now a days to take some of the sting out of it.
There are similar 3rd party libraries for Exchange DAV as well.
They all contain contact and directory lookups.