Category Archives: Dynamics 365
Setup simultaneous Remote login for multiple users
Introduction: In this blog article, we will see how we can increase simultaneous remote logins for multiple users to a remote connection. This will create different sessions for each login. It is important that we don’t increase simultaneous connection more then required as performance can decrease due to more resource demand for each login. Steps: Run -> gpedit.msc -> enter Administrative Templates -> windows Component -> Remote Desktop Services -> remote desktop session host -> connections Go to Restrict Remote Desktop Services users to a single Remote Desktop Services Session Select Disabled. Click OK Go to Limit number of connections. Select Enabled. Change ‘RD Maximum connections allowed’ to the desired connection allowed. This will enable 2 simultaneous logins for Remote connection. In case Remote Desktop session host is not installed maximum connections allowed for remote login is 2.
Share Story :
Managing your Sales pipeline in 1-2-3: Triggering Email Notification on ‘Proposal Sent’
Introduction: The purpose of this article is to help fellow entrepreneurs and sales managers leverage the power of Office 365 and Dynamics 365 to manage and build their sales pipeline with a few easy steps. In this article, we focus on utilizing Business Process Flows on Opportunities in Dynamics 365 and Triggering Email Notifications to team members. Step 1 – Enable the Out of the box Opportunity Sales Process In case you are not using Business Process Flows, please start using it. For a growing Sales team, using Business Process Flows on Opportunities enables a methodical approach to your pipeline management. When you enable the out of the box Opportunity Sales Process, you will see the following Process Flow appear on your Opportunities – The above Business Process Flow has 4 stages – Qualify, Develop, Propose and Close. You can move your Opportunity through each of the stages as you make progress. When the Opportunity reaches the proposal stage, we mark the Present Proposal check box as ‘complete’ as per below – We also ensure that we save the proposal on the Opportunity at that point – Step 2 – Send Email Notification to Project Delivery Manager on Proposal Complete When a proposal is sent to the Customer, we trigger a workflow notification to our HR and Delivery Managers. The Workflow email looks something like this – The above email serves as a reminder to our Delivery Manager that a new Project might be coming their way soon. It also informs our HR Manager, so they can look at our PowerBI Resource Allocation Dashboards to understand staffing and hiring needs. In addition, we also include the URL to the Opportunity, so our Delivery Manager can look at the Opportunity and even the proposal that we attached to the Opportunity. Finally, when an Opportunity is Won, we send a similar workflow email. Hence the ‘Propose’ stage email provides our Delivery Manager with some preparation time to ensure we are ready for Kick off when we Win the Opportunity. Step 3 – Just do it. Yes, this step is same as in my previous article. Get in the habit of doing this and it will help close the communication loop from Sales to Delivery to HR, thus helping your organization meet its commitments. Remember… ‘Sales cures all.’ Let’s take care of that sales pipeline.’ You can always email me at AShah@CloudFronts.com to discuss your sales processes and technology adoption. In the coming articles, I will continue to focus on efficient ways to build and manage your sales pipeline and how this ties into one of the most important KPIs for running your professional services business.
Share Story :
Integrate PowerApps with Dynamics 365
Introduction: This blog explains how to Integrate PowerApps with Dynamics 365. Keep the following restrictions in mind: Only PowerApps users in the same tenant can access the embedded app. To access PowerApps using Internet Explorer 11, you must turn off Compatibility View. Steps to be followed: In powerapps.com, on the Apps tab, click or tap the ellipsis ( . . . ), then Details. Copy the App ID. Substitute the [App ID]value in the URI.: https://web.powerapps.com/webplayer/iframeapp?hideNavBar=true&source=iframe&appId=/providers/Microsoft.PowerApps/apps/579938ff-e1a0-4891-a8b9-8d69c103fd84 Embed your app in a website: Embedding your app is now as simple as adding the iframe to the HTML code for your site.http://<iframe width=”[W]” height=”[H]” src=”https://web.powerapps.com/webplayer/iframeapp?hideNavBar=true& source=website&screenColor=rgba(165,34,55,1)&appId=/providers/Microsoft.PowerApps/apps/[AppID]”/> To add PowerApp inside CRM as web resource: Keep the following points in mind for authenticating users of your app: If your website uses Azure Active Directory (AAD) based authentication, no additional sign-in is required. If your website uses any other sign-in mechanism or is not authenticated, your users see a sign-in prompt on the iframe. After they sign-in, they will be able to run the app as long as the author of the app has shared it with them Steps: Specify the width and height for App. Specify the app id. Sample HTML code: <!DOCTYPE html> <html> <head> <title>HTML Iframes</title> </head> <body> <p>App Goes here…</p> <iframe width=”250″ height=”250″ src=”https://web.powerapps.com/webplayer/iframeapp?hideNavBar=true&source=website&screenColor=rgba(165,34,55,1)&appId=/providers/Microsoft.PowerApps/apps/579938ff-e1a0-4891-a8b9-8d69c103fd84″ /> </body> </html>
Share Story :
Prepopulating Lookup and dropdown fields on a Form in D365 CRM Portals using JS
Overview: In this blog we will see how we can prepopulate lookup and dropdown (option set) fields on an Entity form in D365 CRM Portals using JS. Pre-Requisites: D365 CRM Portals D365 CRM Environment Introduction We know that if we want to prepopulate a lookup or a dropdown field on a form in CRM Portals the best method is to use Entity Form Metadata. But there is an alternative way to prepopulate the Lookup and dropdown (Option set) fields on an Entity form in D365 CRM Portals using JS. Scenario: To implement the functionality of prepopulating a lookup field we will be using the account lookup field on the CRM entity form based on the value entered in the contact field for a created opportunity in the partner portal. For the prepopulating the dropdown field we will be using the opportunity status field. Process: First of most we will see how to prepopulate the lookup field on the entity form based on the value entered in another field. As mentioned in the above scenario we need to prepopulate an account field on an opportunity form based on the value present in the contact field. To insert a value into a lookup field using JS(jquery) we need the following information as mentioned below. The field value to be displayed. For eg. Account full name. The GUID if the record to be displayed. For eg. GUID of the account record. The logical name of the entity. For eg. Logical name of the account entity. Now we will see how to get these details form the existing information we have on the opportunity form. When we open an opportunity record, on the details page in the URL section we get the id of the opportunity record as shown below We will insert this id into the fetch xml using liquid template to obtain details of the contact related to the following opportunity record as shown below. As shown above we have used the opportunity id in the fetchxml to get the contact details. Once we have obtained the contact details from which we will be using the contact name value in the next fetchxml to get the related account information. In the following below shown fetchxml we will get the value and the id of the account record to be inserted. Once we get the account record details we will write the jquery in the following manner to insert the value into the lookup field. Jquery syntax: <script> $(“form_attributeid_name”).val(“record_value”); $(“form_attributeid”).val(“record_GUID”); $(“form_attributeid_entityname”).val(“entity_logicalname”); </script> Once we publish the liquid code we will see that the account field on the opportunity form is prepopulated with the value related to the value present in the contact field. For prepopulating the dropdown(option set) field we need the option set value of the record to be displayed. To set the value in the option set we will write the following jquery. $(form_attributeid).val(“attribute_optionsetvalue”); Hope you all find this blog helpful. Happy coding in CRM portals.
Share Story :
Add custom Table method on Form in D3FOE
Background: As we know, we can only work with Extension code in D365 Finance and Operations. In this blog article, we will see how we can add a custom display method to a Table and display it on form using Extension. Steps: Create a new Class Add Display method Display the method on form 1. Create a new Class: Go to Solution Explorer -> Project Right Click -> Select ‘Add new Item’ Select Class -> Enter Name. Class name can be anything ending with ‘_Extension’. Eg. <ClassName>_Extension Click Ok 2. Add Display method: Public Static class CFLoyaltyaddphone_Extension // Class must be static { [SysClientCacheDataMethodAttribute (true)] //This statement will cache display method public static display LogisticsElectronicAddressLocator CFS_GetPhoneno (RetailLoyaltyCard _this) //Pass Tablename as Parameter { DirpartyTable dirPartyTable; Dirpartylocation dirpartylocation; LogisticsElectronicAddress logisticsElectronicAddress; select * from dirpartylocation where dirpartylocation.Party == _this.Party join logisticsElectronicAddress where logisticsElectronicAddress.Location == dirpartylocation.Location && logisticsElectronicAddress.IsPrimary == NoYes::Yes && logisticsElectronicAddress.Type == LogisticsElectronicAddressMethodType::Phone ; return logisticsElectronicAddress.locator; //Return Field value } } 3. Display the method on Form: Add the field type on form Design. Change the below property
Share Story :
Create and Associate records using Xrm.WebApi
Introduction: In this blog we will demonstrate how to create and associate records using Xrm.WebApi which provides methods to use Web Api to create and manage records. Implementation: Step 1: The syntax to create a new entity record is as follows: Xrm.WebApi.createRecord(entityLogicalName,data).then(sucessCallback,errorCallback); Here entityLogicalName(string) and data(object) parameters are required. The “data” parameter is a JSON object defining the attributes and values for the new record. Step 2: In this example we will create a sample account record along with a primary contact for that account, associate an opportunity to the account and create task and notes for the opportunity all in a single operation. This type of process is called as a deep insert. The code for the same is as shown below: var scripting = { recordCreation: function () { var data = { “name”: “CRAYONS LTD.”, “description”: “This Account is Created using a Web API”, “creditonhold”: false, “telephone1”: “9954565154”, “address1_city”: “Mumbai”, “primarycontactid”: { “firstname”: “Clinton”, “lastname”: “Dmello” }, “opportunity_customer_accounts”: [ { “name”: “Opportunity Associated to CRAYONS LTD.”, “Opportunity_Tasks”: [ { “subject”: “Task Created” } ], “Opportunity_Annotation”: [ { “subject”: “Note Created”, } ] } ] } Xrm.WebApi.createRecord(“account”, data).then( function success(result) { console.log(“Account Created with ID” + result.id); //perform operations on record creation }, function (error) { console.log(error.message); } ); } }; Step 3: In order to associate to an existing record @odata.bind annotation can be used. For Example: “primarycontactid@odata.bind”:”/contacts(GUID of the contact)”. Screenshots 1. A New Account is created with the name “CRAYONS LTD” and in the primary contact file the primary contact is set with the name Clinton Dmello as set in the code. 2. Also an opportunity is associated to the account as shown below in the associated view. 3. In the opportunity we can see the newly created task in the activities and a note as shown below. Hope this helped!
Share Story :
Zero Amount Issue for Expense Entry of T&M Project in D365 PSA
Introduction: We often get issues raised by Users while training PSA – Amount entered on Expense Entry is not reflecting on Invoice in T&M Project and instead shown as $0 as below. Resolution: We need to configure PSA correctly and check below configurations. 1. Sales Price List of Project is configured with Category Prices and not as shown below 2. Cost Price List of Organization Unit is configured with Category Prices and not as shown below 3. Amount in Chargeability View of Project Contract Line should have values in Sales Price Column of Chargeable Categories for expenses and not as shown below Conclusion: Zero Amount issue get resolved after configuring Category Prices in Price List and Chargeability View of Contract Line correctly and results are as shown below
Share Story :
Actionable Audit App to access audit logs in D365
Introduction: In this blog we will see how audit logs in D365 can be fetched that can be used for reporting purposes. Auditing helps to track changes made to the data in D365. The System Auditing entity cannot be accessed. Actionable Audit is a App by Microsoft Labs in which the required audit logs can be stored in the actionable audit entity which can be used later on by fetching the records of that entity. This audit log can be helpful to create Dashboards in Power BI, create reports etc to get meaningful information from the data. Implementation: Step 1: First we enable the auditing for the organization(globally) in Settings > Auditing. Step 2: We then enable auditing for the required entities and fields. Step 3: Download the Actionable audit app from the AppSource. Step 4: After accepting the terms and condition is done, it will take some time to install the solution as shown in the notification below. Step 5: In the plug-in registration tool we can see the assembly MicrosoftLabs.ActionableAudit is present. Step 6: Out of the box some steps are already registered as seen below Note: Only if the field is enabled for auditing the logs will be stored in Actionable Audit entity. Step 7: If required, the out of the box plugin steps can also be unregistered. And we can also add custom entities to the list. The pre-image and post-images also must be registered for different message which is shown in the user guide in the AppSource. Step 8: After the logs are created they are stored in Actionable audit entity as shown in the below example. Hope this helped!
Share Story :
Data Migration for Many to Many Relationship Entities in D365 PSA
Introduction: This blog explains how to migrate data for Many to Many or N:N relationship records. Scenario: Client always demand configuration records to be migrated from Test Env to a Production Environment.We can migrate data for Entity records and Entities with 1:N relationships records however we cannot directly migrate data for N:N relationship( intermediate entity) which is not exposed in D365 PSA. This can be achieved by using XRM Tool Box plugin – Manage NN relationships. Prerequistive: · XRM Tool Box with “Manage NN relationships” plugin installed. · Both entities having alternate key with data – This is required as a cleaner approach. Below steps explains how to achieve requirement. Steps of Implementation: 1. Open “Manage NN relationships” plugin in XRM tool box with Source Organization as connected. 2. Click Load Metadata button and then select First Entity with Specific attribute as alternate Key and same for Second Entity as shown below. 3. Click button Export button and save file. 4. Open exported file Column A is OrgUnitID and Column B is PriceLevelID data. 5. Change connection to target organization of Manage NN relationship plugin in XRM toolbox and then follow the step 1 and 2. 6. Click Import button and select the file exported in step 3. 7. Data migrated is been tracked in log section of plugin. Conclusion: N:N relationship or Many to Many relationship entity records cannot be migrated from D365 PSA as they are not been exposed however this can be achieved by using third party tool like XRM Tool Box – “Manage NN relationship”.
Share Story :
Chargeability View in D365 PSA
Overview: Often while working on PS, I was struggling to get the Chargeability View right. The main reason is not having the right Price List setup at the right places. There are 4 important places where the Price Lists need to be setup properly. Product Catalog with Role Prices having Org Unit A Account having corresponding Sales Price List and the same Sales Price List under it’s Project Price Lists grid. Opportunity having Org Unit A as Contracting Unit and Product Price list having Sales Price List for Org Unit A selected. Quote derived from the Opportunity having the same Account, Opportunity, Contracting unit and Product Price List selected. Organization Unit: For each Organization Unit you add to PSA, make sure you’ve added a Cost Price list to the Organization Unit as well as a Sales Price list exists for the same. Make sure Organization Units on the Role Prices are selected correctly on both the Sales and Cost Price Lists Sales Price List on Account and Opportunity: Account and Opportunity too should have the same Sales Price list whose Cost Price list is associated with the Organization Unit of the Account’s and Opportunity’s Organization Unit. Make sure you’ve correct Organization Unit and Product Price List as a Sales Price List for that Org Unit selected on the Opportunity form. Chargeability View on Quote Lines: Once everything flows from Account to Opportunity to Quote and to Quote Lines, you can see that your Chargeability View pops-up properly. Hope this helps you derive correct Chargeability View without hassle.
