Category Archives: Dynamics 365
Identify Users having specific privileges
Introduction: This blog consists of information on how you can find the users having specific privileges and in which role they have the privileges. Solution: Make use of the below Fetch XML to identify who has access to prvReadAccount related to his Role. The fetch can be performed on System User level or for teams. <fetch version=”1.0″ output-format=”xml-platform” mapping=”logical” distinct=”false” > <entity name=”privilege” > <attribute name=”name” /> <link-entity name=”roleprivileges” from=”privilegeid” to=”privilegeid” alias=”pu” link-type=”inner” > <link-entity name=”role” from=”roleid” to=”roleid” alias=”rpu” link-type=”inner” > <attribute name=”name” /> <link-entity name=”systemuserroles” from=”roleid” to=”roleid” alias=”sr” link-type=”inner” > <link-entity name=”systemuser” from=”systemuserid” to=”systemuserid” alias=”srr” link-type=”inner” > <attribute name=”systemuserid” /> <attribute name=”fullname” /> </link-entity> </link-entity> </link-entity> </link-entity> <filter type=”and” > <condition attribute=”name” operator=”eq” value=”prvReadAccount” /> </filter> </entity> </fetch> Response: <fetch version=”1.0″ output-format=”xml-platform” mapping=”logical” distinct=”false” > <entity name=”privilege” > <attribute name=”name” /> <link-entity name=”roleprivileges” from=”privilegeid” to=”privilegeid” alias=”pt” link-type=”inner” > <link-entity name=”role” from=”roleid” to=”roleid” alias=”rpt” link-type=”inner” > <attribute name=”name” /> <link-entity name=”teamroles” from=”roleid” to=”roleid” alias=”tr” link-type=”inner” > <link-entity name=”team” from=”teamid” to=”teamid” alias=”trr” link-type=”inner” > <attribute name=”teamid” /> <attribute name=”name” /> </link-entity> </link-entity> </link-entity> </link-entity> <filter type=”and” > <condition attribute=”name” operator=”eq” value=”prvReadAccount” /> </filter> </entity> </fetch>
Share Story :
Soft Booking Resource from Project Team Members View in PSA
Introduction: In the current 8.2 version of D365 PSA, we can only Hard Book a Resource from the Project Team Member View whereas in the v9.0, we can Soft Book from the Project Team Member View from with a few extra clicks. v8.2 – Current There is a button called Hard Book which lets you Hard Book the resource selected as shown below Then, you can plainly Hard Book the resource. v9.0 There is a generic option called as Book in the Project Team Member Associated View On clicking the same, a separate window opens with the selected Resource to Book them Conclusion Soft Booking from Project Team Members Associated View is not possible in v8.2 but is possible in the v9.0 version.
Share Story :
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!