Latest Microsoft Dynamics 365 Blogs | CloudFronts - Page 115

Set up Dynamics 365 connection in Microsoft Social Engagement

Introduction: This blog explains how to Set up Dynamics 365 connection in Microsoft Social Engagement. Steps to be followed: Go to settings Under connections tab go to Microsoft Dynamics 365. Click in + to create connection and then click on Accept. Select the connection type. You can click on CHECK INSTANCES it will load the instances. Or you can enter the URL of the instance in Dynamics 365 instance URL box. Finally give name to your connection. If you want to make this as your default connection. click ON the set as default option.       Save.Note:  You can only connect to those instances who are in same office 365 tenant. 

Share Story :

Voice of the Customer failed to install

Introduction: Many people face issues in installing Voice of Customer solution on v9 environment and trying repeatedly to install the solution but failed. Below is the error that usually people get. How to install? Installing Voice of Customer is an easy process. If you are facing some error, you might be doing something wrong. The steps on how you can install Voice of Customer solution are listed below. The Voice of the Customer for Dynamics 365 solution can be installed from Dynamics 365 Administration Center. It is compatible with Dynamics 365 version 8.2 and later. Sign in to your Dynamics 365 solution as administrator. Go to the Dynamics 365 Administration Center, and then select the Applications Select the application row titled Voice Of The Customer, and then select Manage. From the Dynamics 365 Instancedrop-down list, select the instance where you want to install the solution. Accept the license terms. Select Install. By following the above steps you can see the solution gets configured properly. Note: You must be a tenant administrator to install the solution. The list of instances only displays the organizations with Dynamics 365 version 8.2.

Share Story :

Scribe Insight AX as a Web Service Find Block issue

Introduction: If we need to look up for any value from AX then we do it by using a Find Block in Scribe Insight Eg: BasicHttpBinding_ItemService_find Every Find block has 2 components and they are, Query Criteria – Used for specifying the Table Name, Field Name and the Fields Value for finding the record Return Value – Used to fetch the needed value back If for any reason either of the component is missing, then you cannot lookup in AX and search the required value back. Consider the following Scenario where we have a SalesOrderService Find block with only the Query Criteria component but without the Return Value component. Following are the steps to resolve the issue. Steps: Go to your AX Web Service Connection and click on Edit Click on change connection Proceed further by clicking OK and then click on your connection and click on Edit Select the Configuration Tab on top Select the Find Block under Method that is not showing the required Return Value. Here that would be the BasicHttpBinding_SalesOrderService_find Method. Make sure that the value of QueryCriteria_CriteriaElement and ReturnValue_SalesTable both are 1. Note: If you want to look up with additional parameters then increase the QueryCriteria value. Validate your Web Service Connection and restart your DTS Your issue should be resolved and the Return Values should be visible Conclusion Now you should successfully be able to look up and find a value from any of the Return Values in the Sales Order successfully.

Share Story :

Using Variable Connector In TIBCO Cloud Integration

Posted On July 10, 2018 by Admin Posted in Tagged in , ,

Introduction: The Variable Connector, created as part of the Scribe Labs initiative, adds a much-needed feature to TIBCO Cloud Integration i.e. to store and retrieve variables in a Scribe Map. However, keep in mind, these variables cannot be shared between maps or solutions. Steps For Installation: To begin using the connector, install it from the Scribe Marketplace. Go to Marketplace. Search for ‘Variables’. Select Scribe Labs – Variables and click ‘Install’. The Connector will install for your Organisation in a few minutes. Steps To Create A Variable Connection: From the ‘More’ dropdown menu, click on ‘Connections’. Click on the plus sign (+) on the right of the page to add a new connection. Select your Connector Type, input the name of the variable connection and select the Agent. Click OK. Steps to use in a Map: Add the variable connection to your map. To store a value in the variable, select the Upsert block. In the General Tab, select the data type of the variable you want to store from the Entity dropdown menu. In the Fields Tab, input the name of the variable in the ‘name’ field and the data you want to store in the variable in the ‘val’ field. Click OK. To retrieve a variable, use the Lookup Block from the Variable Connection. Select the data type of the variable in the Entity tab. In the Lookup Criteria tab, lookup the name of the variable you had set. Select the ‘val’ field in the Field List tab. Click OK. You can now use the data stored in the ‘val’ field of the variable in your map. Conclusion: I hope this helps understand the usage of the Variable Connector in TIBCO Cloud Integration. This feature is very useful when one needs the functionality of a variable while using TIBCO Cloud Integration.

Share Story :

Generating Azure Blob file SAS key using Azure SDK

With a demand for concrete strategy to determine how applications, workloads & data remain available during downtime organizations need a disaster recovery & business continuity strategy which is given by Microsoft azure. Azure BCDR covers people, communication, transportation that includes physical facilities & information technology. Even the smallest of the outage can prove to be a major setback for your business and with a business continuity plan and a disaster recovery system all your major information technology systems can be well saved without the expense of another secondary infrastructure. With the implementation of BCDR strategy the workload and applications of the organization is kept up and running in the occurrence of any outage. It is an effective and cloud based data recovery solution that is simple to implement and cost effective. Why do we need SAS key for Blob File? Azure Blob is massively scalable object storage for unstructured data. Blob Storage can handle all your unstructured data, scaling up or down as your needs change. You no longer have to manage it You only pay for what you use and you save money over on-premises storage options. A shared access signature (SAS) provides you with a way to grant limited access to objects in your storage account to other clients, without exposing your account key. A SAS gives you granular control over the type of access you grant to clients who have the SAS, including: The interval over which the SAS is valid, including the start time and the expiry time. The permissions granted by the SAS. For example, a SAS for a blob might grant read and write permissions to that blob, but not delete permissions. An optional IP address or range of IP addresses from which Azure Storage will accept the SAS. For example, you might specify a range of IP addresses belonging to your organization. The protocol over which Azure Storage will accept the SAS. You can use this optional parameter to restrict access to clients using HTTPS. Using SDK to Generate SAS key from C-Sharp code: You need to include the Azure SDK DLLs: You can get the DLLs from Nuget package manager as well. Refer below names to search in Nuget: WindowsAzure.ConfigurationManager WindowsAzure.Storage The first step is to connect to the Blob storage using Connection String. You can add the Blob connection string in the App.config and use that in code to create connection like below: Your connection string should be of the format: The below code creates the connection: //Parse the connection string and return a reference to the storage account. CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting(“StorageConnectionString”)); //Create the blob client object. CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); Once connection is created, we can retrieve the blob container which contains the blob: We can use the container reference, blob file name and the connection to create the SAS key like below: I have uploaded the entire code to my Github as well for reference. Why we can’t use Azure Storage Explorer tool to do this: The Azure storage explorer also has the option to connect to your blob and generate SAS key with clean User Interface. But recently for last 2-3 months, I am facing issues with generating Key with Azure Storage Explorer. This is the reason I implemented this code to remove dependency on the tool.

Share Story :

D365 PSA: Impact of Project Closure on Bookings

Introduction: Let’s look on a high-level of what Project Closure has impact on the Bookings on the Schedule Board. Now, while working in D365 PSA, I encountered that I needed to mark a Project as Completed even when I had some bookings in the future. This led me to notice its effect on the Bookings (Bookable Resource Bookings records) I’ve created which also span a little into the future. Project Booking for a Resource: Now, let’s see the below scenario, Brian is booked on Archer Pens Project according to the following 13 and 5 hours (8 hours) on 9th July 2018 10 hours on Monday, 10th July 2018 10 hours on Tuesday, 11th July 2018 5 hours on 12th July 2018 9th July 2018- 10th July 2018- 11th July 2018- 12th July 2018- Now, if I mark the Project as completed today i.e. 10th July 2018 and the End Date being tomorrow i.e. 11thJuly 2018. Let’s see what happens – I marked the Project as Completed (went past the Complete stage in the Business Process Flow) as seen below – Deletion of Bookings: Once I mark the Project as Completed, the Bookings for today, 10th July and all the future Bookings will be deleted. Only historic Bookings before today will remain in the system. If I check back, 10th July will have no Bookings 11th July will have no Bookings And 12th July too will have no Bookings anymore What remains is only for 9th July because it is before the date I closed the Project Note: I also tried to observe if today’s bookings have any end time before I actually Closed the Project. Meaning, a booking ending at 10 am and I Close the Project later at 12pm, it would still delete today’s Booking for the day. So, close Projects carefully if you feel you need to close them in advance, just in case.

Share Story :

Security role of user after Business Unit Change

Introduction: Have you ever faced simple issue of security role after changing the business unit? Yes, you will. You will not be able to identify which security role was assign to a user whose Business unit has been changed. Description: This is a simple thing but if we have not noted down the security role of a user, we will not be able to identify the previous security role a user, as all the security roles gets removed. Solution: If audit history for user is enabled. You can easily identify the user who has what security role. So, as you can see in the above screen shot what security role this user has been assigned. Conclusion: Hope this help, while changing BU so, this help to remember the user security role.

Share Story :

Calendar Rule Entity not supported in Power BI

Posted On July 4, 2018 by Admin Posted in

In Power BI, Dynamics 365 is connected using its Web API i.e [organization URI]/api/data/v9.0 Dynamics 365 Web API does not support GET Request for calendarrule entity; because of which Power BI cannot retrieve calendar rule entity details. You can verify by browsing to the URL: [organization URI]/api/data/v9.0/calendarrules Please refer to the screen capture below for the error details in browser. Also, you will not be able to load the calendar rule entity in Power BI. Below screen capture displays an error received in Power BI.

Share Story :

How to send Notes to the Customer from a Custom Page using an Action button in Dynamics NAV

Business central from Dynamics 365 is an ERP solution from Microsoft which is designed to understand your business needs and change it for better.  Dynamics 365 business central development is a business management solution that is extremely easy to use and implement across several domains in your organization. Business central is the cloud version of the Dynamics NAV Platform. Which is being implemented by many companies across various industries in almost every part of the world. This cloud based ERP is designed for small and medium businesses which allows you to focus on your core business needs and strategies without having to invest on any infrastructure and installation. Implementation of Dynamic 365 business central to your organization helps you to connect your business and make smarter decisions. Introduction: The requirement is explained in the Scenario below: Scenario: A Custom page called Collection Module-Per User has details of Customers Transaction. This Collection Per User page is a List page. The User will select the line and Click on Notes. Notes will written and saved. The user will Click on the Action button Send Notes to Customer.TheNotes from this Custom page should be sent to standard page Customer (Page 18) Notes in Microsoft Dynamics NAV: Notes are like reminders or notification which is ideally used for Customers,Vendors or Items.  Notes are saved in binary format in a field Note of Blob data type in the table Record Link  (2000000068) Read notes : The “Record ID” of the record using Record Reference is used to filter the Record Link table and convert the data stored in the Note field in Record Link table to text. Write Notes: The “Record ID” of the record using Record Reference is used to filter the Record Link table and convert the text to bytes and store in the Note field Pre-requisites: Microsoft Dynamics NAV 2017 Steps: Functionality: 1. Select the line in the Custom page and click on Notes. Type in your Notes and Save it. 2. Click on Send Notes to Customer. 3. Open the Customer page and filter the Customer No to which Notes are sent and Open Notes. Customization: 1. Create an Action button Send Notes to Customer and create global variables as below image: 2. The Custom Table has primary key as No. so first GET the primary key and assign Customer No. to a variable Rec_CustNo ReadText: Rec_CF_CollectionModuleTempTable.GET(No); Rec_CustNo:=Rec_CF_CollectionModuleTempTable.CustNo; Set the Recfilter and use the Recorf reference to GETTABLE. Rec_CF_CollectionModuleTempTable.SETRECFILTER; CLEAR(RecRef); RecRef.GETTABLE(Rec_CF_CollectionModuleTempTable); RecRef.FINDFIRST; 3. SETRANGE with the Record Link’s Table Record ID and Record referrence RECORDID 4. Convert the blob field into text by using InStream and Use a BigText variable to read the Stream. RecordLink.RESET; RecordLink.SETCURRENTKEY(“Record ID”); RecordLink.SETRANGE(“Record ID”,RecRef.RECORDID); IF RecordLink.FINDFIRST THEN BEGIN RecordLink.CALCFIELDS(Note); IF RecordLink.Note.HASVALUE THEN BEGIN CLEAR(NoteText); RecordLink.Note.CREATEINSTREAM(Stream); NoteText.READ(Stream); NoteText.GETSUBTEXT(NoteText,2); END; END; Write Text: 1. GET the Customer No. of the Cuatomer Table and Use Record refernce to GETTABLE Customer. Use SetText function to write the text to bytes and store it in Note field in Record Link Customer.GET(Rec_CustNo); RecRef.GETTABLE(Customer); RecordLink.INIT; RecordLink.”Link ID”:=0; RecordLink.”Record ID”:=RecRef.RECORDID; RecordLink.URL1:=GETURL(CLIENTTYPE::Windows,COMPANYNAME,OBJECTTYPE::Page,PAGE::”Customer”); RecordLink.Type:=RecordLink.Type::Note; RecordLink.Created:=CURRENTDATETIME; RecordLink.”User ID”:=USERID; RecordLink.Company:=COMPANYNAME; RecordLink.Notify:=TRUE; SetText(NoteText,RecordLink); RecordLink.INSERT; The Complete Code : Send Notes to Customer – OnAction() Rec_CF_CollectionModuleTempTable.GET(No); Rec_CustNo:=Rec_CF_CollectionModuleTempTable.CustNo; //MESSAGE(‘%1 no’,Rec_CF_CollectionModuleTempTable.CustNo); Rec_CF_CollectionModuleTempTable.SETRECFILTER; CLEAR(RecRef); RecRef.GETTABLE(Rec_CF_CollectionModuleTempTable); RecRef.FINDFIRST; RecordLink.RESET; RecordLink.SETCURRENTKEY(“Record ID”); RecordLink.SETRANGE(“Record ID”,RecRef.RECORDID); IF RecordLink.FINDFIRST THEN BEGIN REPEAT RecordLink.CALCFIELDS(Note); IF RecordLink.Note.HASVALUE THEN BEGIN CLEAR(NoteText); RecordLink.Note.CREATEINSTREAM(Stream); NoteText.READ(Stream); NoteText.GETSUBTEXT(NoteText,2); MESSAGE(FORMAT(NoteText)); END; UNTIL RecordLink.NEXT=0; END; Customer.GET(Rec_CustNo); RecRef.GETTABLE(Customer); RecordLink.INIT; RecordLink.”Link ID”:=0; RecordLink.”Record ID”:=RecRef.RECORDID; RecordLink.URL1:=GETURL(CLIENTTYPE::Windows,COMPANYNAME,OBJECTTYPE::Page,PAGE::”Customer”); RecordLink.Type:=RecordLink.Type::Note; RecordLink.Created:=CURRENTDATETIME; RecordLink.”User ID”:=USERID; RecordLink.Company:=COMPANYNAME; RecordLink.Notify:=TRUE; SetText(NoteText,RecordLink); RecordLink.INSERT; PROCEDURE SetText@1000000002(NoteText@1000000000 : BigText;VAR RecordLink@1000000001 : Record 2000000068); VAR s@1000000002 : BigText; Ostr@1000000003 : OutStream; lf@1000000004 : Text; c1@1000000005 : Char; c2@1000000006 : Char; x@1000000007 : Integer; y@1000000008 : Integer; i@1000000009 : Integer; SystemUTF8Encoder@1000000011 : DotNet “‘mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089’.System.Text.UTF8Encoding”; SystemByteArray@1000000010 : DotNet “‘mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089’.System.Array”; BEGIN s := NoteText; SystemUTF8Encoder := SystemUTF8Encoder.UTF8Encoding; SystemByteArray := SystemUTF8Encoder.GetBytes(s); RecordLink.Note.CREATEOUTSTREAM(Ostr); x := SystemByteArray.Length DIV 128; IF x > 1 THEN y := SystemByteArray.Length – 128 * (x – 1) ELSE y := SystemByteArray.Length; c1 := y; Ostr.WRITE(c1); IF x > 0 THEN BEGIN c2 := x; Ostr.WRITE(c2); END; FOR i := 0 TO SystemByteArray.Length – 1 DO BEGIN c1 := SystemByteArray.GetValue(i); Ostr.WRITE(c1); END; END; LOCAL PROCEDURE HtmlEncode@20(InText@1000 : Text[1024]) : Text[1024]; VAR SystemWebHttpUtility@1001 : DotNet “‘System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a’.System.Web.HttpUtility”; BEGIN SystemWebHttpUtility := SystemWebHttpUtility.HttpUtility; EXIT(SystemWebHttpUtility.HtmlEncode(InText)); END;

Share Story :

Xrm.Device.pickFile in D365 v9.0

Introduction: In this blog we will be showing an example to attach the uploaded files to notes using the Xrm.Device.pickFile function in unified Interface in D365 v9.0 Implementation: Step 1: In this example we will create a button on the Contacts entity and we write a JavaScript function to trigger on button click. In Ribbon Workbench after creating a button we create a command as shown below and add the command on the button. Step 2: On clicking on the Upload button a dialog box opens and we can select the file we want, this file will then be attached in the notes section of the particular record. The code is shown below. The name of the Note created, name of the attachment can be changed as required by modifying the code. Code: var crmCustomization = { PickFile: function () { Xrm.Device.pickFile().then( function (result) { var dataRecieved = result; var Content = dataRecieved[0].fileContent; var FileSize = dataRecieved[0].fileSize; var FileName = dataRecieved[0].fileName; var MimeType = dataRecieved[0].mimeType; var recordId = Xrm.Page.data.entity._entityId.guid; crmCustomization.UploadToNotes(FileName, MimeType, Content, recordId); }, function (error) { alert(error.message); }); }, UploadToNotes: function (FileName, MimeType, Content, recordId) { var note = Object(); note[“notetext”] = “New Attachment” note[“subject”] = “Uploaded File”; note[“filename”] = FileName; note[“mimetype”] = MimeType; note[“objectid_contact@odata.bind”] = “/contacts(” + recordId + “)”; note[“documentbody”] = Content; $.ajax({ type: “POST”, contentType: “application/json; charset=utf-8”, datatype: “json”, url: Xrm.Page.context.getClientUrl() + “/api/data/v9.0/annotations”, async: true, data: JSON.stringify(note), beforeSend: function (XMLHttpRequest) { XMLHttpRequest.setRequestHeader(“Accept”, “application/json”); XMLHttpRequest.setRequestHeader(“OData-MaxVersion”, “4.0”); XMLHttpRequest.setRequestHeader(“OData-Version”, “4.0”); }, success: function (data, textStatus, XmlHttpRequest) { var result = data; alert(“File attached to Notes successfully”); }, error: function (XmlHttpRequest, textStatus, errorThrown) { Xrm.Utility.alertDialog(“Error: ” + textStatus + ” ” + errorThrown); } }); }, }; We can see after uploading the file  the note is created with the attachment as shown below

Share Story :

SEARCH BLOGS:

FOLLOW CLOUDFRONTS BLOG :


Secured By miniOrange