Exchange 2010 - How to access the archived content using API - exchange-server

These days I am investigating whether we can access the archived content present in Exchange 2010 using Web Services or server side API.
I need to build a connector against Exchange 2010 and retrieve all the content withing Exchnage 2010. Is this possible?
I have seen the below blog, which says that there is no EWS API to access the archives.
http://blogs.msdn.com/b/pcreehan/archive/2010/03/04/how-to-programmatically-access-exchange-2010-archive-mailboxes.aspx
Instead we need to use MAPI to access these archived content.
Can someone tell me if Microsoft introduced API to access the archives recently. Or
Can someone point me to some good examples on How to use MAPI to access the archived content from a Java application(or .net)?

You CAN use EWS. In 2010 SP1 it's just a matter of specifying the ArchiveMailbox as the well-known-folder-id. Just do a FindItem under the archivemailboxroot folder ...

Related

How to get Microsoft Dynamics CRM root service address?

I was reading the documentation and stuck in a problem that I do not know how to get Dynamics resource for acquiring access_token using any API (I know my CRM root service address but I do not want to hard-code this service name in my code base). Could you please provide me with the solution to this problem?
You need not to hard code it in code base like showed in documentation sample. But normally we will keep this in web.config or app.config xml file just like any connection string & consume it.
Use connection strings in XRM tooling to connect to Common Data Service for Apps
You can use the Online Management API to get a list of all the Dynamics 365 instances in your Office 365 tenant. I believe this is what the Plugin Registration tool does when you check "Display a list of the Organization(s)".
This looks useful:
https://learn.microsoft.com/en-us/dynamics365/customer-engagement/developer/online-management-api/sample-quick-start
The C# sample demonstrates how to authenticate to the Online Management API and then retrieve all Customer Engagement instances from your Office 365 tenant.

Reading Exchange 2003 WebDAV custom properties with EWS after upgrading to Exchange 2010

I have an old Exchange 2003 server that we connected to via WebDAV. We had one app using it and in it we were setting some custom properties to appointments in the DAV namespace like DAV:OrderId, where OrderId is the name of the custom property.
Now we're going to move the mailbox to Exchange 2010 to start with and since there's no WebDAV support for it, I can't find a way how to read that custom property with Managed EWS (Exchange Web Services).
I tried getting them with searching through
DefaultExtendedPropertySet.Common
and
DefaultExtendedPropertySet.PublicStrings
collections, but of course they're not there.
Our app kind of needs those properties to work.
Anyone have any ideas?
Sorry I can't be more specific here, but I've not wanted to grab any custom properties off Exchange items. However, there is a way to get MAPI props in EWS, and there may be a way to dig out the custom props as well. It's worth a look. Start here, and let us know if you work it out!
Well I found what I was doing wrong.
By using MFCMapi on the Exchange 2003 server I was able to see that the actual full property name is "DAV:OrderId" and not just "OrderId". It's namespace is DefaultExtendedPropertySet.PublicStrings. So just use those two pieces of information when querying with EWS and you're good to go.

Where can I find which properties are available in each Exchange Web Services version?

First of all, I have pretty much no experience with developing Exchange Web Services-based applications.
I am developing an application that uses EWS Managed API to connect to an Exchange server. I need to support multiple Exchange versions, as I can't know in advance what version the server I'll be connecting to is running.
I was reading this article: https://msdn.microsoft.com/en-us/library/office/dd633705(v=exchg.80).aspx, and in the Unsuccessful Versioning part, it's written:
The EWS Managed API will throw an exception if the example is run because the IsAssociated property on the EmailMessage object is not available in Exchange 2007 SP1.
My question is: is there a list of which properties are available (or unavailable) in each Exchange version?
You have to keep in mind that the EWS ExchangeVersion (schema version) is not the same as the Service Version, on which Exchange is running.
Microsoft says:
[...]applications designed against earlier versions of EWS will work, in most cases, with later versions of EWS, and applications that target later versions of EWS will work if the same functionality was included in an earlier version.
You can find further information about schema versioning and your requested feature set per schema version here: https://msdn.microsoft.com/en-us/library/office/dn741586(v=exchg.150).aspx
There is no list of properties that i know off probably the closest would be if you look at the EWS Managed API source https://github.com/OfficeDev/ews-managed-api/tree/154dbc66ac018d861c73ce489839cd9f58a1b0cd/ComplexProperties .
There are strongly typed properties which Microsoft have made available on the EWS objects and you can also access the underlying extended properties these strongly type properties refer to (or that no strongly type property exists). Just because a property isn't strongly typed in a certain version of EWS doesn't mean its not accessible its just you need to use another method more on that https://msdn.microsoft.com/en-us/library/office/dn467898(v=exchg.150).aspx
There is a list of which EWS operations are available in which versions https://msdn.microsoft.com/en-us/library/office/bb409286(v=exchg.150).aspx which is generally the more important. (Eg FAI Folder Associated Item traversals where first introduced in 2010 hence why isAvailble isn't in 2007).

Integrating with Dynamics CRM - REST vs. XML vs. SDK

I put together some code for accessing CRM using the DLL's provided in the SDK download and tried out both the early binding approach and late binding approach.
What I'd like to do is in addition to having some custom entities that my users will access in Dynamics (through the Dynamics UI in the cloud), I also want to build some Android apps that talk to Dynamics.
My understanding is that I can talk to Dynamics from Android via REST (assuming I properly handle the authentication and getting tokens using ADAL libraries since my Dynamics instances run on the Microsoft cloud) or I can use the SDK with .NET as a middle-tier.
What's the recommended approach? Is there a best practice? When would I use the DLL's provided in the SDK and maybe wrap them in my own Web API vs. connecting to Dynamics directly via REST?
Please help this noob.
Kind of hard to say, depends on your talents and needs. Here is a great website link to get started though:
http://blogs.msdn.com/b/crminthefield/archive/2015/01/12/build-your-own-crm-mobile-app-s.aspx
Just a note on the Rest calls, you can only perform CRUD operations by default, and will need to jump through some hoops to perform the other calls.

How can you get access to the database with Microsoft Dynamics CRM 2013 Online?

We currently use Microsoft Dynamics CRM v4 on-premises. Our data warehouse guys use a direct database link to get access to the data. Is this same functionality possible if you go with the CRM 2013 Online / Cloud option?
If, like I suspect that it's not, what API's are available (if any) to achieve this (or some other method)?
I've searched a lot for this but found nothing.
Dynamics CRM Online doesn't provide direct access to the SQL database.
For interaction with the data is necessary to use the CRM Web Services, REST and SOAP endpoints.

Resources