Date/Time fields in Microsoft Dynamics CRM 2015 Update 1
The Date and Time data type is used in many times such as Project Start Date, Project End Date, Date of Birth, anniversaries etc. Before the Update, CRM stored all date and time values with the user’s local time zone information. This included User Local format. The system converted the users’ local time zone to Coordinated Universal Time (UTC) for backend storage and then converted the date and time back to the local time zone for display on forms. When Date and Time data type is selected you can select different Behaviour in CRM 2015 Update 1. The need for such update is sometimes date only format caused confusion basically for Birthdays, anniversaries. Users would sometimes see a different day displayed depending on their local time zone. The different Behaviours available in CRM 2015 Update 1 are as follows User Local Date Only format always sets time to 12:00 am Time-Zone Independent format saves in UTC on the backend without converting the time-zone This date/time behaviour are not present in On-premises installation. 1. User Local Behaviour The field values are displayed in the current user’s local time. The Format available for User Local Behaviour is Date Only and Date and Time. Here Project Start Date field is set as User Local You can change the custom entity field’s behaviour from the User Local to Date Only or to Time-Zone Independent. Before changing the behaviour of date and time field, review all the dependencies, to ensure thet there are no issues as a result of changing behaviour. 2. Date Only Behaviour The field values are displayed without the time zone conversion. The time portion of the value is always 12:00AM. The date portion of the value is stored and retrieved as specified in the UI and Web services. The Date Only behaviour can’t be changed to other behaviour types, once it’s set. The Format available for Date Only Behaviour is Date Only. “Date of Birth” field is set to Date only field. 3. Time-Zone Independent behaviour The Time-Zone Independent behaviour can’t be changed to other behaviour types, once it’s set. The concept of a time zone isn’t applicable to this behaviour. The field values are displayed without the time zone conversion. The date and time values are stored and retrieved as specified in the UI and Web services The Format available for Time-Zone Independent Behaviour is Date Only and Date and Time. “Project End Date” field is set to Time Zone Independent Behaviour On change of behaviour effect on existing records 1. When Date of Birth field behaviour is changed to Date only: The Date of Birth field shown here is 9/15/2015 as entered by the user. When this field is retrieved the date/time value returned will be 9/14/2015 06:30:00 PM. Thus the date of birth visible and retrieved is different. In the database UTC date/time is set but in UI it appears different. This value is when the behaviour is user Local behaviour. Retrieve the value of the Date of Birth field and you will get 9/14/2015. Here the date/time value set will be 9/14/2015 12:00:00 AM. When the record was originally created the date entered was 9/15/2015 and I would have expected it to show as 9/15/2015. However, since the change has not been made to the existing records for this field in database, they are still stored in the original UTC format along with the time. It appears that the UTC date/time is picked and the time part is being set as 12:00:00 AM. Thus before changing, make sure about the dependent fields. 2. When Date of Birth field behaviour is changed to Time Zone Independent Here the date and time filed visible is 11/16/2015 8:00 AM. When you retrieve this field the value is 11/16/2015 2:30 AM. Thus the date of birth visible and retrieved is different. In the database UTC date/time is set but in UI it appears different. This value is when the behaviour is user Local behaviour. Retrieve the value of the Date of Birth field and you will get 11/16/2015 2:30 AM. When the record was originally created the date entered was 11/16/2015 8:00 AM and I would have expected it to show as 11/16/2015 8:00 AM. When the field behaviour is changed to time zone independent the time is been changed and data stored in database is picked.
Share Story :
Enhanced Business Process Flow
Enhanced Business Process Flow 2015 Business Process Flow was introduced in Microsoft dynamics CRM in 2013. Business Process Flows in CRM guides users through each step in a defined process to clearly see what steps have been completed, and what needs to happen next. Each stage in a Business Process Flow can be configured to include fields that the business would like to have completed for that stage. This list of fields can include any field available on that entity. These fields can also be represented elsewhere on the form. However, in CRM 2013 Business Process Flows were subject to several limitations Strictly Linear Process: Business processes are designed to work only in linear manner, no branching was allowed. Cannot Revisit The Entity More Than Once: Cannot visit the same entity again in single business process flow. No programmability support Enhanced Business Process Flow in CRM 2015 The improvement made to Business Process Flow functionality is the ability to deploy conditional logic within a defined process, (called Branches). Steps and stages can be configured easily where branching rules are defined. Selection of entity relationships – It can be optional. Branching supports – Single entity, cross entity and also supports multiple entity loops. Entity used in Business Process Flow can be revisited multiple times. Programmability through client API: Programmatically updates process state and hooks on to process events. Let’s implement these improvements in an example, consider a scenario were EazyApp Is a facetious Company which sells Software as a product. The request EazyApp receives on daily basis gets classified as leads, some of them get Qualified if they are further interested in evaluating the trial of the software and also the budget amount is greater than or equal to $5000, if not, then the lead gets disqualified. Once a lead Is interested in Trial and the budget amount is greater than or equal to $5000, the lead gets Qualified and an Opportunity gets created. Once the trial is completed, a new question is asked whether a Quote is required. If no, we close the Opportunity but if it is a yes, we create a quote and deliver the quote. After that, we offer maintenance for the product, if the Opportunity is interested in maintenance, we update the quote, and otherwise we close the opportunity. The following diagram shows a business process flow with branches. Before Designing Business process flows with Branches for EazyApp take a note of the following Information: A process can span across a maximum of 5 unique entities. You can use a maximum of 30 stages per process and a maximum of 30 steps per stage. Each branch can be no more that 5 levels deep. Branching rule must be based on the steps in the stage that immediately precedes it. You can combine multiple conditions in a rule by using the AND operator or the OR operator, but not both operators. An entity used in the process can be revisited multiple times (multiple closed entity loops). You can go back to the previous stage regardless of an entity type. For example, if the active stage is Deliver Quote on a quote record, you can move the active stage back to the Propose stage on an opportunity record. Only one active process per a record is possible. The stages can be reordered using the MOVE UPor MOVE DOWN arrows within the branch. The stages can’t be moved from one branch to other branches. Let’s look at the example of the business process flow with branches, for EazyApp selling Software as a product. First, we’ll create a new process named EazyApp Business Process Flow. Go to Settings > Processes. Specify the Category as Business Process Flow and for the primary Entity choose Lead. Add the first stage to the process called Qualify and add steps Purchase Time frame and Is Interested in Trial. After the common Qualify stage, we split the process into to two separate branches, by using the If-Else clause. Notes To add the first branch for a stage, choose Add branch below the stage and specify the If condition. To add the second branch for the same stage, choose Add branch again, below the same stage. The Else clause will be displayed. You can choose Else, to convert it to Else-If, if you have more than two branches from the same stage, or if you want to enter a branch only when certain conditions are satisfied. Choose the green square + (plus) button under the branching rule, to add another condition to the rule. Choose the + Insert stage button to insert a stage at the beginning of the branch. If the Is Interested Trial = Yes & Budget Amount is greater than or equal to $5000 the process branches out to the Trial stage, otherwise, it jumps to the Close stage, in the second branch, as shown below. As you can see above, it will apply ‘if’ criteria to check condition, where we can specify field criteria and save the condition. Once it is saved, it will allow you to insert stage on that basis as shown below. It also allows to add else condition if the criteria to flow the process in another direction is not fulfilled. You can combine multiple conditions using and/or branching techniques as shown above. Here, it will also allow you to set relationship with another entity. If no relationships exist, then you can set it to none. Likewise, you can create complete Business Process Flow and it can be used as shown below: Likewise, you can create a complete Business Process Flow and it can be used as shown below: As you can see below, it currently shows only two stages ‘Qualify’ and ‘Close’ and the step ‘Is Interested in Trial’ shows value as No. If you select ‘Is Interested in Trial’ as yes & Budget amount more than or equal to $5000, it will change the flow with additional stages as shown below: Similarly, after qualifying the lead, it will go to another stage where if you select ‘Quote required’ as yes, it will show some additional stages as ‘Deliver Quote’, ‘Offer Maintenance’ etc. as shown below: This is how you can include business process flow … Continue reading Enhanced Business Process Flow
Share Story :
Filters available in AX 2012
Filters plays a very important role in getting the data in a fast and easy manner. AX is designed in such a way that the filters can be used on all the forms. The user can filter the data by providing syntax in the filter field available on the form or by clicking Ctrl+ G. When the user clicks Ctrl+G, a new row is created below the column header of the grid. The following filtering and query options are available when you use embedded filters or queries. Syntax – Value Character Description – Equal to the value entered Description – Type the value to find. Example – Alex finds “Alex”. Syntax – !Value Character Description – Not Equal to the value entered Description – Type an exclamation mark in front of the value to exclude. Example –!Alex finds all values except “Alex” Syntax – From-value..To-value Character Description – Between the two values entered separated by double periods. Description – Type the From value, then two periods, and then the To value. Example – 10..30 finds all values from 10 to 30. Syntax – ..value Character Description – Less than or equal to the value entered Description – Type the two periods and then the value. Example – ..50 finds any number less than or equal to 50. Syntax – .. Character Description – Greater than or equal to the value entered. Description – Type the value and then the two periods Example – 50.. finds any number greater than or equal to 50. Syntax – >value Character Description – Greater than the value entered. Description – Type a greater than sign (>) and then the value. Example – >20finds any number greater than 20 Syntax – <value Character Description – Less than the value entered. Description – Type a less than sign (<) and then the value. Example – <50 finds any number less than 50 Syntax – value* Character Description – Starting with the value entered. Description – Type the starting value and then an asterisk. Example – S* finds any string that starts with S Syntax – *value Character Description – Ending with the value entered. Description – Type an asterisk and then the ending value. Example – *ltd finds any string that ends with ltd. Syntax – *value* Character Description – Contains the value entered. Description – Type an asterisk, then a value, and then another asterisk. Example – *pvt* finds any string that contains pvt. Syntax – ? Character Description – Having one or more unknown characters. Description – Type a question mark at the position of the unknown character in the value. Example – Sa??abh finds “Saurabh” Syntax – value,value Character Description – Matching the values entered separated by commas. Description – Type all your criteria separated by commas. Example – 30,80 finds exactly “30” and “80”. Syntax – T Character Description – Today’s date Description – Type “T” Example – Enter T and click Tab/Enter, it will bring todays date. The above provided syntax are very useful in day to day activities in AX. User can use the syntax in combination also, by using “&” syntax.
Share Story :
Connect to an external database using X++ code in AX 2012
Below are the steps to be performed, To connect to an external database using ODBC connection, first create a DSN. To create a DSN refer the link https://support.microsoft.com/en-us/kb/300596 Write the below code: Note : The database login credentials are given in the DSN. You can use windows credentials or provide SQL credentials, if required. In the above code, the below lines of code will initialise the connection to the database. sq = new SqlSystem(); loginProperty = new LoginProperty(); loginProperty.setDSN(/*your dsn name here*/); loginProperty.setDatabase(/*your database name here*/); oDBCConnection = new ODBCConnection(loginProperty); The below lines of code will execute the query and store the data in a resulSet. sqlStmnt = strFmt(“select * from ABC”); //write your query here statement1 = odbcConnection.createStatement(); perm1 = new SqlStatementExecutePermission(sqlStmnt); perm1.assert(); myResult1 = statement1.executeQuery(sqlStmt1); We can also execute the stored procedures in the database. Write the below code to do so. odbcConnection = new OdbcConnection(loginProperty); sqlStmt1 = strFmt(“exec [Stored Procedure name]”); perm = new SqlStatementExecutePermission(sqlStmt1); perm.assert(); statement1 = odbcConnection.createStatement(); statement1.executeUpdate(sqlStmt1); CodeAccessPermission::revertAssert(); Suppose you execute more than one stored procedure in the same code, you may get below error. “SQL error description: [Microsoft][ODBC SQL Server Driver]Connection is busy with results for another hstmt” To eliminate this error, write below statement after every stored procedure is executed, statement1.close(); If there are multiple external databases on different servers, then you can create separate DSN to connect to each server. This connection information can be stored in a master table containing the DSN name, the database name. The X++ code can then use the connection details from the master table as shown below. loginProperty = new LoginProperty(); loginProperty.setDSN(masterTable.databseName); loginProperty.setDatabase(masterTable.databseName);
Share Story :
Power BI updates
Purpose of this blog is to showcase latest Power BI updates. Prerequisite: Power BI Desktop Tool, Power BI Personal Gateway and Power BI online service account. Purpose of the setup: To learn about latest Power BI updates from October month. Here we will be looking the below mentioned Power BI updates; Read-only Members in Power BI Groups Semi-select support for DAX formulas in Data view Read-only Members in Power BI Groups: Power BI have introduced a very good feature in Power BI online Service using which the user can create group in Power BI Online account with multiple users and these users can be assigned role as ‘Admin’ or ‘Member’.Let’s have a look. With such Power BI groups the user and his colleagues can come together to collaborate, communicate and connect with their data. The user can create a group either in Power BI or Office 365. Then, the user can invite co-workers into this group workspace where he can collaborate on his organization’s shared dashboards, reports and datasets. Up until now, all members had all the rights. Many of us required read-only membership to the groups so that the users you want to keep up to date but not have edit permissions on our dashboards and reports. So, this update exactly helps us to do the same; let’s have a look on how to do this. Now to begin with, first we’ll create our group by clicking the “+” icon near Group Workspaces. Now let’s add a few users to our group. FYI, Power BI Groups have two roles: Admins and Members. Now here, we will set one user to Admin and the remaining users to Members. We will click on Save to create the group. Now, let’s take a look what difference take place when an Admin and a member login to Power BI Online account and use the created group. As you can see, when person with Admin rights, login, than that user has right to ‘Explore’, ‘Schedule Refresh’, ‘Rename’, ’Delete’ etc. options available. Whereas, when a person with member rights login can only view the reports and Dashboard. Member of the group do not have the Dataset access and thus, cannot perform any edit operation. Thus, now we have option introduced for us to quickly switch a user from Member to Admin and vice-versa which will be very helpful. Semiselect support for DAX formula in Dataview : Power BI have introduced another very good feature in Power BI Desktop Tool using which the user can create new column using DAX function by directly clicking on the column. Let’s have a look First we have to open the Dataview Screen. Now, before this update user had to manually type the table and the column name to write the DAX function. With this update the user can directly click on the column name and create the DAX function as per the requirement.
Share Story :
Solutions to Frequent JavaScript Errors in CRM 2015 Update 1
In this Blog we will walk-through how to resolved CRM 2015 update 1 JavaScript Errors. Below is list of common errors. 1. ‘$ is not defined’ or ‘jQuery is not defined’ Description: You will get above error if you have ever used jQuery function in your JavaScript code. In earlier version of the CRM, we can able to access jQuery library directly but with the new form rendering engine it is not possible to access jQuery library. Resolution: Include jQuery library in your Entity Form Libraries. 2. Behaviour changed for Tab (open/close). Description: Please refer below example Ex. Read state of the Tab (onTabChanged) Below function will return different result based on Legacy/Turbo form Xrm.Page.ui.tabs.get(_tabName).getDisplayState() User Action Legacy Form Turbo Form Tab Close collapsed expanded Tab Open expanded collapsed 3. Cannot read property ‘getAttribute’ of null (Specific to Product Form) Steps to reproduced: Add new product Navigate to products Click on ‘View the data that will be sent to Microsoft’ Description: Error is encountered because CRM internally trying to access any fields which is not present of the form. By doing more researched I found that ‘Valid To’ and ‘Valid From’ field is required on the Form (Turbo Form rendering engine). Resolution: Please follow the below steps Add ‘Valid To’ and ‘Valid From’ in the form Hide both the field and lock this field on the form 4. + button is not working for Opportunity Product SubGrid on Opportunity form Description: Same problem with Quote/Order product SubGrid view. It is basically product bug in 2015 update 1. Resolution: Add custom HTML web resource for + sign and hide exiting one. Please find below steps to resolved this issue. Hide exiting SubGrid + sign using Ribbon workbench. Add HTML web resource for + sign. You can refer below code. <html> <head> <meta charset="utf-8" /> <title></title> <style> #plusSign { float: right; margin-top: 18px; cursor: pointer;” } </style> <script type="text/javascript" src="ClientGlobalContext.js.aspx"></script> <script> var GridCustomization = GridCustomization || {}; GridCustomization.data = {}; GridCustomization.parameterObject = {}; GridCustomization.openProductForm = function () { Xrm.Utility.openEntityForm(GridCustomization.data.EntityLogicalName, null, GridCustomization.parameterObject); }; GridCustomization.onLoad = function () { GridCustomization.data = {}; GridCustomization.parameterObject = {}; var id = GridCustomization.getQuerystring("id"); var plusSignAttribute = document.getElementById("plusSign"); if (plusSign && !id) { plusSign.disabled = true; return; } id = id.replace("%7b", "").replace("%7d", ""); id = id.replace("{", "").replace("}", ""); var entityNames = GridCustomization.getQuerystring("data"); var entityLogicalName, entitySchemaName, formToBeOpen; if (entityNames) { var tempArray = entityNames.split("%2c"); if (tempArray && tempArray.length === 2) { entityLogicalName = tempArray[0].toLowerCase(); entitySchemaName = tempArray[0]; formToBeOpen = tempArray[1]; } else { Xrm.Utility.alertDialog("Entity Name is not provided.", null); return; } } GridCustomization.data = { EntityLogicalName: formToBeOpen }; ///current record cab be Opportunity/Quote/Order var currentRecord = GridCustomization.retrieveRecord(id, entitySchemaName); if (currentRecord) { var entityLogicalNameId = entityLogicalName + "id"; GridCustomization.parameterObject[entityLogicalName + "id"] = id; GridCustomization.parameterObject["dynad_currencyid"] = currentRecord["TransactionCurrencyId"] ? currentRecord["TransactionCurrencyId"]["Id"] : null; GridCustomization.parameterObject["dynad_currencyidname"] = currentRecord["TransactionCurrencyId"] ? currentRecord["TransactionCurrencyId"]["Name"] : null GridCustomization.parameterObject["transactioncurrencyid"] = currentRecord["TransactionCurrencyId"] ? currentRecord["TransactionCurrencyId"]["Id"] : null; GridCustomization.parameterObject["transactioncurrencyidname"] = currentRecord["TransactionCurrencyId"] ? currentRecord["TransactionCurrencyId"]["Name"] : null; if (currentRecord["OrderNumber"]) { GridCustomization.parameterObject["dynad_ordernumber"] = currentRecord["OrderNumber"]; } } } GridCustomization.getQuerystring = function (key) { var work = key.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); var regex = new RegExp("[\\?&]" + work + "=([^&#]*)"); var qs = regex.exec(window.location.href); if (qs == null) return null; return qs[1]; } GridCustomization.retrieveRecord = function (id, entityName) { "use strict"; var req = new XMLHttpRequest(); req.open("GET", encodeURI(Xrm.Page.context.getClientUrl() + "/XRMServices/2011/OrganizationData.svc/" + entityName + "Set(guid’" + id + "’)"), false); req.setRequestHeader("Accept", "application/json"); req.setRequestHeader("Content-Type", "application/json; charset=utf-8"); req.send(null); var data = JSON.parse(req.responseText); if (data && data.d) { return data.d; } else { if (data.error) { alert(data.error.message.value); } } return null; } GridCustomization.getLookupId = function (lookupObject) { if (!lookupObject && !lookupObject.Id) { return null; } return lookupObject.Id; } </script> </head> <body onload="GridCustomization.onLoad()"> <img src="/_imgs/ribbon/NewRecord_16.png" alt="New Line Item" onclick="GridCustomization.openProductForm()" id="plusSign"> </body> </html> Pass parameter to HTML Web Recourse Ex. Schema name of opportunity and logical name of opportunity product. Opportunity,opportunityproduct Make sure checkbox for object-type code and unique identifier as parameter is checked. Register below function onSave event of Opportunity Entity Form to reload HTML web resource for first time when Record is created. function reloadHTMLResource() { if (Xrm.Page.ui.getFormType() === 1) { var iInterval = setInterval(function () { if (Xrm.Page.data.entity.getId()) { clearInterval(iInterval); //reload PlusSign var plusSignControl = Xrm.Page.ui.controls.get(“WebResource_SubGridPlusSign”); if (plusSignControl) { plusSignControl.setSrc(Xrm.Page.context.getClientUrl() + “//WebResources/dynad_SubGridPlusSign?data=Opportunity%2copportunityproduct&id=” + Xrm.Page.data.entity.getId()); } } }, 1000); } }; Note: Kindly replace below text with appropriate value dynad_SubGridPlusSign?data=Opportunity%2copportunityproduct : %2c indicate punctuation mark (,) to split two entity name WebResource_SubGridPlusSign : name of HTML web resource added on the form.
Share Story :
Dynamics CRM 2016 Fall Preview Features
The 2016 fall preview will be a major release for Online and on premise customers which will emphasis on providing end-to-end Customer Engagement solutions from Microsoft Dynamics. This blog article will put light on capabilities of the Dynamics 2016 release. Marketing SMS Marketing SMS Marketing is focused on both – Inbound and Outbound SMS marketing in selected markets. Inbound SMS campaigns can be configured with SMS keywords to receive opt-ins from target marketing lists. Maintain opted-in and opted-users in different lists Outbound SMS campaigns to be used to actually send out marketing SMS messages to opted-in marketing lists. Tracking performance of campaigns. Email Marketing Email editor to be enhanced with the ability to see generated HTML. Improved editing experience. Sales CRM For Outlook App Key sales capabilities are delivered within Outlook. Users can create data in the Outlook application itself like Contacts, Opportunities etc. based on the Email in their Inbox. The CRM For Outlook App. will expand support to include Firefox, Safari for Mac & Outlook for Mac. Excel Integration Leveraging the capabilities of Excel Online from right within Microsoft Dynamics CRM. Data can be saved back to CRM while maintaining work context. Information Discovery Trending documents from Office Delve will now be available within CRM. OneDrive For Business OneDrive for Business has been added to give consolidated view of documents across SharePoint, OneDrive For Business and Office 365 groups within the context of a CRM record. Document Generation Documents can be built out of CRM data. Data can be extracted by a single click by using pre-generated Word and Excel templates. Authors should be able to manage the predefined templates and use wizard-like flow to design custom templates in Word or Excel. Documents generated from CRM will open as a downloaded document. Exception here is, for CRM Online, Excel documents will open in Excel Online. Cortana Integration Sales activities, accounts and Opportunities now embedded into Cortana. This will be a preview feature in Dynamics CRM Online 2016 customers. Customer Service Companies these days look to engagement and experiences that proves to be a differentiating factor for competition. Voice of the customer A new designer to design questionnaires and send the same to customer to get feedback. Customers can take survey on a computer, tablet or a phone. Once a customer completes a survey, Dynamics CRM triggers follow-up actions. Survey records are stored in customer records in CRM so that salespeople can use the same during a service case. Interactive Service Hub The new online user experience (UX) design provides intuitive end user experience for customer service roles. Multi-Stream Dashboard These are dashboards targeted at Tier One agents. Users can view and act on their data from My Activities, My Cases etc. Interactive charts are available to give a visuals of key metrics related to work. Single Stream Dashboard These dashboards are meant for Tier Two agents. This will consist of a single data stream on the left hand side of the view to show an aggregated view of the workload. Additionally, tiles on the right hand side of the dashboard are available to show data in numbers. Modern and Intuitive Design Data will be found with reduced clicks and navigation. The guided business process flow is further enhance to show process stage information as a fly out. The timeline provides rich time and record based filtering capabilities. Quick Actions on search results. External Party Access A foundation that allows external parties such as Employees, Customers and Partners to access CRM data with proper permissions. Knowledge Management Enables organization to create a single source of knowledge. The new editor provides team to keep knowledge articles approved and updated. Unified Service Desk Provides service organizations the unique ability to deliver a single agent desktop with access to back-end systems. This release improves the install experience by providing upgrades though Windows Updates. Service Intelligence A PowerBI dashboard provides Customer Service Managers (CSMs) with an aggregate view of customer service performance. Social Social Listening & Social Analytics You will now also be able to search board/forums and RSS feeds. In addition to existing sentiment and localization languages, Social Listening will be adding 14 more languages. Intelligent Social Role-based views to help sales people find leads Potential to automatically detect potential leads vs cases. Group Collaborations & Custom Roles Introduction of processes and workflows centered around groups. Social CRM Create CRM actions like cases and opportunities from social posts. These records can be created either from Post View or Social Center. Social Center Ability to publish tweets and Facebook posts from within the Social Center. Author lookup provides details about the post publisher. Mobile Mobile Offline Support Microsoft Dynamics CRM Online will get full offline experience with mobile. Ability to create, change and delete records while being offline. This will be automatically synchronized once the device goes back online. Document Management Ability to view documents in the context of CRM records within the mobile apps. App-to-app Deep Linking Let’s other mobile apps to directly navigate to CRM records using the link. Modern Mobile Friendly Experience Addition of variety of modern UI controls. Business Analysts have the ability to bind a data field to a new control. For instance, slider and calendar controls among set of 15 controls. Task Based Experiences Allows users to focus on the Tasks than Data from multiple entities brought together in a single user experience. This will be a preview feature in phones and tablets. Mobile Client form preview ‘Configure Once, Deploy everywhere’ paradigm makes it easy for business analysts to visualize configuration changes. Web Resources and IFRAME In the previous release, support for IFRAME and Web Resources was introduced in CRM for tablets and phones as preview feature. This release will provide support for Windows tablets (Windows 10) as well. Mobile Management Customers will be able to … Continue reading Dynamics CRM 2016 Fall Preview Features
Share Story :
Developing Integration Solutions using Microsoft Azure BizTalk Services
Part 2 – Integrating Microsoft Dynamics CRM Online to Microsoft Azure Service Bus Queue. You can check part 1 here. Scope: To demonstrate the integration through Message-flow from Microsoft Dynamics CRM Online and Azure Service Bus Queue. Pre-requisite: Source: Microsoft Dynamics CRM Online Target: Microsoft Azure Service Bus Queue SDK for Dynamics CRM Online (plugin Registration Tool) Service Bus Explorer to view the message contents received from CRM in Azure SB Queue. Visual Studio to create Custom WCF Service to push the messages from CRM to SB Queue (alternate method) Background: In earlier Blog we had seen steps to Create Microsoft Azure BizTalk Services as well as Developing and Deploying BizTalk bridges on Azure. In this Blog we will see the steps to create Service End Point (Azure Aware Plugin) that will push messages in JSON (default) format whenever a new Account Name is created in CRM to Azure Service Bus. We can View the contents of this message in Azure SB Queue, using Service Bus Explorer Tool (URL for the tool https://code.msdn.microsoft.com/windowsazure/service-bus-explorer-f2abca5a). Alternately we can also create a custom WCF Web Service that will push the messages whenever a new record is created CRM (Entity- Accounts) STEP 01: Creating Azure Aware Plugin in CRM Download the Microsoft Dynamics CRM Software Development Kit (SDK) for CRM Online and on-premises CRM 2015 from URL http://www.microsoft.com/en-us/download/details.aspx?id=44567 After Download, Extract the same and go to Path \MicrosoftDynamicsCRM2015SDK\SDK\Tools\PluginRegistration, and launch the PluginRegistration.exe Select Create New Connection and enter the details for your CRM like Deployment Type as per your CRM, Online Region, User Name and Password and click on Login. You can create CRM Trail account if needed. In the Next Window of Service End Point Registration, provide details for the endpoint Please note in above screen the path is taken from Service Endpoint URL in Azure. For example URL is Then my path is TwoWayService/Demo. The Contract can be selected from dropdown Oneway, TwoWay, Queue, REST, TOPIC and PersistentQueue. After entering the details you need to click on Save & Configure ACS (Access Control Service) We will need below Information in this screen. Management Key Certificate File Issuer Name Management Key: This key is obtained from Azure Portal. Login to Azure Portal and Create a ServiceBus and a Queue. Here the Service Bus is btscfsnamespace and btscfsqueue is a Queue in it. The Management Key is the Default Key found in the Connection Information for the Service Bus in the Azure Portal. After this you need to Register the Steps in Plugin Registration tool for the Service End point you recently created. Certificate File: This certificate file is obtained from CRM under Customizations, under Developer Resources. Issuer Name : This is found as in above screen in CRM under Windows Azure Service Bus Issuer Certificate (crm.dynamics.com) Select Save & Verify Authentication in the Service Endpoint Registration window and close the window after verification test is completed successfully. Step 02: Registering the Step in Plugin Registration Tool In the Message, mention the type of action like Create or Update or Delete etc. Then specify the Entity in CRM. In this case Entity is Account. Execution Mode will be Asynchronous. Now that the Plugin registration and Step registration is completed. We can login to CRM and create new Account Name in account entity. When a new Account Name is created, the Message is pushed by the plugin that we created earlier to Azure Service Bus Queue. You can view the Message using the service bus explorer tool. The message remains in the Queue as per the Time-To-Live settings in the Azure portal. After that if there is no further processing, the message gets moved to dead-letter queue. So we have pushed the messages from Account entity in CRM to Azure Service Bus Queue. Azure Service Bus Queue has many features as below FIFO Ordering guaranteed Transaction Support Automatic Dead Lettering Increasing Queue TTL (Max Unlimited) Poison Message Support Message Auto Forwarding WCF Integration Support Message Sessions supported Duplicate Detection functionality. Maximum Queue Size 1 GB to 80 GB Maximum Message Size 256 KB Maximum message by default is TTL 7 days Maximum No of Queues 10,000 (per service namespace, can be increased) Unlimited number of concurrent clients for REST based Maximum throughput upto 2000 Messages/seconds Average Latency 20-25 ms. Azure Service Bus Architecture combined with BizTalk Bridge solution deployed in Azure can provide integration solutions with scalable and monitoring capabilities at affordable cost. In the above steps, there was not coding involved due to SDK plugin registration tool. We can write the custom WCF service that will push the messages from CRM whenever a new Account is created, to Azure Service Bus Queue and then from there these messages can be picked up by BizTalk Service Bridge that listens for the incoming messages in the Queue and then process these messages to external end point or web service that can write the same in to other application or another CRM. We can track the status of these message processing in BizTalk service Tracking option. Creating the WCF service to Push the messages from CRM to Azure Service Bus Queue. Alternately we can write a custom code that will integrate the pre-defined entities and fields from CRM to other applications. Here we need Schema from Source and Target. To achieve this we need to host the WCF code and register the Assembly using the same plugin registration we used earlier. Describing the code for the same is beyond the scope of this blog. Please note the messages that we send to SB Queue through WCF service are by default in XML UTF -8 encoding, and this aspects needs to be handled while creating the processing steps in the Solutions that listens to this messages. In the next article we will have more insight in to the Messages flow in the Queues and the Processing inside the Azure BizTalk Bridges.
Share Story :
Developing Integration Solutions using Microsoft Azure BizTalk Services
Part 1 – Creating Microsoft Azure BizTalk Services and Deploying Bridge. Scope: Creating Microsoft Azure BizTalk Services on Azure Portal Developing and Deploying BizTalk Bridge on Azure. Pre-requisite: Azure Subscription to create BizTalk Service. Visual Studio for Developing BizTalk Bridge solution. Windows Azure BizTalk Services SDK (including Microsoft BizTalk Adapter Pack and Microsoft WCF LOB Adapter SDK) .NET Framework 3.5.1 Features should be enabled .NET Framework 4.5 must be installed Background: Microsoft Azure is a cloud computing platform and infrastructure, created by Microsoft, for building, deploying and managing applications and services through a global network of Microsoft-managed and Microsoft partner hosted datacenters. The cloud services as offered as PaaS (Platform as a Service) and IaaS (Infrastructure as a Service). Step 1: Creating BizTalk Service Launch windows Azure portal through URL https://manage.windowsazure.com (You can create a Trial Subscription) Go to NEW option at the bottom of the page. Select APP SERVICES → BIZTALK SERVICE → CUSTOM CREATE This BizTalk Service Creation web form allows the creation of storage Account Tracking Databases. After successfully creating the BizTalk Service you get the BizTalk URL. ) On Clicking the Connection Information Button at the bottom of the page, you get Access Connection Information. This information you need to copy to a notepad to be used during deployment of the BizTalk Bridge solution on Azure. NAMESPACE DEFAULT OWNER DEFAULT KEY Step 2: Developing the BizTalk Bridge Solution Launch Visual Studio 2012 and open a new project. Select BizTalk Service Template under folder located BizTalk Services in Visual C#. Please note BizTalk Services Templates are visible in Visual Studio 2012 only after you install the Windows Azure BizTalk Services SDK. (BizTalk Service Templates are not available in Visual Studio 2013 and 2015 even after installing the SDK) In the Visual Studio solution you need to specify 4 components. Sources Bridges (XML One way or XML Reply Request or Pass-Through bridge Destinations BizTalk Service URL Sources can be FTP / SFTP or Service Bus Queue or Subscription. Destinations have more options like FTP, FTPS, Service Bus Queue, Service end point, Blob Storage etc. Bridges can be XML one-way or Two way i.e. Reply Request and simple Pass Through Bridge. Right click anywhere in the empty space in the solution and select Properties. Enter the BizTalk Service URL (Example: https://cfsbtdemo.biztalk.windows.net). We get this URL when we create BizTalk Service in Azure portal. After placing the source, Bridge and Target blocks, connect them using connector under Bridge in toll box items. For complex solutions business logic and SCHEMA mapping between source and Target entities can be defined inside the bridges. Custom code can be written here. Step 3: Deployment Save and Build the project and Right click and select deploy. Details like ACS Namespace and Issuer Name (Default – owner) and Shared Secret needs to be entered. ACS NameSpace is the Namespace we got earlier from Azure portal on clicking connection information for the BizTalk service. Shared Secret is the Key “Default Key “ Check the status in the Visual Studio output window for the deployed components. Please Note: Deployment Name needs to be Registered / created on https://biztalksvc12.portal.biztalk.windows.net/default.aspx before deploying your bridge. (You may need Silverlight on to be able to launch this end point URL). Provide the BizTalk Service Name as in Azure portal ACS Issuer name (Default is owner) ACS Issuer secret – This is Shared Secret key from BizTalk Service Connection Information in Azure portal. Once you deploy your bridge, it appears under BRIDGES in Microsoft Azure BizTalk services (MABS) Portal. Rest of the deployed codes appear under “RESOURCES”. If you are using bridge solution to route messages from Azure Service Bus Queue to Destinations like Web service end point, you can track them under Tracking Details. In the next article we will explore the integration between the Microsoft Dynamics CRM Online and Azure Service Bus queue. Azure servicebus Queue is one of the sources that Azure BizTalk Services can listen to for Integration requirements. Please note Azure Queues and Service Bus Queues are 2 different type of Queue offered by Microsoft Azure.
Share Story :
Migrate Scribe integration setup from one AOS to another in AX 2012
To migrate Scribe integration setup from one AOS to another in AX 2012, below mentioned steps has to be performed, On the AOS server, in IIS go to the Default Web Site node. Under the node check if there is MicrosoftDynamicsAXAif60 web site. If not, go to the below link to install Microsoft Dynamics AX web services on IIS. [https://technet.microsoft.com/en-us/library/gg731848.aspx] In AX, System Administration module→Setup→Services and Application Integration Framework open the Web sites form. Create a new record for the above web site. Enter appropriate name, description and correct virtual directory path. Next go to System Administration module→Setup→Services and Application Integration Framework→Inbound ports. Follow the below steps to modify the inbound port, Select the inbound port for scribe integration. Deactivate the port. Note : Before you do this, make sure no user is online(System Administration module→Common→Users→Online users) and no messages are being processed(No xml in ScribeIn queue). On right side under the ‘Address’ group, click the drop down next to URI textbox. Select the new web site from ‘Select Web site’ form and click OK. Check if the port has all its service operations. If not, you can add them. Activate the port. This will generate new wsdl url. Copy-paste this wsdl url in a text document, we will use it later. Now, login to the Scribe server. In the Collaborations folder open any dts file in scribe workbench. In the dts file, open the Connection Manager and click ‘Edit’. Click Change Connection. Select ‘Web Services’ under Adapters. Click OK. In the Web Service Connection Manager form, select the AX web service and click ‘Edit’. Change the WSDL url. Put the url from step-3. Validate the url and Save. Perform steps-4 to step-8 for all other dts files. By doing the above steps, Inbound port url, in AX, will be changed and AX web service connections in Scribe will point to the changed url.
