Category Archives: Blog
Deploying SSRS Reports on SQL Server
In this blog article, I will explain you how to deploy the SSRS Report on SQL Server. Now you have your report done and it’s time to get them on your reporting server from visual Studio. Within Visual Studio, you can deploy your any individual report or entire project full of reports. In Solution Explorer -> right-click on your project -> Properties. Enter the Target Server URL. If you don’t know what your TargetServerURL is, Start instance of Reporting Services Configuration Manager -> click the Web Service URL tab. The URL you need is in the Report Server Web Service URLs section. Return to the Property Pages box, enter the above URL as the TargetServerURL, and click OK. Now you can right-click on either your project or any single report and click Deploy. Now we have to verify that our report made it to the server and that we can execute them. To get the URL for previewing the reports, open the Reporting Services Configuration Manager, click the Report Manager URL tab and copy the Report Manager URL. Open that URL using Internet Explorer with administration permission(Right click on internet explorer -> run as administrator). Navigate to the SSSR Reports folder, click on your report name, and you should be able to execute it right there in the browser.
Share Story :
AX Error: “Update Patch of AX unable to find a record” in TIBCO Cloud Integration
In this article, we see AX hotfix deployed by Scribe which resolves the issue for Update Patch in Dynamics AX Connector. Error Details: We have Integration build between Dynamics 365 and Dynamics AX. One of the Integration package integrates CustomerPostalAddress from AX to Address in Dynamics 365. In this package, we wanted to store AddressNumber of Dynamics 365 back in Dynamics AX. So, for updating the CustomerPostalAddress with AddressNumber we used UpdatePatch with AddresslocationId as the matching criteria. Unfortunately, we were getting an error as “Error in calling Operation Update Patch: Operation returned no results. Label: Update Patch CustomerPostalAddresses, Name: CustomerPostalAddressesUpdatePatch” Strangely, we could Query, Fetch and lookup using the same criteria of AddresslocationId to retrieve records from CustomerPostalAddress. Solution: Scribe recently deployed an AX hotfix which resolved this issue. Turns out, if any DateTime field is a primary key for a entity then in matching criteria we have pass all the primary keys. Here, we are using CustomerPostalAddress entity. Primary fields of this entity are: AddressLocationId (String) dataAreaId (String) Effective (DateTime) CustomerLegalEntityId (String) CustomerAccountNumber (String) So, in the Update Patch for CustomerPostalAddress we have to pass all these 5 fields for it successfully run the Update Operation.
Share Story :
NAV Error: “Resource not found” in TIBCO Cloud Integration
Introduction: In this article, we will see how to resolve the below error while creating/quering records from NAV. Error Details: Error in calling Operation Query (Lookup Block): Operation failed. Label: Lookup CFSCar, Name: CFSCarLookup, Message: The following error has occurred in the Dynamics NAV Connector: Error: NotFound status code = 404. Resource not found for the segment ‘CFSCar’. Scenario: We have a scenario where we are building Integration Process between Microsoft Dynamics 365 (CRM) and NAV 2017. For NAV entities to be visible in Scribe Online, we have to create a Web Service in NAV for that entity. For more Information, you can check our blog article here. So, we had created a Web Service for Item entity i.e. here Items are Car details so the name ‘CFSCar’ in NAV. The ‘CFSCar’ Entity was visible in Scribe Online. But, recently we were getting “Resource not found” error for ‘CFSCar’ entity. So, we Reset the metadata for NAV connection in Scribe and the entity ‘CFSCar’ was not visible anymore. Troubleshooting: We checked the OData URL for entity ‘CFSCar’. We were getting the below error. Reading the above error, we couldn’t pin point the exact error, so we checked the SOAP Url as well. In the SOAP URL for ‘CFSCar’ entity, proper error was displayed. Error details: Naming Conflict within the “Car Status” object. Fields “Rental/Ops Hold” and Rental / Ops Hold” are both transferred to “Rental_Ops_Hold”. Please find new a name for one of those fields! Turns out there was two Status of same name which was causing an issue. Solution: Once we deleted the duplicate status the error was resolved.
Share Story :
Using Shared Mailbox in Office 365
Now often, you want to have a common mail address for everyone within a team to monitor and interact through like info@domain.com or support@domain.com Office 365 provides this capability with something called as Shared Mailbox. Features of Shared Mailbox Shared Mailbox doesn’t need an Exchange license. Shared Mailbox doesn’t have its own credentials. Users add this mailbox to theirs and use their own credentials to access it. Shared Calendar is available in a Shared Mailbox where everyone can see who is available when Setting up Shared Mailbox You’ll need to be an administrator in Office 365 to be able to create a Shared Mailbox. Navigate to Office 365 Admin Center and find Shared Mailboxes options under Groups. Click on Add a mailbox I’ll call it Sales@domain.com, for example. And click Add. I selected both the users seen in above step to add to the Shared Mailbox. Those members are seen on the detail pane of the selected Shared Mailbox as shown below Shared mailbox gets created within moments! Adding Users to the Shared Mailbox Only users who have an Exchange Online license can be added to Shared Mailboxes. Click on the mailbox and then on Edit in Members area to add O365 users to the mailbox as shown below Click on +Add Members to add users to the mailbox. You’ll find all the members who already have an Exchange Online license are eligible for adding to the shared mailbox. I selected both the users seen in above step to add to the Shared Mailbox. Those members are seen on the detail pane of the selected Shared Mailbox as shown below Adding Shared Mailbox to Outlook I will show the OWA example in this blog to show how to add the shared mailbox to the user’s Outlook Let’s assume we have the mailbox pwagh@cft79.onmicrosoft.com and we want to add the shared mailbox sales@cft79.onmicrosoft.com to pwagh’s mailbox. In OWA, right click on the root folder of the mailbox and click on Add shared folder Start typing the name of the Shared Mailbox and it should auto-populate the same for you. Select the Shared Mailbox and click Add. The mailbox should then appear in your OWA. Note: It takes a few minutes until the Shared Mailbox is accessible from your mailbox after adding it Hope this was helpful.
Share Story :
Exporting record details to excel using Excel Buffer in Microsoft Dynamics NAV 2017
Introduction In this article, the selected record details by the user are exported to excel using Excel Buffer. The requirement was such that Purchase Request is sent to the Vendors to enter the Unit cost of each Purchase Items. These details are sent to the vendors in an excel sheet. After the Unit cost is entered the excel sheet is imported again in the Dynamics NAV. Pre-requisites: Microsoft Dynamics NAV 2017 Steps: 1.Create a report and Data link between the records. 2. Below is the screenshot of the Data Item Link 3. In the globals (Ctrl+G), define the excel buffer table (no 370) to create excel sheet 4. Define the function MakeExcelDataHeader to create the header of the excel sheet and MakeExcelDataBody for the Body Lines. 5. Create a Boolean variable Print to Excel and insert it in the request page. If true then call the function CreateExcelBook. 6. On the PreDataItem Call the function MakeDataExcelHeader and OnAfterGetRecords call the function MakeDataBody 7. Using Excel Buffer table code as below in the functions 8. In the Page, create an action button to run the report. 9. In the page, select the record and click on the Export to Excel button 10. Click on OK 11. This call the report and fetches the data records in an excel sheet. This sheet is then sent to the vendor to enter the unit cost of the respective item. Conclusion: Thus using excel buffer record we can export records from Microsoft Dynamics NAV to Excel sheets.
Share Story :
Item Charges Setup in Dynamics NAV
One of the most popular and widely accepted ERP systems which is popular in both small and big businesses is the Microsoft dynamics nav integration. The reason for its popularity and wide acceptance is its user-friendly interface and simple installation process. Dynamics NAV customers are missing out on the real benefits of upgrading to Dynamics NAV in today’s cloud-based environment. If you upgrade Dynamics NAV, you will be taking advantage of improved functionality, new features, and enhanced capabilities, you can boost productivity, reduce costs, and improve customer service. Microsoft is continually looking at ways to improvise the Enterprise Resource Planning Systems. Using Microsoft Dynamics NAV Inventory Management, companies can do tasks such as setting up alternative vendors, check on inventory assembly management, and get the required analysis report with ease. Introduction: The item charge functionality in Dynamics NAV gives you the option to include additional costs such as freight, insurance, fuel charges, etc. in the unit cost or unit price of an item transaction. Item charges setup is part of the general Finance setup. Companies can set up different item charge numbers to distinguish types of charges and improve cost and sales statistics. Set up: Path : Financial Management > Inventory > Setup Or Enter “item charges” in the Search box, and then select the related link. Item charge must have a general product posting group and a VAT product posting group. This combination of posting groups determines the general ledger account to which the item charge is posted. Once Item charges has been setup then you can select it on purchase ad sales document line Conclusion : Item charges are an ideal way to record item-related financial transactions without affecting inventory quantities. A company can use item charges in the purchase and sales processes to improve the accuracy of cost and sales information, and contribute to improved decision making.
Share Story :
Generic Type Bookable Resource on Schedule Board in D365 Field Service
Introduction: This blog explains how to filter Generic Type Bookable Resource on Schedule Board. Pre-requisite: Latest Field Service Solution of D365. Procedure: 1. Open Schedule Board, Field Service → Schedule Board. As highlighted below there is no option to select Generic Type Bookable Resource in Filter Section. 2. Click Options → Selected Resources 3. Select Generic in Resource Types drop down as shown below. 4. Select Bookable Resources as per need. 5. Bookable Resource are shown in Schedule Board of type Generic. Conclusion: This blog explains how to filter Generic Type Bookable Resource on Schedule Board.
Share Story :
CRM Tip: How to Check Security Role in Plugins – Correct way
Problem Statement: We often have requirements to perform some action based on certain security role. For ex., we only want System Administrator to delete particular record, and no one else should delete irrespective of their security access. There are many ways to achieve this, but many of the times the solution is not foolproof Incorrect/ Misguided Solution: Generally developers achieve the above requirement by using plugin with below steps: Get User ID from the plugin context. Get all the roles of the user Loop and check if any of the role name is “System Administrator”. If Step 3 is true, then allow delete, else restrict delete This solution works most of the time, but this won’t work if the client is using any other language than English in CRM. Since role names are customized based on language, the above plugin won’t find any user with the System Administrator name of the role. Solution: For language proof solution, we must use the role template lookup on the Role entity. For OOB security roles, there is a role template GUID which does not change based on environment. For System Administrator, the Role Template ID is “627090FF-40A3-4053-8790-584EDC5BE201” The following code will get the System Administrator properly. You can find the sample plugin on my GitHub as well. public bool HasAdminRole(Guid systemUserId) { Guid AdminRoleTemplateId = new Guid(“627090FF-40A3-4053-8790-584EDC5BE201”); QueryExpression query = new QueryExpression(“role”); query.Criteria.AddCondition(“roletemplateid”, ConditionOperator.Equal, AdminRoleTemplateId); LinkEntity link = query.AddLink(“systemuserroles”, “roleid”, “roleid”); link.LinkCriteria.AddCondition(“systemuserid”, ConditionOperator.Equal, systemUserId); return service.RetrieveMultiple(query).Entities.Count > 0; } Note: This can be done for other OOB roles as well like Sales Manager, Sales Person, etc. For custom roles, the role template Id is empty. If the custom roles are created by you, then you can used the Role Id (Unique GUID of Role entity) for querying instead of names.
Share Story :
Invoking Web Service/Rest API from D365 FOE
In this blog article, we will see how we can invoke web service call for a third-party application in Dynamics 365 for Finance and Operations, Enterprise Edition using X++. In this blog we will Consider Service Order Entity as source passing Service Order values to a third party application on Service Order creation using web service endpoint url. Create a SMAServiceOrderTable Table post Insert event. /// <summary> /// Post insert passing Service Order values and URL to invoke Web service /// </summary> /// <param name=”sender”></param> /// <param name=”e”></param> [DataEventHandler(tableStr(SMAServiceOrderTable), DataEventType::Inserted)] public static void SMAServiceOrderTable_onInserted(Common sender, DataEventArgs e) { SMAServiceOrderTable serviceOrderTable; serviceOrdertable = sender as SMAServiceOrderTable; String15 SOstatus = enum2Str(serviceOrderTable.Progress); //parmvalue stores Service Order values in container container parmvalue = [“‘CustAccount’:'”+serviceOrderTable.CustAccount+”‘”,”‘ServiceOrderId’:'”+serviceOrderTable.ServiceOrderId+”‘”,”‘CurrencyCode’:’US Dollar'”,”‘SOStatus’:'”+SOstatus+”‘”,”‘ProjId’:'”+serviceOrderTable.ProjId+”‘”,”‘CFSCRMWorkOrderNo’:'”+serviceOrderTable.CFSCRMWorkOrderNo+”‘”]; new WebService().sendrecord(“<<webservice url>>”,parmvalue); } Create a class which calls the web service. Class WebService { public void sendrecord(String255 endpointurl,container arryI) { str url; str postData; str returnValue; System.Net.HttpWebRequest request; System.Net.HttpWebResponse response; System.Byte[] byteArray; System.IO.Stream dataStream; System.IO.StreamReader streamReader; System.Net.ServicePoint servicePoint; System.Net.ServicePointManager servicePointManager; CLRObject clrObj; System.Text.Encoding utf8; Counter countCounter; ; //generate postdata in json format postData = “{“; for(countCounter= 1;countCounter<= conlen(arryI);countCounter++) { postData = postData+conpeek(arryI,countCounter)+”,”; info(strFmt(“%1″,postData)); } postData = postData+”}”; new InteropPermission(InteropKind::ClrInterop).assert(); url = endpointurl; clrObj = System.Net.WebRequest::Create(url); System.Net.ServicePointManager::set_Expect100Continue(false); request = clrObj; request.set_Method(“POST”); utf8 = System.Text.Encoding::get_UTF8(); byteArray = utf8.GetBytes(postData); request.set_ContentType(“application/json”); request.set_ContentLength(byteArray.get_Length()); dataStream = request.GetRequestStream(); dataStream.Write(byteArray, 0, byteArray.get_Length()); dataStream.Close(); } } Let me know your reviews. I will soon come up with more articles, as I further explore D365 Operations.
Share Story :
Field Security Profile Error
Introduction: One of regular CRM user suddenly start getting error “The use does not have read permission to a secure field. The requested operation could not be completed”. As it clearly visible that the error is coming due to the security issue. But after checking the permission we did not find any issue in the security role. Since it was working earlier it was not known why it is not working now. But someone has imported a modified solution in production instance. Then, we checked and found that a new field security profiles were created, since this particular user was not the member of list, so he was not able to read the record. You need to make sure that you have added user/users into this list whom you want to read/create/update a particular field. Once you have added the user you will able to read/update/create the value of a particular field. Hope this helps you to resolve the security profile issue.