Dynamics CRM Developers: Build Your Own Mobile Apps for Windows, iOS, and Android


Mobile first, cloud first

We all understand the importance of mobile and cloud strategy and that is why the Microsoft Dynamics CRM development team have released native mobile applications to accommodate all the major mobile platforms today – Windows Store, Windows Phone, Android, iOS, Office Outlook on Windows, and we have CRM Mobile Express for other platforms. However, it is also true that how each customer CRM usage varies depending on industry, work style, and other factors. Being a user of mobile apps ourselves, we know that many successful mobile apps enable specific tasks centered around the user and what they are looking to accomplish. 

For some organizations a successful app may be a simple approval app allowing a user to easily view, annotate, approve, or reject records and for others it could be a more integrated solution using location and other sensors to create and augment data in the field – or a company may want both experiences based on the role of the user.  While the existing Dynamics CRM mobile apps usually work very well for many general CRM purposes your company may need more – for that 3rd parties have CRM mobile applications meeting specific demands but what if you want need to build your own applications to meet specific requirements like the ones mentioned above?  If you’ve asked yourself this question or are curious as to how you can enable new ways to engage your Dynamics CRM users then please read on!  Below we’ll outline some challenges and decision points and we will also show you a new way to help developers build mobile apps for Dynamics CRM.

Development Methods

This is the most exciting time for developers as there are so many choices out there how to develop an application. C# or any .NET Framework languages with Visual Studio? Sure! (and that’s my favorite). HTML5/CSS for Windows Universal App? Of course. Xcode and Objective-C for iOS? or Java and Android Studio for Android OS? Why not! When you see cross platform development, you still have many choices like Xamarin, Cordova, etc – and new ones are coming out all the times it seems. 

Dynamics CRM: SOAP vs. REST endpoint

In addition to selecting programming languages, IDEs and platforms, there are several technology choices to build an application targeting Microsoft Dynamics CRM. A fully featured SOAP (or also referred to as web) endpoint or the lightweight and easy to develop REST endpoint. Most who have developed in Dynamics CRM understand the REST endpoint has some limitations in which only supports CRUD operations though we do have ways to enable Execute actions with some clever configuration and programming (we can cover that in a future blog post). While the REST endpoing covers most of the common operations, you still need Execute method for several operations like “Send” emails, “Book” appointments or “SetState records. Even “Assign” records to other users.

Direct service connection vs. host middleware service

When you build a mobile application, you can write a code to directly consume Microsoft Dynamics CRM Web services, or you can let middleware services to consume CRM web services and your mobile application consumes the middleware services. Microsoft Azure Mobile Service is one of the popular choice, as you can use C# to write business logic, then use Authentication or offline capability which Azure Mobile Service offers without writing your own code.

 

A Solution: Introducing Mobile Development Helper Code for Dynamics CRM

I hear developers won’t consume SOAP endpoint directly, because there was no library for such purpose and constructing and parsing SOAP request/response is not the most enjoyable task for developers. We have good news for developers, the Dynamics CRM SDK content publishing team released a library called “Mobile Development Helper Code for Dynamics CRM”, which you can directly use in your mobile solution to consume SOAP endpoint just like normal Dynamics CRM SDK. You can also use “CRM Service Utility for Mobile Development” for early bound development. Please refer to the library page for overview. 

 

How to use the library

What we will cover in this post:

The easiest way to try the library is to use it in existing SDK sample app, the sample already has a basic setup for obtaining an AccessToken. However, I will explain step by step here how to use the library for you. Following are prerequisites.

– Visual Studio 2013 installed on Windows 8.1+
– Microsoft Dynamics CRM Online instance. (You are able to use trial version)
– Windows Azure Subscription (You are able to use trial version)
– Download the library from here, and extract it.

Create a Visual Studio solution

1. Open Visual Studio 2013.
2. Click FILE | New | Project
image
3. Select Visual C# | Windows Apps | Blank App
*In this example, I use Windows Store app template, but you can use Windows Phone or Universal template if you need to.
4. Give any name. I name it “Sample CRM Mobile App”

Add ADAL NuGet Packages

The easiest way to obtain AccessToken for OAuth2 from Azure AD is to use ADAL (Azure AD Authentication Library). If you have preferred way to obtain AccessToken, you can use your own way – in fact we’d love to hear how you’re doing this today.

1. In Visual Studio, Right click the project folder in Solution Explorer pane, and click  the Manage NuGet Package menu item. 
2. In the manage package window, Select Online from left pane, and type ADAL in the search box and press Search.
3. Selected Active Directory Authentication Library from the results and click Install.
image
4. Complete the installation, then click Close.

Add the Mobile Helper Library

1. Right click the solution folder in the Solution Explorer pane, and click Add | Existing Project.
2. Browser to the mobile helper folder which can be downloaded and extracted from here: https://code.msdn.microsoft.com/Mobile-Development-Helper-3213e2e6.
3. Select Microsoft.Crm.Sdk.Mobile.csproj file, and click Open.
4. In the Solution Explorer pane, under your new project (not the mobile helper), right click References | Add Reference.
5. In the add reference dialog, select Solution | Project | and select Microsoft.Crm.Sdk.Mobile and click OK.
image

Add Json.NET NuGet Packages

Both your project and mobile helper project requires Json.NET.

1. Right click solution folder in the Solution Explorer pane, and click Manage NuGet Packages for Solution menu. 
2. Select Online from left pane, and type Json.net for search box and search.
3. Selected Json.NET from the result and click Install.
image
4. Complete the installation by check all projects.
5. Click Close when install completes.

Add code to acquire AccessToken from Azure AD

1. Open MainPage.xam.cs file.
2. Replace inside MainPage class with following code.

const string aadInstance = “https://login.windows.net/{0}”;
const string tenant = “[Enter tenant name, e.g. contoso.onmicrosoft.com]”;
const string clientId = “[Enter client ID as obtained from Azure Portal, e.g. 82692da5-a86f-44c9-9d53-2f88d52b478b]”;

static string authority = String.Format(CultureInfo.InvariantCulture, aadInstance, tenant);
private AuthenticationContext authContext = null;
private Uri redirectURI = WebAuthenticationBroker.GetCurrentApplicationCallbackUri();
private string ResourceId = “[Your CRM Online Org Address. e.g. https://contoso.crm.dynamics.com]”;

public MainPage()
{
    this.InitializeComponent();
    GetAccessToken();
}

private async void GetAccessToken()
{
    authContext = new AuthenticationContext(authority);
    // Use ADAL to get an access token.
    AuthenticationResult result = await authContext.AcquireTokenAsync(ResourceId, clientId, redirectURI);

    if (result.Status == AuthenticationStatus.Success)
    {
        var AccessToken = result.AccessToken;
    }
}

3. Update tenant and ResouceId to match to your environment.

Register your app to Azure AD

You need to register your application to Azure AD.

1. First of all, obtain RedirectUri value which you use to register your application, Run the existing application by setting breakpoint after getting redirectURI.
image
2. Note the redirectURI value and stop debugging.
3. Go to Microsoft Azure portal page. (http://manage.windowsazure.com)
4. Select Active Directory on the left pane.
image
5. Click APPLICATIONS menu on the top, then click ADD button in the bottom.
6. Select “Add an application my organization is developing.
7. Enter any name and select NATIVE CLIENT APPLICATION.
8. Enter RedirectUri you just obtained.
9. Once registration completed, click CONFIGURE menu.
10. Note a CLIENT ID, which you will update the code by it.
11. Navigate to bottom to setup impersonation.
12. Select “Dynamics CRM” from Select application dropdown, and select “Access CRM Online as organization users.”
13. Click Save button.
14. Go back to Visual Studio 2013, then update clientid const string.

Run the app to obtain AccessToken

1. Set breakpoint at line 51 where you obtain AccessToken from result. Run the app. You will see Sign In page soon.
2. Enter username and password by which you can connect to CRM Online.
3. You will see consent screen only if you register your app in Azure Ad for separate instance. In such case, please OK to accept it.
4. Breakpoint will be hit and you can confirm AccessToken is retrieved successfully.
image

Update the code

Finally use mobile helper library to issue SOAP request.

1. Add following as main class member.
private OrganizationDataWebServiceProxy proxy;
2. To resolve the above code, add following at using section.
using Microsoft.Xrm.Sdk.Samples;
3. Add following code at constructor to initialize proxy.
image
4. Assign proxy.AccessToken after obtaining an AccessToken, then call ExecuteWhoAmI method, which you implement next.
image
5. Add ExecuteWhoAmI method as below.
image
6. Add necessary using statement to resolve names.

Try it out

1. Set break point right after Execute method above.
2. Run the application.
3. When the application breaks into break point, confirm the returned value.
image

What’s Next?

I hope you get the idea how to use the library to consume SOAP endpoint. The next step is to use CrmSvcUtil.exe to generate file for Early Bound development. I will explain how to use the tool next time.

Ken
Premier Mission Critical/Premier Field Engineer 
Microsoft Japan

Comments (44)

  1. Tobias says:

    Which ADAL library did you exactly use for this sample? AuthenticationResult is missing the status and the method AcquireTokenAsync(ResourceId, clientId, redirectURI) seems to be wrong from its parameters.

    Best Regards

  2. Tobias,

    Thanks for your comment. I am using ADAL 2.x for Windwos Store. If you are using it against Windows Phone, then method parameters are different. In that case, please refer to sample app below.

    code.msdn.microsoft.com/Activity-Tracker-Plus-f62d80a5

    Ken

  3. İsmail Tutumluer says:

    Hi all

    have anybody else try to authenticate with IFD(ADFS)

  4. Hi Ismail,

    Yes I did, with Windows Server 2012 R2 AD FS, which suports OAuth. Any issue?

    Ken

  5. Tobias says:

    Hello Kenichiro,

    Thanks for your great post. I got the authentication running within my Project.

    Could you may give an update for the generation of early bound classes in a mobile Project?

    I used the following statement in the command line:

    CrmSvcUtil.exe /url:https://mycrm…com/XRMServices/2011/Organization.svc   /out:GeneratedCode.cs /username:"me@blabla.onmicrosoft.com" /password:"mine" /codeCustomization:"Microsoft.Crm.Sdk.Samples.CodeCustomizationService, CrmSvcMobileUtil"  /namespace:Xrm

    However there are still some references to the Microsoft Dynamics SDK which is as far as I know not supported within Windows RT.

    Best Regards,

    Tobias

  6. Hi Tobias,

    Thanks for your comment. This is a sneak peak.

    1. Download a tool from code.msdn.microsoft.com/CRM-Service-Utility-for-4ca0c93b.

    2. Extract the zip.

    3. Open CrmSvcMobileUtil.sln In the extracted foloder.

    4. Add latest CrmSvcUtil.exe and Microsoft.Xrm.Sdk.dll as Reference to the project.

    5. Open FilteringService.cs and modify GenerateEntity method. Specify entities you want to use, or simply return true to generate all.

    6. Build the project.

    7. Go to folder where dll is generated.

    8. Execute command below. >CrmSvcUtil.exe /codecustomization:"Microsoft.Crm.Sdk.Samples.CodeCustomizationService,CrmSvcMobileUtil" /codewriterfilter:"Microsoft.Crm.Sdk.Samples.FilteringService,CrmSvcMobileUtil" /url:<your org endpoing> /username:<user> /password:<password> /out:XrmData.cs /namespace:<ns>

    Hope this helps.

    Ken

  7. Tobias says:

    Hello Kenichiro,

    Thank you so much! That was exactly what I needed to continue my project.

    Looking forward to hear more from your blogposts.

    Best Regards,

    Tobias

  8. Sid says:

    Hello Kenichiro,

    do you have experience with CRM and Phonegap/cordova?

    I need a application which authenticate me with CRM and gets a few data sets.

    Kind regards

    Sid

  9. Hi Sid,

    Unfortunately, I don't have much experience with Cordova. For HTML5/Javascript, please consider using REST endpoint or refer to Soap.js as reference if you need SOAP.

    blogs.msdn.com/…/new-microsoft-crm-sdk-sample-sdk-soap-js.aspx

    Ken

  10. Sid says:

    Hi Kenichiro,

    Thank you for the answer, but msdn says about Sdk.Soap.js -> "This library does not provide code to authenticate." 🙁

    code.msdn.microsoft.com/SdkSoapjs-9b51b99a

    sid

  11. Sid,

    You are right, as the Soap.js is supposed to use in Webresource, thus no need to authenticate. Therefore please just refer to the library for the sake of construct and parse SOAP part. Or you may want to stick with REST endpoint as it is way easier. Yet you need to authenticate. For authentication, with CRMOL, you may want to consider checking ADAL for JavaScript.

    github.com/…/dev

    I didn't test this personally, so I cannot guarantee this fits to your solution. yet good to know tool.

    Ken

  12. sid says:

    Hey Kenichiro,

    thank you for the great link.

    Do you know, if your code work with xamarin forms?

    Sid

  13. Hi sid,

    Yes it does for both normal Xamarin app as well as Xamarin Forms, because its C# at the end. However, you need to change a bit for the code.

    1. Open Microsoft.Xrm.Sdk.Samples.cs

    2. Comment out line 34 using Windows.ApplicationModel;

    3. Comment out inside EnableProxyTypes method as it depends on Windows runtime.

    4. if you want to use EarlyBound for Xamarin, then feed your data type to typeList like below. Please also note that I changed method signature as it doesn't need async/await anymore.

    public void EnableProxyTypes()

    {

       List<TypeInfo> typeList = new List<TypeInfo>();

       typeList.Add((typeof(Account).GetTypeInfo())); // Add typeinfo of Entity you want to use for Early Bound.

       types = typeList.ToArray();

    }

    5. Compile.

    6. When you instantiate the proxy, then call proxy.EnableProxyTypes(); method.

    Now you can use Earlybound like below.

    Account myaccount = (Account) await proxy.Retrieve(Account.EntityLogicalName, <guid>, new ColumnSet(<columns>));

    Or

    var results = await proxy.RetrieveMultiple(query);

    foreach(Account account in results.Entities)

    {

    // do work.

    }

    Actually this is good question, and I will write another post for more detail, but you can go ahead to implement by using this information. Hope this helps.

    ken

  14. sid says:

    Thank you Ken 🙂 it works!

    sid

  15. Fernando Dominguez says:

    I keep trying this solution and I can never authenticate. The ADFS Screen show up and when I authenticate it always shows Can't Connect to the service then it just sit there if I click the back arrow then I get the status of the request. Any ideas?

    The browser based authentication dialog failed to complete. The system cannot locate the resource specified. (Exception from HRESULT: 0x800C0005)"

    Here is the authority I am using for ADFS

    https://[crm ifd web url]/adfs/ls/XRMServices/2011/Organization.svc/web

    Thanks

  16. Fernando Dominguez says:

    I figured it out I needed to use the ADFS oauth URL not the CRM IFD URL. I was using that because of the CRM documentation.

    msdn.microsoft.com/…/dn531009.aspx

    Anyway hope this helps someone

  17. Fernando,

    Great share! I will post another article regarding OnPreimse setup.

    Ken

  18. Tobias Fischer says:

    Hi Ken,

    Could you may help me out with some questions about authentication as its currently part of my bachelorthesis?

    It would be great if you could explain the authentication flow of a windows-store-app to dynamics crm 2015 online in more detail.

    If I understand it correctly the authentication to dynamics crm 2015 online is done via OAuth 2.0 authorization code grant type with a public client?I did find a link from azure active directory: msdn.microsoft.com/…/dn499820.aspx and i think the scenario of: native application to web api would be the right one.

    But somehow it is hard to make a connection between the scenario of a mobile app authentication with dynamics crm online and the oauth authorization flow. I guess that the web-api in this case would be the organizationwebservice of dynamics crm right? I also have the feeling that a lot of complexity is gone by using adal. While this is pretty nice for implementing it doesn't help with explaining the concept of authentication with a mobile client to dynamics crm 2015 online.

    I hope you can help me out.

    Best Regards,

    Tobias

  19. Hi Fernando, sorry for late replay.

    Did you register your application to ADFS and using the same Client Id to your app? I received similar question how to use this to OnPremise IFD several times. The auth url seems correct.

    i will write an article how to do so by using existing sample soon.

    Ken

  20. Hi Tobias,

    There is a great article how the OAuth 2.0 authorization works with Azure AD here.

    http://www.cloudidentity.com/…/adal-for-windows-phone-8-1-deep-dive

    Another great way to learn how the authentication work if you don't mind reading JavaScript is to use connected service for Office 365 in Visual Studio. When you add Office 365 connected service, it will generate JavaScript to get code and then accessToken. (and refreshToken). By reading the script, it is very helpful to understand all the detail flow.

    This is how i get the script.

    1. Open Visual Studio 2013 (or 2015)

    2. Create project under JavaScript (Store or Cordova)

    3. Right click project and Add > Connected Service.

    4. Sign In to your Office 365 and register your application.

    5. Select any privilege you need. I just register them all.

    6. Then you see helper codes will be added.

    Read o365auth.js file under services|office365|scripts. Though a bit old, this blog helps you navigate through the flow.

    blogs.office.com/…/office-365-api-tool-visual-studio-2013-summer-update

    Ken

  21. Hi Ken says:

    Thanks for the article!

    Am I correct in thinking this is the wrong approach to use for building a general purpose app, thats published on the store for instance?

    The problem I have is that it requires the end user to go to their azure portal, and add "an application we are developing for our organisation" to obtain a client id, then go back to the app they have downloaded, and enter in the client id?

    The flow I really am after is that:

    1. End user downloads some app from an app store.

    2. When the app starts up, they set up their connection with CRM (Miminal fuss)

    3. They use the app – which now has access to their CRM.

    I'd love any pointers here – does the same approach you have discusses in your article apply here or is your approach just for in house applications developed for one organisation?

    Thanks for all the helpful information thus far.

    Darrell

  22. Hi Darrell,

    I see you point and I have good answer to it.

    If you want to distribute you app to customers who uses CRM online out of your control, you can use cconsent feature. You simple register you app to your azure ad, and when use download and run your app and tried to login, they see login screen and then they see consent screen to let them allow app to access their user information.

    You only need to register the app directly to their azure ad when they don't want to see this consent screen.

    blogs.msdn.com/…/dynamics-crm-developers-build-your-own-mobile-apps-for-windows-ios-and-android-part-3.aspx

    The article above has brief expansion but if that's not enough, please let me know so that I can describe it very detail.

    Ken

  23. aziz km says:

    Hi Kenichiro,

    in the "Register your app to Azure AD" step, you said in 11th and 12th point that we have to do this :

    "11.Navigate to bottom to setup impersonation.

    12. Select “Dynamics CRM” from Select application dropdown, and select “Access CRM Online as organization users.”

    but i can't find how to do it

    could you please explain me how to do it.

    thanks

  24. Hi aziz,

    Thanks for your comment. Do you mean you don't see Dynamics CRM service in the list of services? In that case, your AD tenant does not have CRM Online service. One workaround is to register your app directly to your existing CRM Online tenant. You can related the tenant from your current Azure AD so that you dont have to sign up for Azure subscription for each org. Please read my latest blog for how to do it.

    blogs.msdn.com/…/dynamics-crm-developers-build-your-own-mobile-apps-for-windows-ios-and-android-part-3.aspx

  25. Thomas says:

    Hello,

    I try to use your instructions to create an application with xamarin.forms.

    I used a project with portable Library and I want use it for centralized code to authentication.

    When I import ADAL I have this error :

    Installation de « Microsoft.IdentityModel.Clients.ActiveDirectory 2.16.204221202 ».

    Installation de « Microsoft.IdentityModel.Clients.ActiveDirectory 2.16.204221202 » terminée.

    Ajout de « Microsoft.IdentityModel.Clients.ActiveDirectory 2.16.204221202 » à AppMobile2.

    Désinstallation de « Microsoft.IdentityModel.Clients.ActiveDirectory 2.16.204221202 ».

    Désinstallation de « Microsoft.IdentityModel.Clients.ActiveDirectory 2.16.204221202 » terminée.

    Échec de l’installation. Restauration…

    Impossible d’installer le package « Microsoft.IdentityModel.Clients.ActiveDirectory 2.16.204221202 ». Vous essayez d’installer ce package dans un projet ciblant « portable-net40+sl50+win+wp80+MonoAndroid10+xamarinios10+MonoTouch10 », mais le package ne contient aucun fichier de contenu ou référence d’assembly compatible avec cette infrastructure. Pour plus d’informations, contactez le créateur du package.

    Same error when I try target with Framework 4.5.

    Thanks for help

  26. Thomas,

    You need to use ADAL v3 for Xamarin, which is still preview. Please see this article for more detail.

    http://www.cloudidentity.com/…/adal-v3-preview-march-refresh

    I am using the latest preview release for ADAL.

    Ken

  27. Thomas says:

    Thanks for answer.

    I try to install this version of ADAL on my portable class and receive this error :

    PM> Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory -Version 3.1.203031538-alpha -Pre

    Installation de « Microsoft.IdentityModel.Clients.ActiveDirectory 3.1.203031538-alpha ».

    Vous téléchargez Microsoft.IdentityModel.Clients.ActiveDirectory à partir de Microsoft Corporation. Le contrat de licence est disponible à l’emplacement go.microsoft.com/fwlink. Vérifiez si le package contient des dépendances susceptibles de faire l’objet de contrats de licence supplémentaires. Votre utilisation du package et des dépendances confirment votre acceptation de leurs contrats de licence. Si vous n’acceptez pas les contrats de licence, supprimez les composants correspondants de votre ordinateur.

    Installation de « Microsoft.IdentityModel.Clients.ActiveDirectory 3.1.203031538-alpha » terminée.

    Ajout de « Microsoft.IdentityModel.Clients.ActiveDirectory 3.1.203031538-alpha » à CrmSample.

    Désinstallation de « Microsoft.IdentityModel.Clients.ActiveDirectory 3.1.203031538-alpha ».

    Désinstallation de « Microsoft.IdentityModel.Clients.ActiveDirectory 3.1.203031538-alpha » terminée.

    Échec de l’installation. Restauration…

    Install-Package : Impossible d’installer le package «Microsoft.IdentityModel.Clients.ActiveDirectory 3.1.203031538-alpha». Vous essayez d’installer ce package dans un projet ciblant «

    portable-net45+win+wp80+MonoAndroid10+xamarinios10+MonoTouch10», mais le package ne contient aucun fichier de contenu ou référence d’assembly compatible avec cette infrastructure. Pour plus

    d’informations, contactez le créateur du package.

    Au caractère Ligne:1 : 1

    + Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory -Version 3.1.203 …

    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

       + CategoryInfo          : NotSpecified: (:) [Install-Package], InvalidOperationException

       + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPackageCommand

    To try your solution, I have  create a new project in VS2013 and write command install ADAL V3.

    Where is my mistake ?

  28. Thomas,

    Thanks for update and I figured the issue. The thing is i am using shared project for Xamarin.Forms and that's because ADAL v3 does not support Siliverlight yet. So what i am doing is to create Xamarin.Forms project by using Share Project, then add ADAL 3.x for iOS and Android project, ADAL v2 for Siliverlight project.

    In addition, i make Siliverlight project from 8.0 to 8.1 and install HttpClient nuget package so that it works with CRM mobile library.

    Xamarin.Forms 1.4 now supports WinRT rather than Silverlight and in this case, on the other hand, you need to use PCL as it does not support Shared Project yet.

    I will write blog article later for Xamarin.Forms if you think that would benefit the community.

    Ken

  29. Thomas says:

    Ok, I get ADAL 3 for Xamarain Droid/iOS and 2 for WinPhone (Windows Phone 8.0)

    I add Microsoft.Crm.Sdk.Mobile. Before I have compil it in other instance of VS2013 to be safe.

    1) VS2013 don't want include the project like ref to winphone projet, target not matching. Try to move both in 8.1 but same error.

    2) When paste your code in MainPage.xaml.cs, IdentityModel is not recognized.

    Thanks for help

    Thomas

  30. Thomas,

    I am sorry but I do not know what is causing the issue from the description, and it is really before CRM thing I believe. As there are many steps you need to take until you get the Authentication done for Xamarin.Forms even before calling WhoAmI message and I think the easiest way to explain that is to write step by step blog article. Its going to be long article but I will find my time to write it up for all of us 🙂

    My question for you are:

    1. Do you prefer PCL?

    2. Do you prefer WinRT compare to Silverlight?

    CRM part doesn't change though

    Ken

  31. Thomas says:

    Hello,

    Not sorry, I'm new in Xamarin and Xamarin.Forms and CRM. I'm web dev .Net and try to understand and make application can connect to CRM for my new job. I think I jump over some steps 🙁

    I prefer PCL to reuse in different projects, and don't know difference between WInRT and Silverlight. I have think that windows phone run in 8 or 8.1 was ligth version of desktop version, not different.

    Thanks for your help and your work.

    Thomas

  32. Udayan says:

    Can I develop mobile app for CRM2011?

    Do I need to build WCF server as  middle layer and mobile app consume WCF

    Can you please guide me to build Mobile/Surface Tablet app for CRM2011

    Thanks

    Udayan

  33. Hi Udayan,

    The difficult part of Dynamics CRM 2011 is that it does not support OAuth 2.0, so you have to authenticate user with SAML. There is a sample code you can refer to here: code.msdn.microsoft.com/…/CRM-Online-2011-WebServices-14913a16

    However it is easier for sure to put middle tier like you mentioned.

    Ken

  34. Amol Gholap says:

    Hi Kenichiro,

    Thank you for detailed article. Did you happen to write article on CRM ADFS onpremise authentication? I couldn't find good resource around it. Can you please point me few?

    Thanks,

    Amol

  35. Thanks for your comment. The white paper is here.

    http://www.microsoft.com/…/details.aspx

    What kind of information you are looking for?

    Ken

  36. Jason Yoon says:

    Hey ken, thank you for this great article.

    I’m wondering if ADAL approach is the only way to implement CRM mobile? I’m looking at Xamarin to develop and as you mentioned in the previous replies. Do you know if there is different approach rather than Azure AD?

    Thanks,
    Jason

    1. Jason Yoon says:

      I’m using CRM Online 2016 Update 1

      1. For online, you really need to use OAuth2.0. You don’t have to use ADAL but that’s the easiest. Please let me know if you have any issue.

        1. Jason Yoon says:

          I’m looking for a way to authenticate without registering in Azure AD.

    2. For my own knowledge, ADAL is the way to authenticate for mobile (to use Web API/REST). What scenario you have exactly?

      1. Jason Yoon says:

        Thank you for your reply. My scenario is simply log in to CRM and have a button that fires work flow from CRM.

  37. Arpita Singh says:

    Hello Kenichiro,

    Thanks for your great post.
    That was exactly what I looking for my project.
    Looking forward to hear more from your side.

    Best Regards,
    Arpita Singh

    1. Thanks Arpita,
      This article is a bit old one. Still valid for authentication, but not for CRM as SOAP endpoint is officially deprecated.
      I will write another blog articles regarding to Xamarin and Xamarin.Forms with CRM Web API.

      Ken

      1. Arpita Singh says:

        Hello Kenichiro ,

        Thank you so much for your kind reply.

Skip to main content