Category Archives: Blog
How to ensure we open Project Information form when the Lead is Qualified in D365 PSA
I tried many ways to figure out why the “Project Information” form is not opening in Opportunity when a lead is Qualified in D365 PSA. I tried manually opening the “Project Information” form on Opportunity, but, it turns back to default “Opportunity” form. I figured out lastly that the tweak was with one of the fields in Lead form. To open the Project information form on opportunity, the “Order Type” value should be “Work based” this ensures the lead is for Project Service. If we select “Service-Maintenance Based”, it opens “Field Service Information” form on opportunity. Lastly, “Item Based” open the default “Opportunity” Form.
Share Story :
Power BI Tiles Embedded in Dynamics 365 Dashboards
Introduction: In this article, we are going to learn how to embed Power BI Tiles in your Dynamics 365 / CRM Dashboards. Steps: Sign-in to Microsoft Dynamics 365 as a user with the system administrator security role Go to Settings > Administration > System Settings. On the Reporting tab in the Allow Power BI visualization embedding option, select Yes to enable or No to disable. Click OK. Create Dashboards in Power BI and publish it. Then Create or edit a Dashboard in CRM. And insert Power BI Tile in TAB. Select a Power BI dashboard and a tile. Complete the dashboard, Save, and close. You are all set!
Share Story :
Converting a Database from NAV 2016 to NAV 2017 in Microsoft Dynamics NAV
Introduction: To upgrade the database to NAV 2017, following main steps must be completed. Convert the database Upgrade the Application code Upgrade the Data This blog gives a steps wise procedure to covert the database from NAV 2016 to NAV 2017 Pre-requisites: Microsoft Dynamics NAV 2016 Microsoft Dynamics NAV 2017 Microsoft SQL Server Management Studio(SSMS) Steps Backup NAV 2016 Database Open SSMS and connect to the SQL server. Expand the Database to NAV 2016 Database i.e ‘Demo Database (9-0)’. Navigate to Task > Back up. Click on Add then Navigate the path where you want to store the back up(.bak) file by clicking on the Assit edit button. Specify the file name then click on OK. A pop up displays after the back up of NAV 2016 database is taken. Clear all Microsoft Dynamics NAV Server instance records from the dbo.ServerInstance table in the database on SQL Server.You can do this by using SQL Server Management Studio to open and clear the table. Upload 2017 Licence file in NAV 2016 Database ‘Demo Database (9-0)’ Navigate to File > Database > Alter. In the Integration tab, Enable Save licence file and select the licence file of NAV 2017 then click on OK. Alternatively, Select the Tools menu > Licence Information then Upload. Restart the NAV Server Instance in the Microsoft Dynamics NAV admin. Uninstall NAV 2016 and Install NAV 2017. Convert the NAV 2016 Database to NAV 2017. Open Microsoft Dynamics NAV 2017 Development Environment, select the NAV 2016 database i.e ‘Demo Database (9-0) and click on OK. Till will prompt to convert the database dialogue box. Click on OK. A confirmation dialogue box pops up. Click on OK. This will take few minutes. A message pops up once the database is converted. Connect the Server Instance to the converted database Open Microsoft Dynamics NAV Administration, Click on Add Instance. Specify a Server name and unique port numbers then click on OK. An instance is created, open the instance, click on edit, expand the Database tab. In the Database Name specify the converted database name then Restart the instance. In the below screenshot NAV90 is the server instance name for the converted database. Open the converted database in the NAV 2017 Development Environment. Navigate to the Tools menu > Options. Specify the Server Instance name, Server Port and the Management port. Click on OK. Make sure the user login has access to the Converted database. Open SSMS, expand Logins and select the user. Under the ‘Select a page’ tab, Select User Mapping, enable map for the converted database and master database and enable db_owner then click on OK Under master database, expand the Tables, select the Dbo.$ndo$srvproperty then properties. elect the Permissions then select the user and grant Select permission to the user. Restart the Server instance after applying the above permissions. Run the schema synchronization to initialize the database. Open the Microsoft Dynamics NAV 2017 Development Environment, navigate to Tools menu then click on Sync. Schema For All Tables > With Validation. This will pop up a dialogue box, click on Yes. After synchronizations, navigate to Tools menu > Build Server Application Objects. Building the application makes sure that the database is also synchronized in the SQL server and compiled. Building the application may lead to compilation errors which needs to be fixed. Follow the below link to fix .NET variable errors refer this link Build the Application again until the Build is successful. Conclusion: The database is successfully converted to NAV 2017. The next step is Upgrade the Application code for which you can refer this link
Share Story :
Procedure to display the Amount in Words in a report of Microsoft Dynamics NAV
Introduction: In this article, I will be explaining the procedure to display amount in words in a report of Microsoft Dynamics NAV. Pre-Requisite: Microsoft Dynamics NAV 2016 Procedure: Step 1: Declare the following variables in C/AL Globals: ‘RepCheck’ is a variable of DataType ‘Report’ and Subtype ‘Check’ which is Report 1401. ‘NoText’ is a variable of DataType ‘Text’ with Dimensions Value as 2 which is set by navigating to the properties of the ‘NoText’ variable. ‘AmountInWords’ is a variable of DataType ‘Text’ which will store the final result of the amount in words. Step 2: Now in my custom purchase order report, I want to display the Amount to Vendor in Words. So in the Purchase Header – OnAfterGetRecord() trigger, I have put the following code: I have declared a variable ‘AmountVendor’ of DataType ‘Decimal’ in which I will be storing the ‘Amount to Vendor’. I have rounded off the Amount to 2 decimal places. AmountVendor:= ROUND(“Purchase Header”.”Amount to Vendor”,0.01); Now add the following code to display the Amount in Words: RepCheck.InitTextVariable; RepCheck.FormatNoText(NoText,AmountVendor,”Purchase Header”.”Currency Code”); AmountInWords:=NoText[1]; So the complete code looks like below: Step 3: Now get the variable ‘AmountInWords’ under the DataSource ‘Purchase Header’ in the report and display it in the design layout of the report. After saving and running the report the Amount to Vendor will be displayed in Words as shown below: Conclusion: Thus using the above procedure and the Report 1401 i.e. ‘Check’ report, the amount in words can be easily displayed in any report of Microsoft Dynamics NAV 2016.
Share Story :
Embed D365 Field Service Views in Dashboard of D365 Online Portal
D365 Field Service is about something other than having the correct instruments for the activity regardless of where you are. It’s tied in with having the option to associate with your most significant resource, your clients. With Dynamics 365 and field administration the board arrangements from PowerObjects, you can make a client support story that traverses different channels, amplifies your workers’ effectiveness, and surpasses client desires. Accomplish total hierarchical arrangement with Sales, Marketing, Customer Service, and Field Service groups for client records. Deal with all gear parts for complete perceivability into guarantee and administration understandings; all out income and related expenses; and review history. Field Service Management platform providing enterprise companies with tools to streamline their business processes – from real-time mobility across every major device, to routing and workflow automation. Introduction: This blog explains how to embed D365 Field Service Views in Dashboard of D365 Online Portal. Steps of Implementation: Create a new Entity List in D365 Field Service. Set key on Entity list as highlighted below. Add View to Web Template as shown below. Note: You can refer blog how to configure Dashboards in D365 Online Portals by referring to link – https://www.cloudfronts.com/embedding-d365-field-service-charts-d365-online-portals/ Conclusion: Above description in blog helps users to embed D365 Field Service Views in Dashboard of D365 Online Portal.
Share Story :
Decompiling the code from the plugin dlls
Introduction: There can be a possibility that we lost our plugin code and dlls are already present in Dynamics CRM and we want to extract the code from Dynamic CRM. We don’t have a code backup and we are supposed to make changes in the code as we have some errors in plugin or we need to reconstruct the code. In such situation, we can follow the below steps to decompile the code. We can make use of XRM Tool Box and some tool to decompile dll. Steps: Steps to be followed are given below: Open XRM Tool Box–> Assembly Recovery Tool–> Select the plugin–> Click on Export to disk Dll will be downloaded in the local drive Download the code Decompile tool. Link is given below https://www.jetbrains.com/decompiler/ After download Open the Decompile Toolà Open the dll from local drive Your code will be decompiled as shown below Only issue is we must disable the previous plugin and register the plugin assembly and steps again. Now we can make changes in the code. Conclusion: Retrieving the codes from dynamics CRM dlls can be done by following the above easy steps.
Share Story :
Error Resolution of Web client reply address for SSO in Dynamics NAV
Introduction: A Single Sign-on (SSO) user experience is achieved between Microsoft Dynamics NAV and the Office 365 Web Applications where the User is authenticated using Office 356 credentials to access NAV Windows client and Webclient. Error: After configuration of SSO in NAV, the Windows client configures SSO successfully but the Web client throws an error. AADSTS50011: The reply address http://localhost/DynamicsNAV100/WebClient/SignIn.aspx?ReturnUrl=%2fDynamicsNAV100%2fWebClient%2f does not match the reply addresses configured for the application: http://localhost/DynamicsNAV100/WebClient/. Pre-requisites: Microsoft Dynamics NAV 2017 Internet Information Services(IIS) Resolution of the Error: Browse to Internet Information Service(IIS) Select on Microsoft Dynamics NAV, then click on Bindings Click on Add. In the Type Field select ‘https’. In the SLL certificate, select the self-signed certificate generated from the drop down. Click on Restart. Click on Browse link of the Web server Instance and save the url. Configure SSO for Dynamics NAV and in the below command Set-NavSingleSignOnWithOffice365 -AuthenticationEmail “YourAuthenticationEmail” -NavServerInstance “YourNAVServerInstance” -NavUser “YourNavUser” -NavWebAddress “YourNavWebClientAddress” -NavServerCertificateThumbprint “YourNAVServerCertificateThumbprint” -NavWebServerInstanceName “YourNavWebServerInstanceName copy the url saved in the “YourNavWebClientAddress” address. After Binding, Enter your Office 365 credentials and sign in. SSO works successfully for Web client after Binding of the SLL certificate.
Share Story :
Accessing Business Process Flow as Entities – D365 July 2017 Update
Overview: Another new feature announced in the Dynamics 365 July 2017 Update is that the Business Process Flows are now available as entities in D365! That means, you can access them like entities from SiteMap and see the records of their respective entities in an Entity View like you would do with other entities. Turning BPF Entity customization support: Since this is in preview for Dynamics 365 July 2017 Update, you’ll need to turn it on from the Previews section under Settings > Administration. BPF as Entity in Solution: Just like any other entity, the Process appears like an entity. Accessing BPF as entity records: Once this is enabled from the Previews section, you’ll see the entities in the default Sales area as shown below: Business Process Flow as records: Now, so far you’ve seen records having the same business process flows and once you open them, you’d see which records were in which stage. This view gives you which records use a particular Business Process Flow and where has the record reached in the flow. In the above view, each record will open the record of their respective entities. Ex. Jake Cormick is in Process stage and Process stage belongs to Opportunity entity. So opening this record will open the Opportunity record as shown below: Quite Simple! Hope this was helpful.
Share Story :
CRM – Issue with retrieving large document body using Fetch XML
Problem Statement: When we want to export Attachments from CRM (both Notes and Email attachments), we can do this using a Console Application where we read the documentbody from CRM using Fetch XML, and then we convert that to bytes and export to a local folder (or any target system) This Method is proper and should work properly, which it doss most of the time, but fails on some occasions. We have observed an issue, where we were not able to open the downloaded document. It would give below error: “There was an error opening the document. The file is damaged and could not be repaired“. This was the code that we used: private static void ExportEmailAttachments() { string fetchXML = @”<fetch version=’1.0′ output-format=’xml-platform’ mapping=’logical’ distinct=’true’> <entity name=’activitymimeattachment’> <attribute name=’filename’ /> <attribute name=’body’ /> <filter type=’and’> <condition attribute=’filesize’ operator=’gt’ value=’0′ /> <condition attribute=’filename’ operator=’not-null’ /> <link-entity name=’email’ from=’activityid’ to=’objectid’ alias=’ac’> <attribute name=’subject’ /> <attribute name=’regardingobjectid’ /> <attribute name=’activity /> <order attribute=’subject’ descending=’false’ /> <filter type=’and’> <condition attribute=’regardingobjectid’ operator=’not-null’ /> <condition attribute=’modifiedon’ operator=’last-x-months’ value=’3′ /> >”; string FolderPath = @”D:\Attachments\”; EntityCollection allEmailAttachments = crmSvc.RetrieveMultiple(new FetchExpression(fetchXML)); foreach (Entity mimeAttachment in allEmailAttachments.Entities) { string fileName = mimeAttachment.GetAttributeValue<string>(“filename”); if (fileName.EndsWith(“pdf”, StringComparison.OrdinalIgnoreCase)) { string documentBody = mimeAttachment.GetAttributeValue<string>(“body”); byte[] documentBytes = Convert.FromBase64String(documentBody); File.WriteAllBytes(FolderPath + fileName, documentBytes); } } } Solution: We triel lot of methods and various ways to solve, but we found the document was not opening properly. This is what we observed: The issue does not happen with all the files It only happens with large files Observed that the document body from CRM is always exactly 2000 characters From the above, we got to know that CRM is not sending all the document body in the Fetch XML response. We were able to solve the above by removing the “distinct=’true’“. We don’t know how it affects the query, but this was the resolution which worked for us. It is strange, but this fixed the issue. This is the final Fetch XML. string fetchXML = @”<fetch version=’1.0′ output-format=’xml-platform’ mapping=’logical’ distinct=’true’> <entity name=’activitymimeattachment’> <attribute name=’filename’ /> <attribute name=’body’ /> <filter type=’and’> <condition attribute=’filesize’ operator=’gt’ value=’0′ /> <condition attribute=’filename’ operator=’not-null’ /> <link-entity name=’email’ from=’activityid’ to=’objectid’ alias=’ac’> <attribute name=’subject’ /> <attribute name=’regardingobjectid’ /> <attribute name=’activity /> <order attribute=’subject’ descending=’false’ /> <filter type=’and’> <condition attribute=’regardingobjectid’ operator=’not-null’ /> <condition attribute=’modifiedon’ operator=’last-x-months’ value=’3′ /> “; Anyone, who can tell why this is the behavior, please feel free to comment below.
Share Story :
Spam Filter Policy in Exchange Online.
Introduction: Spam is an irrelevant or unsolicited messages sent over the Internet, basic spam filter settings in Exchange Online include selecting the action to take on messages identified as spam. Spam-filter policy settings are applied to inbound messages only. You can edit the default spam filter policy to configure your company-wide spam filter settings and create custom spam filter policies and apply them to domains in your organization. Administrator needs to have Organization Management and Hygiene Management role group assigned to them. In EAC, go to Protection > Spam filter. You can either edit the default settings or create a custom spam filter by click on +. On Spam and Bulk action page, under Spam and High confidence spam, select the action to take for incoming spam email. By default, move messages to Junk Email folder is selected. In this case, we are selecting Quarantine Message. Quarantine Message – Sends the message to quarantine instead of to the intended recipients. When you select quarantine message, In Retain spam for (days) specify the number of days during which the spam message will be quarantined. On the Block & Allow list page, you can specify entries, such as senders or domains. Message will always be marked as spam if it is in block list and message will always be delivered if sender is in allow list. On the International Spam page, you can filter email messages written in specific languages, or sent from specific countries or regions. You can configure up to 86 different languages and 250 different regions. On the Advanced Optionspage, you can choose On, Off, or Test for each advanced spam filtering option. If you select Test, no action is taken on messages that meet the spam filter criteria however, messages can be tagged with an X-header before they are delivered to the recipient. If you select Test for any of the advanced options, you can configure the following test mode settings when a match is made to a test-enabled option: None – Take no test mode action on the message. This is the default. Add the default test X-header text– Checking this option sends the message to the recipients but adds a X-header to the message that identifies it as having matched a specific advanced spam filtering option. Send a Bcc message to this address– Checking this option sends a Bcc of the message to the email address you provide. Quarantine – If you have selected to move the spam messages in quarantine then you review spam items in quarantine, messages can be released from there either to selected users or all the users. If an item was incorrectly reported as spam, you can also report it as a false positive. If reported as a false positive and it’s a spam-quarantined message, it will also be reported to the Microsoft Spam Analysis Team, who will evaluate and analyse the message. In the below screen, you can see test spam mails and the message status in the right pane. You can review & release the message as an administrator from EAC by selecting the message and clicking on the Release Message icon. If there are more than 500 messages, then you can have an advanced search to find the message. You can use several parameters to find the message, for targeted search for a specific message you can select Message ID. Message ID – If you discover that the message was sent to the quarantine you can then easily find this message in the quarantine by specifying its Message ID. For example, if a specific message is sent by, or intended for, a user in your organization, but it never reaches its destination, you can search for the message using the message trace feature. If you discover that the message was sent to the quarantine you can then easily find this message in the quarantine by specifying its Message ID. Message trace: As an administrator, you can find out what happened to an email message by running a message trace in the Exchange admin center (EAC). Enter the Data range or select custom to specify the search dates, and then click Search. From the Message trace results, select the message and click Edit. You will able to see the details of the message, status, message ID. Hence, you can get the message ID from message trace feature in Exchange Online and can do an advanced search in Quarantine. You can also analyse the message header from Microsoft remote connectivity analyser URL: https://testconnectivity.microsoft.com/?tabid=mha. Message Header – Message headers provide a list of details about the message, such as who sent it, the software used to compose it, and the email servers that it passed through on its way to the recipient. You can find message header in quarantine message, click on the message for which you want the message header. Copy the message header and paste it under message header analyser in Microsoft remote connectivity analyser. For end users to access spam-quarantined message and release message. Go to following URL: https://admin.protection.outlook.com/quarantine, provide Office 365 credentials and sign in. After you’ve signed in and been authenticated, you’ll be directed to the end user spam quarantine. User can view the details of the message and release messages from user quarantine. Configure end-user spam notification. Administrator can also configure spam notification for end-users. So that users get the notifications of spam quarantined message. Go to EAC > Protection > Spam Filter. Select the Spam filter policy for which you want to configure end-user spam notification. On configuration page, select the days in the range of 1-15 and tick on Enable end-user spam notifications. User will get a mail notification for the same. Conclusion: By this way, you can apply a default spam filter policy or create a custom policy for your organization which will help to protect organization from spam mails.