Skip to main content

Posts

Dynamics 365 online and Adx portal on-premise. Are they compatible?

     Adxstudio portals became a part of Dynamics 365. It is definitely a great news and a first step in the long way.   Dynamics 365 on-line has an amazing set of features that really seduce customers to move to cloud.    Dynamics 365 on-line has option to enable a Portal Add-On. It will install a  8.x   portal in crm instance and allow you select from a list of available pre-build solutions like Customer portal, Partner portal etc. The platform has limitations related to portal customization, development, custom coding. Hard to say how long will take to MS and ex-Adx team to provide users with the same level of flexibility and development features as they use to have on premise. In the same time, customers are looking for work arounds to combine Dynamics 365 on-line with on premise portals. This article describes such integration. Adx and MS still provide support for on premise portals of versions 7.0.0018-23. ! Please ...

Crm solution generic issue: The import of solution failed

     Dynamics crm 2016 gave us a revolutionary option to work with solutions more granularly, option for true inheritance from managed solutions, build-in holding solution option etc.       In the same time some old “diseases” are still there. Managing dev and QA instances, I’ve found an issue that appears as a generic error in log file and cannot be tracked with tracer or event viewer. By my experience, the issue may happen if: 1.        You deleted a relationship and then created a field with same name in the same entity. 2.        You deleted a local option set field and created a  field based on global option set in the same entity with the same name.         The symptom of those two issues will appear in the target crm instance in the import log file: “ The content of the import file is not valid. You must select a text...

Dynamics CRM Product. Plugin strategy.

Plugin strategy. Managed Steps Concept.           Most of modern products (managed solutions) for Dynamics crm, those we import into our environments, have some ways to be configured. By creating “setting” entity, Azure configuration for marketing solutions, changing templates or workflows. If we deal with off-line then workflow is not an option any more, but plugins are. In case of plugin we deal with hardly configurable component and have not many options to work around. Disable step, use unsecure/secure configuration (if vendor gives us such option), ask vendor for patch. This sort of workarounds.           Managed Steps Concept is an approach for dynamics crm plugins architecting and coding. Vendors can utilize it to improve products maintenance and make it more client friendly.           The proposed design is useful for any organi...

Refresh CRM 2016 Form after record save using JavaScript

      I had a need to refresh crm 2016 form right after initial save. Surprisingly all good old solution from my archive were not effective in crm 2016. Neither window.location.reload(), nor sdk’s refresh, nor trivial setTimeout. "setTimeout" would work if not bunch of heavy plugins and JavaScrippt validation on save event.     I found that Google knows about it as many as I do. Okay, no copy past this time J     After half an hour I found a nice solution with really minimal risk of browser leaking. The idea based on fact that OnLoad event occurs without form refresh right after change of form type. We need an independent flag to catch that. The code below does the trick. function refreshFormAfterInitialSave() { if (Xrm.Page.ui.getFormType() == 1) { top.callN = 1; } if (Xrm.Page.ui.getFormType() == 2 && top.callN == 1) { setTimeout(function () { top.callN = n...

Adx portal: Improve JavaScript Upload Experience

     While using "Custom Javascript" area in Web pages, Web Form Steps etc. I found it a little bit uncomfortable in use.      The max length of 10 000 characters not always enough and if I add a compiled content then debugging is blocked.      I ended up creating dynamic script loader. It picks up a url (like "~/Areas/FolderName/scriptName.min.js") from “Custom Javascript" area. Then script checks if such a namespace exists and object is loaded. If necessary, it loads the script. The idea is very simple. Have an object loaded with master page to load JavaScript and CSS files: if (typeof (gHelper) == "undefined") { gHelper = { __namespace: true }; } gHelper.data = { addedFiles: "", } gHelper.fn = (function (window, document) { function loadfile(filepath, filetype) { var fileref; // JavaScript file from solution ...