Showing posts with label MS CRM 2015 (online). Show all posts
Showing posts with label MS CRM 2015 (online). Show all posts

Tuesday, February 7, 2017

Add custom portal into online CRM

To add custom portal into online CRM

1.  Go to Admin portal, either from dynamics CRM or directly into Admin portal.

2. Then go to Admin Centers and click on Dynamics 365, as shown below

3. Dynamics 365 Administration Center will be opened in new window. 

4. Click on Applications tab in Administration Center.

5. Select Portal Add-On and click on Manage, new window will be opened to configure portal

6.  Configure your portal, by entering name, portal type (Production / Trail), portal URL. 

7. Then select Dynamics 365 instance

8. Once Dynamic 365 instance selected, you need to select portal language, portal administrator  

When selecting portal administrator 
  •  Portal Administrator must be CRM user with System Administrator role.
  • User added as contact in CRM with Web role "Administrator" 
  • Login to the portal using "Sign in with an external account" option with user CRM credentials. 
9. Then select portal Audience and how portal deployed. 

Portal audience once set for portal cannot be changed later from UI. Portal choices are tailored based on the selection of the audience.

For Partner / Employee audiences, user license required for internal users (customer employees, contactors, agents) dependent on entities exposed.

Depending on audience, we will get different options for portal to be deployed. 

10. Submit your request.

11. After submit and accept page, provisioning begins. You will see following screen

12. Once you accept, portal creation request will be submitted.

 It will take around 30 minutes to complete. After provisioning package installation begins.

13.  Once package installation completed you will see portal details, and you are ready to configure your portal. 

 14. In your CRM instance you will see one area for portal, you can manage your custom portal from there. 

Friday, October 28, 2016

Set PartyList or Regarding Lookup when using Xrm.Utility object

When using Xrm.Utility object to open entity form or quick Create form, we cannot set PartyList or Regarding Lookup with default field parameters. But there is workaround for this, we can use custom query string parameters and using custom query string parameters we can set PartyList or regarding lookup.
Suppose we want to open email entity form from contact entity and want to set To and 
Regarding lookup when email entity form opened using either
 Xrm.Utility.openEntityForm or Xrm.Utility.openQuickCreate
·         Open Email Form or quick create form
·         In Form properties, select Parameter tab.
·         Add 3 parameters, to set To partylist.
Name: new_ToType
Type: SafeString
Name: new_ToName
Type: SafeString
Name: new_ToId
Type: UniqueId
·         Add 3 parameters, to set Regarding lookup
Name: new_RegardingIdName
Type: SafeString
Name: new_RegardingIdType
Type: SafeString
Name: new_RegardingId
Type: UniqueId

·         In Email form load event add JavaScript, which will get query string parameters and will set To party and Regarding lookup.
var emailScript =
    setPartyListnRegarding: function () {
        if (Xrm.Page.ui.getFormType() == 1) {

            /*To Party list*/
            var ToPartyList = [];
            ToPartyList[0] = {};

            if (Xrm.Page.context.getQueryStringParameters().new_ToType != null && Xrm.Page.context.getQueryStringParameters().new_ToType != 'undefined') {
                ToPartyList[0].entityType = Xrm.Page.context.getQueryStringParameters().new_ToType;

            if (Xrm.Page.context.getQueryStringParameters().new_ToId != null && Xrm.Page.context.getQueryStringParameters().new_ToId != 'undefined') {
                ToPartyList[0].id = Xrm.Page.context.getQueryStringParameters().new_ToId;
            if (Xrm.Page.context.getQueryStringParameters().new_ToName != null && Xrm.Page.context.getQueryStringParameters().new_ToName != 'undefined') {
                ToPartyList[0].name = Xrm.Page.context.getQueryStringParameters().new_ToName;

            /*Set To Partylist*/
            if (ToPartyList[0] != null && ToPartyList[0].id != null && ToPartyList[0].id != 'undefined')

            /*Regarding Object Id*/
            var regarding = [];
            regarding[0] = {};

            if (Xrm.Page.context.getQueryStringParameters().new_RegardingIdName != null && Xrm.Page.context.getQueryStringParameters().new_RegardingIdName != 'undefined') {
                regarding[0].name = Xrm.Page.context.getQueryStringParameters().new_RegardingIdName;
            if (Xrm.Page.context.getQueryStringParameters().new_RegardingId != null && Xrm.Page.context.getQueryStringParameters().new_RegardingId != 'undefined') {
                regarding[0].id = Xrm.Page.context.getQueryStringParameters().new_RegardingId;
            if (Xrm.Page.context.getQueryStringParameters().new_RegardingIdType != null && Xrm.Page.context.getQueryStringParameters().new_RegardingIdType != 'undefined') {
                regarding[0].entityType = Xrm.Page.context.getQueryStringParameters().new_RegardingIdType;
            if (regarding[0] != null && regarding[0].id != null && regarding[0].id != 'undefined')

·         In Contact form event when want to open email form, we need to pass these query string parameters which are defined above
var contactScript = {
    openEmail: function () {
        var parameters = {};
        /*Custom querystring parameter*/

        parameters["new_ToType"] =;
        parameters["new_ToName"] = Xrm.Page.getAttribute("fullname").getValue();
        parameters["new_ToId"] =; // current contact Id

        parameters["new_RegardingIdType"] = Xrm.Page.context.getQueryStringParameters().etc;
        parameters["new_RegardingIdName"] = Xrm.Page.getAttribute("fullname").getValue();
        parameters["new_RegardingId"] =; // current contact Id

        var windowsOptions = {};
        windowsOptions["openInNewWindow"] = true;

        Xrm.Utility.openEntityForm("email",null, parameters,  windowsOptions);

·         Save all changes and publish.

·         Now when Email Form opened from Contact entity, using Xrm.Utiltiy, we will see To, and Regarding lookup is already set. 

Thursday, October 27, 2016

Get / Set Query string parameters to CRM form.

When using Xrm.Utitliy object to open entity form or Quick create form, sometimes we need to pass query string parameters.
In MS CRM you can enable CRM forms to accept query strings, and you can retrieve those query string parameters in form events.

Set Query string parameters

a.      Go to Entity customization
b.      Open form, where you want to add query strings parameters
c.       Click on Form Properties
d.     In form properties window you will see Parameters tabs.
e.      Add Parameters, which you want to get it, when using openEntityForm or openQuickCreate
f.        When adding parameter need to specify name and data type.

NOTE: In Each parameter name MUST contains at least one underscore (‘_’) character. And name cannot be started with underscore or “crm_”.  Microsoft recommends that you should use solution publisher prefix when defining parameter name, e.g abc_queryString_contactId

g.      We can pass Boolean, Datetime, double, entitytype, Integer, long, PositiveInteger, SafeString, UniqueId, UnsignedInt types of parameters.

Pass Query String parameters to form using openEntityForm or openQuickCreate

openContactForm: function () {
        var parameters = {};
        /*Custom querystring parameter*/

        parameters["qryParam_boolean"] = 0; // Boolean value - 0,1, true, false
        var startDate = new Date();
        parameters["qryParam_datetime"] = startDate.format("MM/dd/yyyy"); // date time
        parameters["qryParam_double"] = 1.0; //double
        parameters["qryParam_eType"] = 2; // Entity Type Code
parameters["qryParam_eType"] = Xrm.Page.context.getQueryStringParameters().etc; // Another way to get Entity Type Code
        parameters["qryParam_integer"] = 100;  //Integer
        parameters["qryParam_long"] = 100000; // Long
        parameters["qryParam_positiveinteger"] = 1; // Positive Integer including 0
        parameters["qryParam_safestring"] = "safestring"; //string
        parameters["qryParam_uniqueId"] =; //GUID
        parameters["qryParam_unsignedInt"] = 1; //unsigned integer

        var windowsOptions = {};
        windowsOptions["openInNewWindow"] = true;

        Xrm.Utility.openEntityForm("new_manufacture",null, parameters,  windowsOptions);

Retrieve Parameters value, when entity form is opened.

To get parameter value, we need to use Xrm.Page.context.getQueryStringParameters()

getQueryStringParamters: function () {
        var booleanParam;
        var datetimeParam;
        var doubleParam;
        var entitytypeParam;
        var integerParam;
        var longParam;
        var positiveintegerParam;
        var safestringParam;
        var uniqueIdParam;
        var unsignedIntParam;

        if (Xrm.Page.context.getQueryStringParameters().qryParam_boolean != null && Xrm.Page.context.getQueryStringParameters().qryParam_boolean != 'undefined') {
            booleanParam = Xrm.Page.context.getQueryStringParameters().qryParam_boolean;
        if (Xrm.Page.context.getQueryStringParameters().qryParam_datetime != null && Xrm.Page.context.getQueryStringParameters().qryParam_datetime != 'undefined') {
            datetimeParam = Xrm.Page.context.getQueryStringParameters().qryParam_datetime;
        if (Xrm.Page.context.getQueryStringParameters().qryParam_double != null && Xrm.Page.context.getQueryStringParameters().qryParam_double != 'undefined') {
            doubleParam = Xrm.Page.context.getQueryStringParameters().qryParam_double;
        if (Xrm.Page.context.getQueryStringParameters().qryParam_eType != null && Xrm.Page.context.getQueryStringParameters().qryParam_eType != 'undefined') {
            entitytypeParam = Xrm.Page.context.getQueryStringParameters().qryParam_eType;
        if (Xrm.Page.context.getQueryStringParameters().qryParam_integer != null && Xrm.Page.context.getQueryStringParameters().qryParam_integer != 'undefined') {
            integerParam = Xrm.Page.context.getQueryStringParameters().qryParam_integer;
        if (Xrm.Page.context.getQueryStringParameters().qryParam_long != null && Xrm.Page.context.getQueryStringParameters().qryParam_long != 'undefined') {
            longParam = Xrm.Page.context.getQueryStringParameters().qryParam_long;
        if (Xrm.Page.context.getQueryStringParameters().qryParam_positiveinteger != null && Xrm.Page.context.getQueryStringParameters().qryParam_positiveinteger != 'undefined') {
            positiveintegerParam = Xrm.Page.context.getQueryStringParameters().qryParam_positiveinteger;
        if (Xrm.Page.context.getQueryStringParameters().qryParam_safestring != null && Xrm.Page.context.getQueryStringParameters().qryParam_safestring != 'undefined') {
            safestringParam = Xrm.Page.context.getQueryStringParameters().qryParam_safestring;
        if (Xrm.Page.context.getQueryStringParameters().qryParam_uniqueId != null && Xrm.Page.context.getQueryStringParameters().qryParam_uniqueId != 'undefined') {
            uniqueIdParam = Xrm.Page.context.getQueryStringParameters().qryParam_uniqueId;
        if (Xrm.Page.context.getQueryStringParameters().qryParam_unsignedInt != null && Xrm.Page.context.getQueryStringParameters().qryParam_unsignedInt != 'undefined') {
            unsignedIntParam = Xrm.Page.context.getQueryStringParameters().qryParam_unsignedInt;
Now you can set value to form or add any logic based on passed parameters.