Category Archives: Dynamics 365
Create Approval Flow with D365 conection
Introduction: This blog explains how to Create Approval Flow using Microsoft Flows. Use Case: When work order is updated. (Trigger) Check condition: system status: – open-completed and approved: -NO If condition satisfied: – Check Total amount: – If amount is greater than 1000 approval mail will be sent to approver. if he approves: update the work order with system status value closed-posted. else do nothing. update the work order with system status value closed-posted. Else do nothing. Steps to be followed: Sign in to the Microsoft flow. https://flow.microsoft.com/en-us/ Go to My flows –> create from blank Select Dynamics 365 when a record is updated Select the Organization Name and Entity Name for which you want to create flow. Click on + New step –> Add a condition. So here I want my flow should run when system status is open-completed and approved is NO. (Add your own conditions). Condition:@and(equals(triggerBody()?[‘msdyn_systemstatus’], 690970003),equals(triggerBody()?[‘cf_approved’], false) ) Go to Yes. Click on …More –> add a conditionCondition is: Total amount is greater than 1000. Go to yes. Add Action. Select Approvals –> Start an approval action. Enter details.In Assigned to enter the email address of the approval. Go to No. configure for amount is not greater than 1000. Click on Add an action. –> select Dynamics 365 – update a record. Enter the details. Enter the details Record identifier: Enter the record identifier of Work Order from when a record is updated step. Set the system status value to: 690970004 Add condition in Yes and check the approval status. On Yes. Select Add an action à Dynamics 365 – Update a record Enter the detailsRecord identifier: Enter the record identifier of Work Order from when a record is updated step.Set the system status value to: 690970004 Complete Flow:
Share Story :
Scheduling Project Tasks in Dynamics 365 PSA
Overview: Out-of-the-box, it is not possible to Book a task a on the Schedule Board, instead what you get at the easiest disposal is to allocate partitions of the Project to the resources and not the items from the WBS! Well, as a workaround, I’ve enabled the Project Task entity for Resource Scheduling using the PSA OOB feature to make this happen. Enabling Project Task Entity for Resource Scheduling: To be able to schedule a Project Task on the Schedule Board, we must first expose the entity itself for this capability. Here’s how you do it – Navigate to Resource Scheduling once you are using PSA and then select Administration. Then, select Enable Resource Scheduling for Entities Then, look carefully that the only entities enabled are the Project and Work Order (Field Service) Now, you want to add Project Task entity so that you can directly use Project Task to schedule on the Board. Make sure you make your selection as per below and click on Publish Customization Once Published, Project Task will appear in the Enabled Entities list Scheduling on the Project Task on Schedule Board: Assume you have some Project Tasks to Schedule, you can simply use those as you would do for Project and Work Order and you can schedule in the usual way thus, achieving Scheduling on Project Tasks from WBS instead of the Project.
Share Story :
Voice of the Customer – Resolved Issues
Introduction: Voice of the Customer features creating and sending out surveys to gain valuable feedback from your customers about your products or services. Respondents can take your surveys on a phone, tablet, or computer. You can see your customer’s feedback history as you work a sale or resolve a service case. In this blog we will have look on the solved issues by Microsoft till now. Resolved issues in Voice of Customer version 9.0.1162: The survey minimum and maximum values revert to their default values on saving the question. Invitation Link Text field gives HTML Validation Error when you provide input like <<<Hello>>>. The mandatory date question response validation fails for locales with dd/mm/yy date format in Google Chrome. Multiple survey responses are created when you open a survey link in different tabs or browsers and submit. Rotation of headers in Single rating in columns and Multiple ratings in columns questions do not work. In French locale, a few emoticons are not displayed while previewing the Smilies rating question. You were unable to preview or publish a survey if “>>>” or “<<<” characters are in the Invitation Link Text field. Resolved issues in Voice of Customer version 9.0.1113.10: Footer URLs are opened in the same tab as survey. Unable to enter negative value as the answer to the numerical response question. All answer options of a mandatory question are highlighted if an option is not selected by the respondent. The Response column under the Question Responses section in a survey response allows only 100 characters. Resolved issues in Voice of Customer version 9.0.959.8: Feedback entity does not work properly on all locales specified in Dynamics 365. Unable to clone surveys on a French organization. The default count resets to five in a start-rating question even after modification. The unsubscribe link is not visible on the survey. Respondent can skip Single Rating question even though it is marked as mandatory. Translation corrections for few strings in the Japanese language. The error messages are not appropriate in case of a survey exception. The social sharing dialog box is not displayed completely on the survey. You can refer our previous blogs on Voice of Customer for proper understanding of Voice of Customer solution.
Share Story :
Download Doucument Templates using Console App
Dynamic 365 development services has a team of experts, D365 architects and developers who works closely in every step in the business while closely understanding the requirements and designing the right solution for the business according to the needs as far as development is concerned the development team has a set of experts and developers that coordinate closely with the client and by using standard microsoft development technologies like visual studio and TFS online a robust and concrete development process is strategised. After developing the application it is internally tested according to the business needs and submitted to microsoft in order to clarify any issues. After that the application is listed on the App Source. Introduction: In this blog we will be demonstrate how to download word document templates from D365 Customer Engagement and then import them to another environment. Often there are requirements to move document templates from one environment to another. But currently adding document templates to solutions is not supported. To overcome this we have created a console app which downloads the word document template. Implementation: Step 1: To download Document templates we have created a Console App and it requires the following details: Username Password Organization Service Endpoint Address GUID of the template word template to download The username and password are the basic details that we use to log in to https//:www.portal.office.com To get the Organization Service Endpoint Address, navigate to Settings > Customizations > Developer Resources and copy the address as shown in the image below. To get the GUID of the Template Navigate to Settings > Templates > Document templates and open the template you want to download and Click on the Pop Out option at the top right as shown below Then from the URL we can get the GUID of the record as shown Step 2: The code to download the document template is shown below. It downloads the Word template and stores it in the location specified in the code. Remember to change this location to the location on your PC. Note: Replace all the required values in the code according to your organization details. Code: using Microsoft.Xrm.Sdk; using Microsoft.Xrm.Sdk.Client; using System; using System.Net; using System.ServiceModel.Description; using System.Text; using Microsoft.Crm.Sdk.Messages; using Microsoft.Xrm.Sdk.Query; using System.IO; namespace DownloadDocumentTemplates { public class DocumentTemplateDownload { static IOrganizationService _service = null; static OrganizationServiceProxy _proxy = null; static void Main(string[] args) { ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; ConnectToCRM(“test@test.onmicrosoft.com”, “pass@1234”, “https://test.api.crm8.dynamics.com/XRMServices/2011/Organization.svc”); Guid userId = ((WhoAmIResponse)_service.Execute(new WhoAmIRequest())).UserId; if (userId != null) { Console.WriteLine(“Guid: ” + userId); //GUID of the document template String documentTemplateId = “094EEB2A-948C-E711-8112-70106FAA45E1”; GetDocumentTemplateContent(documentTemplateId); Console.ReadKey(); } } public static void ConnectToCRM(string _username, string _Password, string _OrgSOAPServiceUri) { try { ClientCredentials credentials = new ClientCredentials(); credentials.UserName.UserName = _username; credentials.UserName.Password = _Password; Uri serviceUri = new Uri(_OrgSOAPServiceUri); _proxy = new OrganizationServiceProxy(serviceUri, null, credentials, null); _proxy.EnableProxyTypes(); _service = (IOrganizationService)_proxy; } catch (Exception e) { Console.WriteLine(“Error while Connecting: ” + e.Message); } } public static void GetDocumentTemplateContent(string documentTemplateId) { EntityCollection doc = null; string content = null; string documentTemplateName = string.Empty; Encoding encoding = Encoding.UTF8; try { string fetchXML = @”<fetch version=’1.0′ output-format=’xml-platform’ mapping=’logical’ distinct=’false’> <entity name=’documenttemplate’> <attribute name=’content’ /> <attribute name=’documenttype’ /> <attribute name=’name’ /> <attribute name=’status’ /> <attribute name=’modifiedon’ /> <attribute name=’modifiedby’ /> <attribute name=’description’ /> <attribute name=’languagecode’ /> <attribute name=’associatedentitytypecode’ /> <order attribute=’documenttype’ descending=’false’ /> <order attribute=’name’ descending=’false’ /> <filter type=’and’> <condition attribute=’documenttemplateid’ operator=’eq’ uitype=’documenttemplate’ value='” + documentTemplateId + @”‘ /> </filter > </entity > </fetch > “; doc = _service.RetrieveMultiple(new FetchExpression(fetchXML)); if (doc != null) { if (doc.Entities.Count > 0) { content = doc[0].Attributes[“content”].ToString(); documentTemplateName = doc[0].Attributes[“name”].ToString(); } byte[] textAsBytes = Convert.FromBase64String(content); File.WriteAllBytes(@”C:\Users\test\Desktop\” + documentTemplateName + “.docx”, textAsBytes); } } catch (Exception) { throw; } } } } Step 3: When the code is run it downloads the document template on the your PC and the document template is named after the template in CRM. Conclusion: This is very helpful as it can be used in another environment by simply uploading the template. To import the word template we can navigate to Settings > Templates >Document Templates and then upload the template.
Share Story :
User based Personalized Workspace from UI in D365 Operations
Introduction: In D365 Finance and Operations, there are various modules and each contains many forms. Users working in Operations uses forms from different modules and sometimes it becomes difficult to navigate or remember the path of all forms. It is also time consuming. A good solution for this is creating a Personalized Workspace and adding all the required items in it. Everyone know this can be done from code using forms. Another simple way is to create a Workspace directly from UI and it will be only available to the user who created it. In this blog, I will show you how to create workspace specific to users from UI. Steps: Create Workspace Rename Workspace Add elements to workspace Create Workspace: Go to D365 Operations Default Dashboard page. Right click anywhere on the Dashboard -> Select Personalize In the Dialog Select an option ‘Add a workspace’. This will add a new Workspace at the end of page Rename Workspace: Right Click the Workspace -> Click Personalize: My Workspace 1 Enter a Name in the textbox Add elements to workspace: Go to form you frequently use to add on Workspace. In this case I will add All customers to my workspace. Accounts Receivable -> Customers -> All Customers In Action Pane, go to Options Tab -> Personalize, select Add to Workspace. In Workspace dropdown, add name of newly created workspace. In Presentation dropdown, select the format in which you want to display the form Tiles- It is a summary view. List- It is a Tabbed format. It can be horizontal or vertical. Link- It will simply display a link taking you to the form. Conclusion: This is how we can create a personalized workspace which will be limited to respective user. We can also personalize the workspace using controls residing in personalize option.I will provide more details on this in my next blog.
Share Story :
Booking resource on a Project Task or a Service Ticket in PSA
Successful and on time delivery of the project is the heart of the business for any professional services organization. Where services based projects are delivered. In order to ensure successful project delivery efficient tools and industries based practises needs to be implemented which is possible through Microsoft Dynamics 365 Project Service Automation. Project service automation is not very easy and not something that anyone can do. By using services automation project managers have been able to deliver projects of various sizes. For industries best practices and efficient project management the set up of PSA is very much required. Apart from the above aspects, project service automation also helps to manage time and budget of the billable projects as well as estimate the quote for the project. Introduction: PSA doesn’t have the capability OOB to do the allocation’s over the task. This means the resource booked are booked for a project and we cannot identify what task they are going to perform or are booked for. How to do? This is the real time scenario which a PM regularly comes up with while allocating. To this I have figured out a solution that can be worked upon. Write a Plugin to create a Resource Requirement record on creation of Project Task in the WBS. In schedule board expose Project task Entity to be visible. This will allow you to drag and drop the allocations on to the schedule board. But, the challenge here is that the Project Tasks doesn’t comes automatically in the above grid. It comes because of the Plugin written above to create a record of Resource Requirement. Ensure the plugin will take care of the updates made to the task and will update the Resource Requirement record simultaneously. In our organisation we also, allocate resource on cases that the clients have raised. For the same, we will have to write a workflow to create a task in WBS as soon as a case is created. On the creation of a task we already have a plugin written to create a Resource Requirement record. You can then allocate Resources on cases.
Share Story :
PSA – Import project lines from WBS Pre-Requisites
Introduction: I often face difficulties while trying to import project lines from WBS while using PSA (Project Service Automation). After lot of trouble shooting I try to doubt my configuration and see if they are good. What to do? To my surprise they all appear to be good. Following two things needs to be ensured to import project lines from WBS into Quote line details. 1. On Account used in the Quote, Product Price List and Project Price list is properly set. 2. The Cost Price list attached to the Organisational Unit used in the Quote should not have Organisational units for the resource roles added in the Cost Price List of the Organization unit.
Share Story :
Call Workflow directly from a button using Ribbon Workbench
Introduction: In this blog we will demonstrate how to call a workflow directly from a button without any custom JavaScript code. Implementation: Step 1: Create the required workflow. In this example i have created a simple workflow on the opportunity and remember to select the “As an on-demand process” option. Step 2: After the workflow is created store the GUID of the workflow. To get the GUID select the workflow and copy down the ID from the URL as shown in the below image. Step 3: Now create the custom button on Opportunity entity using Ribbon Workbench. Step 4: Create a new Command and click on “Add Action>JavaScript Action” as shown in the image. Step 5: In the library option write the following “/_static/_forms/form.js” and in the Function Name field “Mscrm.FormAction.launchOnDemandWorkflowForm“. Then as shown in the above image add two Parameters as follows: Crm Parameter = PrimaryEntityTypeCode String Parameter = “GUID of the Workflow”. Step 6: For the final step add the command to the newly created button by simply selecting it from the drop down in the properties section. Step 7: Now when we click on the button that we created we get the following message. On clicking OK the workflow will run. This is a helpful as it can be done quickly without using any custom code.
Share Story :
Invoice Schedule generation on Quote Lines – D365 PSA
Overview: Let’s say you have a Quote which has Quote Lines and then you generate the Invoice schedule for your Time & Materials project. What decides the number of Invoice Schedules to be generated for a Quote Line record? Let’s review. Quote Lines: Now, I have a Quote Line which has Invoicing Schedule from 28th May 2018 to 6th August 2018. How did this come to be? The reason is as below: 1. The Invoice Schedule is based on Quote’s Requested Delivery Date which is 10th August 2018. 2. Now, my Invoice Frequency is weekly. 3. On top of that, my Invoice is set to generate on Monday of the week 4. And finally, since 6th August is the last Monday before the 10th August 2018, the Invoices should be generated up until then! Hence, the last Invoice will be generated on 6th August 2018 according to Quote’s Requested Delivery Date.
Share Story :
Store Coupon Code in Dynamics 365 Finance and Operations
Introduction: In this blog we will see how to apply coupon discount on MPOS (Store) in Dynamics 365 for Finance and Operations. Steps: Step 1: Create Bar code Mask Character for Coupon Code. Step 2: Create a New Barcode Mask set up. Keep the type as Coupon. Step 3: Create Bar Code for Coupon. Assign the Mask ID which was created in step 2. Step 4: Create Number Sequence for Coupon Code ID and Coupon Number. Step 5: Set the Retail Parameters for Coupon. Assign the Mask ID that was created. Step 6: Create a New Discount. Mention the discount Price, Products in Lines, Price group, Valid Discount Account and enable coupon code required. Step 7: Create a new Coupon. Mention the usage limit, usage type, associate discount to the coupon, Create a new line for coupon. Activate the Coupon. The Bar code will be generated. Make a note of the Bar code. This is how you set up Coupon Code on Stores in Dynamics 365 for Finance and Operations. Run Jobs and flow the discount to the store. To Redeem the Store Coupon Code: Step1: Scan the product that is under Discount. Step2: Scan the Barcode or Manually inter the Barcode. Step 3: The discount will be applied to the product along with the discount name Step4: Make Payment.