Dynamics 365 Archives - Page 84 of 88 - - Page 84

Category Archives: Dynamics 365

Customization in Microsoft Dynamics AX 7

In past few days, we have explored more about AX 7 and came up with this blog in which we will tell you how to customize standard element in AX 7. In previous versions of AX customizing was as easy as clicking on standard element of AOT and customizing it. AX 7 is different; it allows customization in a lengthy process but is more organized. We will show you steps through which you can easily customize AX 7 elements. Here, we will customize CustTable Table by adding new field. Create a model in which you can customize CustTable element. Go to Dynamics AX menu -> Model Management -> Create Model   Fill the details and click Next.   Select ‘Select Existing Package’ option. Choose the package which contains the element you want to customize. Click Next.   Verify details. Click Finish.   This will open a new project dialog. Select ‘Dynamics AX Project’ and name it.   Now, add the CustTable to newly created project. Go to AOT -> Data Model -> Tables -> CustTable Right click CustTable -> Select Customize   CustTable will be added to project and will open Designer view of CustTable.   Add new field. Right Click on Field -> New -> String   Change the Properties.   Save the changes. Right Click CustTable object browser -> Select ‘Save CustTable’.   So, this is how we can customize AX 7 elements in a more organized manner. Let us know your reviews. We will soon come with more articles, as we further explore AX 7.  

Share Story :

Debug Script on Tablet/Mobile Application

Introduction: After the release of Microsoft Dynamics CRM update 1, Microsoft has removed the mobile version of form and made actual form available for the Mobile/Tablet. But, since few scripts do not work on mobile/Tablet, and work fine on the Browser, Microsoft has released the guide line that should be followed while writing the scripts. Kindly refer the below link for further details on the guide lines provide by Microsoft. https://msdn.microsoft.com/en-in/library/dn481572.aspx There are scenarios where scripts break and we are not able to debug them on phone/Tablet. Which leads to no proper error tracing by the developers. Description: The script which worked perfectly fine on the Web Browser, had issues on phone/Tablet. These scripts sometimes have more than thousand lines of code and we struggle to find what exactly is causing it to fail. Microsoft, for the same reason has now come up with a solution to debug these scripts. Follow the below steps in order to debug: Step: 1 While writing script makes sure to include the ‘debugger;’ tag in the beginning of the function or where you want to debug the code. Step: 2 Create a URL which works same as that of tablet. https://<CRMURL>/nga/main.htm?org=<OrgUniqueName>&server=<CRMURL> Step: 3: For e.g. the organization URL will look like below. Unique name of the org can be obtained from Settings -> customization -> developer resource -> unique name Before opening the above mentioned URL make sure you are already logged in the web browser else the link will not work. Step 4: You will receive the below message whenever there is a change in the customization. Makes sure to download the latest changes, it will take few seconds.   Step: 5 Once the download is completed you can test your script by pressing F12 button, in our case I have registered the script on change of Phone field as you can see below. As soon as the value of Phone field changes it takes me to the debugger line. (PFB the screen shot for the same) Using this approach, you can debug the script on the desktop using the tablet version of CRM.   Conclusion: We can debug the mobile version of script on the web browser by the steps provided. Which will allow better debugging than the manual one that the legacy system had.  

Share Story :

Interactive Service Hub

What is Interactive Service Hub? Interactive Service Dashboard is a single place where Customer Service Manager/Customer Service Representative can perform all customer service related activities. This feature is introduced in CRM Online 2016 Update and is available on CRM 2016 On Premise as well. What is not supported by Interactive Service Hub? This feature is available only on Web Browser and is not available on clients like CRM for Outlook, CRM for Phones and CRM for Tablets. Right to Left (RTL) languages are not supported. e.g. Hebrew and Arabic Third party accessibility aids such as Screen readers are not supported. Keyboard navigation is also not possible in Interactive Service Dashboard. How to access Interactive Service Hub? Below are the 3 ways in which you can access Interactive Service Hub: From CRM Notifications ribbon   From Settings -> Interactive Service Hub   From putting URL in browser CRM Online Environments: https://<CRM Server>.crm#.dynamics.com/engagementhub.aspx CRM On Premise Environments: <your CRM Server>/<orgname>/engagementhub.aspx Internet Facing Deployed (IFD) Environments: https://< hostname[:port]>/engagementhub.apsx. Manage Different Record Types Interactive Service Hub can be enabled for any entity. By default, it is enabled for below entities: Accounts Contacts Cases Activities: Email, Task, Appointment, Phone Call, Social Activity Queue Items Dashboards Social Profiles Entities which are enabled for mobile are also available for use in the interactive service hub, but these records are read-only. Interactive Service Hub Navigation Menu Note: Navigation bar of Interactive Service Hub is different than that of CRM. In Interactive Service Hub navigation, only those entities are shown that are enabled for Interactive Experience. Like CRM Navigation, we can go to any interactive experience enabled entity from top Menu as shown in below screenshot. When you open any record in Interactive Service Hub, you can navigate between records of the view (from where record is opened) using arrow Keys. You can also see recent records similar to CRM as shown in below screenshot Or You can create records using ‘+’ sign in navigation bar. You can use Search option to search records in Interactive Experience Enabled entities. Understand new form layouts in Interactive Service Hub Business Processes In interactive service hub, business processes are shown as a process bar on forms on top. By default, the process bar is collapsed and when user clicks on any state, its fields are popup as fly out. Default collapsed view: When user clicks on stage: Entity Forms Unlike CRM forms, in interactive service hub, tabs on forms are placed horizontally as shown in below screenshot. Entity Card For interactive service hub, new form type is introduced as Card. Card is shown as a tile in interactive service hub with most important details of the record in shorter area. Below screenshot shows how cards are shown in interactive service hub. Timeline In interactive service hub, on case record, the timeline section is added to help users in tracking all case history right within the same page without navigating to multiple places. You can create any new activity, search or filter activities in Timeline section. You can also perform quick actions on the activities right from Timeline section. You can navigate to respective activity by clicking title of an activity. Related section on entity record We can see list of related records in same page of entity record form. For cases, user can directly see knowledge articles. Dashboards My knowledge dashboard This dashboard is designed to provide an overview of knowledge base articles, e.g. number of knowledge articles and their status, etc. This helps knowledge manager in knowing about expiry month of articles, number of articles to review, etc. Stream shows data from views/ queues. In knowledge dashboard, the stream shows the active articles assigned to the author. Charts provide a count of relevant records in the streams, such as articles by status reason, articles by owner, etc. Charts can be drilled down to see details. Tiles give authors numerical values to get an idea about the status of knowledge data. We can perform actions directly from dashboards without opening record. e.g. if we want to close a case without, we can directly do so from dashboard as shown in below screenshot: Customize Interactive Service Hub Forms Supported Entities Below are the only out of box entities which are allowed for interactive service hub and are by default enabled: Account Contact Case Out-of-the-box activities (phone, task, email, appointment, and social activity) Social Profile Queue Item Knowledge Article Custom entities can be enabled for interactive experience. Entity Form Types Main – Interactive experience Only used in interactive service hub. This is the main form to which is shown when user access any entity record in interactive service hub. Card Form Only used in interactive service hub. This is the form which is shown in dashboard stream areas. Quick Create This form is shared between Dynamics CRM and Interactive Service Hub. This form is used to quickly add records and is rendered vertically at the right side of the screen in interactive service hub. Quick View This form is shared between Dynamics CRM and Interactive Service Hub. This form is used to show related information of any lookup field. Reference Link How to create/design interactive forms: https://technet.microsoft.com/library/b6df6d11-9272-4c68-b516-e12c6e701622.aspx How to customize interactive service hub: https://technet.microsoft.com/library/d1446a95-14bf-4b15-a905-72fce07f4c76.aspx Work with interactive service hub form components: https://technet.microsoft.com/en-us/library/mt622060.aspx  

Share Story :

CRM → Salesforce real-time integration

Introduction We frequently come across requirements where customers use Dynamics CRM and Salesforce CRM and want to synchronize data between both the systems. We generally have requirements where data should flow back and forth from Dynamics CRM and Salesforce CRM. In this blog, I have focused on one way real time integration of Case entity from Dynamics CRM → Salesforce CRM. Requirements We have total 4 environments as per below: Dynamics CRM Development Dynamics CRM Production Salesforce CRM Sandbox Salesforce CRM Production The requirement is to perform development on development environment and then deploy the changes on production environment. There should be no code changes done on production environment and hence the solution should be configurable. Only below basic fields of Case entities should be mapped i.e. transferred from CRM Online à Case Title (Text field) Customer (Lookup of Account field) Contact (Lookup of Contact field) Description (Multiple line of Text field) Origin (Option Set) Salesforce Id (Text field – custom field to track GUID of case record created in Salesforce) Basics of Salesforce API Salesforce has list of APIs (https://developer.salesforce.com/page/Salesforce_APIs) from which we have used Partner WSDL (SOAP API). To login to Salesforce using APIs, we need to have below 3 details: User Id Password Security Token Unlike Dynamics CRM, Salesforce API uses 2 separate URLs based on environment type i.e. Sandbox/Production. Sandbox Environment uses Production Environment uses Implementation Approach To ensure no code changes on production, we have used configuration entity which will keep below configuration details: Salesforce User Id Salesforce Password Salesforce Security Token Salesforce environment Type We have used Partner WSDL to communicate between Salesforce environment and CRM Online environment. Hence based on Salesforce Environment Type, we are using login URLs. To achieve this, we have done a trick (explained below in Implementation Steps section). On create/update of Cases in CRM Online, we have written a plugin that sends data to Salesforce environment. Implementation Steps Note: I have used a separate class file that keeps all constant values. Hence whenever you find any code in all capitals, kindly replace constant values as per your requirements. Generate Partner WSDL for Salesforce environment (https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_quickstart_steps_generate_wsdl.htm) Create Configuration entity in CRM with below fields: Key (text) Value (text) Create a plugin class and perform below operations in the plugin. Add web reference using downloaded Partner WSDL (https://msdn.microsoft.com/en-us/library/bb628649(v=vs.100).aspx). After adding web reference, you will see reference in Solution explorer as per below. Expand Reference.map and open Reference.cs class. Locate SforceService() method and create a copy of the same with one string parameter as per below and save the file. In plugin class, fetch configuration details from Configuration entity. It should contain 4 records. Based on the environment type, pass appropriate URL to the service to authenticate with Salesforce environment. private void ConnectToSalesforce() { LoginResult currentLoginResult = null; switch (this.dctConfigurations[CodeConfiguration.ConfigurationKeys.SalesforceEnvironmentType.ToString()]) { case CodeConfiguration.SALESFORCE_SANDBOX_ENVIRONMENT_TYPE: this.sfdcBinding = new SforceService(CodeConfiguration.SALESFORCE_SANDBOX_WEBSERVICE_URL); break; case CodeConfiguration.SALESFORCE_PRODUCTION_ENVIRONMENT_TYPE: this.sfdcBinding = new SforceService(CodeConfiguration.SALESFORCE_PRODUCTION_WEBSERVICE_URL); break; default: throw new InvalidPluginExecutionException(CodeConfiguration.ERROR_MESSAGE_CONFIGURATION_NOT_FOUND); } currentLoginResult = this.sfdcBinding.login(this.dctConfigurations[CodeConfiguration.ConfigurationKeys.SalesforceUsername.ToString()], this.dctConfigurations[CodeConfiguration.ConfigurationKeys.SalesforcePassword.ToString()] + this.dctConfigurations[CodeConfiguration.ConfigurationKeys.SalesforceSecurityToken.ToString()]); this.sfdcBinding.Url = currentLoginResult.serverUrl; this.sfdcBinding.SessionHeaderValue = new SessionHeader(); this.sfdcBinding.SessionHeaderValue.sessionId = currentLoginResult.sessionId; } Once authenticated, use the session id to perform CRUD operations. Below is a sample code. Create an object of case record to be created in Salesforce sObject caseRecord = new sObject(); caseRecord.type = Case_Salesforce.LOGICAL_NAME; Create objects of attributes of the case record XmlElement[] caseFields = new XmlElement[10]; XmlDocument doc = new XmlDocument(); caseFields[counter] = doc.CreateElement(Case_Salesforce.ATTR_CASESUBJECT); caseFields[counter++].InnerText =”Any value”; caseFields[counter] = doc.CreateElement(Case_Salesforce.ATTR_CONTACT); caseFields[counter++].InnerText =”Salesforce Guid of Contact record”; caseFields[counter] = doc.CreateElement(Case_Salesforce.ATTR_ORIGIN); caseFields[counter++].InnerText =”text value of an option from picklist”; Add attributes to an object of case record caseRecord.Any = caseFields; sObject[] caseList = new sObject[1]; caseList[0] = caseRecord; Create record in Salesforce SaveResult[] results = null; results = this.sfdcBinding.create(caseList); for (int j = 0; j < results.Length; j++) { if (results[j].success) { Entity oCase = new Entity(Case_CRM.LOGICAL_NAME, this.currentEntity.Id); oCase[Case_CRM.ATTR_SALESFORCEID] = results[j].id; this.service.Update(oCase); LogIntegrationDetails(“Record Id: ” + this.currentEntity.Id.ToString(), null, (int)IntegrationLog.Status.Success); } else { for (int k = 0; k < results[j].errors.Count(); k++) { Error err = results[j].errors[k]; } } } Key Takeaways From Dynamics CRM → Salesforce, real time integration is possible using CRM plugins and Salesforce APIs. Salesforce uses different authentication URLs for different type of environments. We have handled this scenario by modifying Reference.cs class file. Configuration entity is used to make the code configurable. We are storing back GUID of case record created in Salesforce which will be used in case of update plugin.  

Share Story :

ClickDimensions Campaign Automation

Posted On April 11, 2016 by Admin Posted in

In this article, we are going to see how ClickDimensions enables Marketers to create interactive automations based on prospects or user behaviours which will help to design unique paths for participants to follow as they interact with our messaging it also helps to create Lead-nurture marketing campaigns, Sales engagement campaigns, promotional or event campaigns, new customer on boarding and retention campaigns, and many more. Campaign Automations allows to set up a dynamic paths for a contact or lead to follow based on actions taken by that contact or lead. For example, if the contact fills out a form on your website than you can send them an email then wait to see if they click on Link A or Link B. If they click on Link A send them Email A, but if they click on Link B send them Email B. Navigate to Marketing > Marketing Automation > Campaign Automation.   Choose New   This window will open where you will need to fill in a few fields.   Name [Required]: This is the name of the record as you will see it in CRM. Campaign: You may choose a CRM Campaign here if desired. This will associate this record to that CRM Campaign. Which will help us to track the ROI (Return on Investment) Completed Instances: Number of instances of Contacts and Leads who have finished running through this Campaign Automation. This is a read only field that will automatically be filled in once the Campaign Automation has been published. Owner [Required]: You will be the owner but you may change this if you’d like. Status [Read only]: This will change when the Campaign Automation is published, paused, or stopped from within the builder window.   After filling out any required fields, click Save.   Then click Open Builder.   You will now see the canvas where you will build your campaign automations.   On the right side there are Triggers and Series. Click and drag these onto the canvas.   Connect them together to make a path by clicking on the green dot on the right side of the trigger and dragging to the green dot on the left side of the series.   You can create a Decision Node by connecting the trigger to multiple Series. This will allow you to choose a path based on something in the previous trigger, values of form fields for example.   Let’s go through each pieces of the Campaign Automation builder Triggers These are the different ways contacts/leads can be added to the Campaign Automation: Submitted For Email Interaction Added to List Manual Add   Submitted Form   The Submitted Form trigger may be used as an Entry Point Trigger or an Internal Trigger. If the trigger is an entry point and a contact or lead has filled out the selected form, the Campaign Automation will begin. Add a Submitted Form trigger to the canvas and click on the node. You will see the right panel change to show the properties.   Display Name (Required): Once you select a form this will change automatically to the name of that form, however you may change it to whatever you would like. Select form (Required): Choose an already created form. Here we have selected Service quick start form Campaign: If you set a campaign on the Campaign Automation record this field will be populated with that campaign. You can also choose something different. This will set the Campaign field on the Posted Form record. Note: A note is an optional field for any details that need to be written about the trigger. Email Interaction   The Email Interaction trigger may be used as an Entry Point Trigger or an Internal Trigger. If the trigger is an entry point an Email Send will be selected and then sent when the Campaign Automation is published. It will then check to see which contacts click or open that email. If the trigger is an internal trigger it will check for clicks or opens on any selected email(s) sent in the preceding series via Send Email actions. Add an Email Interaction trigger to the canvas and click on the node. You will see the right panel change to show the properties.   Display Name (Required): Type a Display Name to show on the canvas. Select Email Send (Required): Choose a draft Email Send. Before you publish this Campaign Automation make sure to add recipients to your Email Send. Note: A note is an optional field for any details that need to be written about the trigger. Select which interaction to monitor: Email Clicked: If checked, you will be given the option to choose which links to look for. Email Opened (without click): Check this if you want to do something if someone opens the email but never clicks Selecting an interaction If Email Clicked is checked, a link to select which links will appear.   Click this and a window will open with the email chosen in the Email Send lookup.   As you can see in the above figure the email has got all together 9 links. Select one link, several links, or all links. If any one of the links selected is clicked, this trigger will be activated. If Email Opened (without click) is ALSO checked, you may select the amount of time to wait to see if the contact/lead clicked any of the selected links before checking to see if the contact/lead at least opened the email. If you do not select a time it will just wait to see if the recipient interacted in any way.   If Email Opened (without click) is the only one checked it will just wait to see if the email was opened. Upon clicking in the canvas, you changes will be saved. To edit the node’s properties, simply click on the node and make any necessary changes. Added to List   The Added to List trigger may be used as an Entry Point Trigger or an Internal Trigger. If this trigger is an entry point, any time a contact or lead is added to the specified marketing list, that contact/lead will enter the automation. To … Continue reading ClickDimensions Campaign Automation

Share Story :

ClickDimensions: Sending Customers a Specific Email Based on Form Field Submission

Posted On April 5, 2016 by Admin Posted in

In this article we are going to see how to send a specific email to a customer depending on how they answer a certain Form Field. This is something which can be easily accomplished with a workflow. In our example, we have created a form asking people which EazyAPP product they are interested in learning about: Gravity forms, Client Portal or Marketing with ClickDimensions. We want customers to be sent a specific email with regards to the specific product they requested for.   The form field we created is called Field Interest, and we made it a list with the three options.   We then created three separate email templates that we would like to send customers based on how they answered our field. Here is the email template for customers interested in Gravity Forms:   Now we can set up our workflow that allows specific emails to be sent based on how our Field Interest form field was answered by each customer. We set up this workflow to run on Posted Fields, set the scope to organization and set it to run when the record is created.   For our first step, we added a Check Condition that asks if the posted field is Field Interest and the posted form is our ClickDimensions Product Interest Form.   Then we asked if the value of that field equals Surveys. Remember, the value is how the data is stored in CRM, which may be different than the label that appears on your form.   When the value is Surveys, we added a Create Record step and chose “Send ClickDimensions Email.”   We then opened up the Set Properties and uploaded our survey email template. We also added the recipient as the Contact associated with the posted form.   We then repeated these last two steps for our Client Portal and Marketing (ClickDimensions) options. Our final workflow looks like this:   Now, customers who fill out our form will receive an email specifically about the product they were interested in.  

Share Story :

AX7-Global General Journal

In AX7, a new feature of Global General Journal has been released. The use of this feature is only for those companies where there are more than one legal entities in AX and the users who are doing accounting entries are same. The benefit of this feature is the user no need to switch legal entities while creating Journal Entries which can ultimately can save lot of time. The path to create global general journal is General Ledger->Journal Entries->Global General Journal. When you create a new journal, you can select the Legal entity and the journal name of that entity for which you want to create the journal entry. You can then continue to create the journal lines inside the current entity and you can directly Open the journal in the other entity if you wish to, or you can complete the entire journal entity, validate and post in the current entity and the entry will be created and posted in the destination entity.  

Share Story :

Solution Enhancements in CRM 2016

Posted On March 22, 2016 by Posted in

Introduction In earlier versions of CRM (before 2016), when a solution was exported from one environment to another, the entity and all of its assets i.e. forms, views, relationships, visualizations, attributes etc. were exported. Exporting all unrequired assets could unintentionally modify objects on Target Environment or carry unintended dependencies. In CRM 2016, solution patches can be created that contain ‘sub components’ of the entity that needs to be modified and then roll up the patches in the updated version of managed solution and export the updated version in target environment. In the section below, we look at how ‘clone to patch’ and ‘clone to solution’ features work in CRM 2016 to accomplish the above. Clone to Patch Example: Suppose there is a ‘Base Solution’, with all assets of Account and Contact entity but now we want to edit the length of field say ‘Account Number’ from 20 to 40. Step 1: Since this field is a part of ‘Base Solution’ and changing the field length is only requirement we will create a patch for the original solution. So we use ‘Clone as Patch’ option for ‘Base Solution’. Since it’s a patch, system allows only last two digits to be modified for versioning. This option creates a patch for the parent solution as shown below.     Step 2: Now in the patched solution we will only add the Account Number field of Account entity and update the field length to 40.     Step 3: When the patched solution is imported in another environment, it is applied on top of base solution and account number field is updated. Things to note when creating patches: When a patch is created at that time the parent solution is locked and can no longer be modified. Patches can be installed on another environment only If the parent solution is present in that environment. Patches should be exported as managed and should be imported on top of managed parent solution. Do not use unmanaged Patch solutions in Production environments. Patch is always created for Unmanaged Parent solutions. In the future, if any other changes are to be done in ‘Base Solution’, we can create another patch for the ‘Base Solution’ and follow the above procedure. Clone to Solution So now when we plan to have next version of solution, we use the option ‘Clone to Solution’. All related patches to the ‘Base Solution’ get rolled up in the newly created version of ‘Base Solution’ and the patches are deleted automatically.     If we want the upgraded solution to be imported on target environment, import the Upgraded Solution and then select the Parent Base Solution and choose option ‘Apply Solution Upgrade’. This option removes the previous parent solution and keeps the Upgraded new solution in the environment. Conclusion Thus with solution enhancements in CRM 2016, instead of making changes in the entire parent solution, solution patches can be created with the changed customizations and then with the help of Clone Solution option the patches gets rolled up and new version of parent solution is created.  

Share Story :

Track Event Participation

Introduction In this blog, we are going to discuss how to create a ClickDimensions Event Participation record from WordPress plugin Gravity Forms. Pre requisites In order to create Event Participation record User must have Gravity Forms plugin ClickDimensions entities (Events and Event Participation) Requirement We had a client with requirement that whenever a user registers for an event, event participation record should be created linking event and contact. Event and Event Participation are ClickDimensions entities. Solution to requirement By following the below step we can track the Event Participation records. Step 1: Create an option set field “Event” on Contact form in CRM. The field consists of list of different events that need to be displayed to the registration users.   Step 2: The option set values should be same as Event records created. The name should be same as we are going to retrieve the events record based on the name. As shown here, the Event name and the Option set label are same i.e. “Conztruct Queenstown”   Step 3: On the registration form, same list of events should be present in the drop down list. The value and name of the option sets should be same as option set values in CRM.   Step 4: Write an asynchronous plugin which will get triggered when a contact is created or updated. When a contact is created from Gravity forms, asynchronous plugin triggers and checks if any event is registered. If registered event found in CRM, event participation record will be created. When contact is updated, asynchronous plugin triggers and checks whether new event is registered or not. If new event is registered, create a new event participation record. If event is not registered, update the existing event participation record. When existing contact is updated from CRM, asynchronous plugin triggers and it checks if the event field is empty or not. If event field is empty, the plugin stops and If event field is not empty it updates the event participation record with same contact and event. Thus Event Participation record gets created with contact and Event field associated to each other and the registration count on the event gets increased by 1.   We hope this have given you a useful information on Tracking Event Participation record in CRM.  

Share Story :

Inventory Posting AX 7

Posted On March 8, 2016 by Posted in

Posting account use for the setup ledger account for automatic ledger transactions which are generated from Inventory transactions. In AX 7 posting name has been changed for Sales, Purchase, Inventory and Production. Below are posting name differences in AX 2012 and AX 7. In AX 7 Posting names are more logical and easy to understand.  

Share Story :

SEARCH BLOGS:

FOLLOW CLOUDFRONTS BLOG :


Secured By miniOrange