Skip Ribbon Commands
Skip to main content
Plus Consulting Home > Blogs
November 01
Microsoft Names Plus Consulting One of 10 National Service Providers

 

MICROSOFT ANNOUNCES PLUS CONSULTING’S ENTRY INTO ESTEEMED

NATIONAL SOLUTION PROVIDER (NSP) PROGRAM

 

PLUS CONSULTING IS ONE OF ONLY 10 MICROSOFT PARTNERS ADDED TO NSP OUT OF 100,000+ US PARTNERS

FOR IMMEDIATE RELEASE - Plus Consulting, a business and IT strategy consultancy, has earned one of Microsoft’s most prestigious designations, National Solution Provider (NSP).

Plus Consulting is now one of less than 50 partners included in Microsoft’s NSP portfolio in the USA.  This designation represents the top .01% of companies in Microsoft’s partner ecosystem.  Strong sales performance and commitment to deliver solutions that leverage Microsoft technologies while achieving great customer satisfaction has allowed Plus Consulting to be recognized as a national leader.

Plus Consulting’s Microsoft competencies and technical certifications include Gold Cloud Productivity, Gold Cloud Customer Relationship Management, Gold Data Analytics, Gold Collaboration and Content, Gold Customer Relationship Management, Silver Cloud Platform, Silver Messaging, and Silver Devices and Deployment.  The significant addition of being admitted into the NSP program will enable Plus Consulting to be even more responsive to customer needs given the program’s direct and constant interaction with a myriad of Microsoft executives.  Furthermore, the NSP program will greatly aid in Plus Consulting’s efforts to remain at the forefront of the constant evolution of Microsoft’s suite of business solutions.

“We are proud to earn this elite designation and believe it is a testament to our strong partnership with Microsoft and our expertise, experience and commitment to provide comprehensive and innovative solutions to our clients,” said Steve Smith, CEO. “We look forward to our continued partnership with Microsoft and providing excellence in innovation and implementation of Microsoft technologies to our clients.”

About Plus Consulting

Strategy, process and planning - essential words in business, and at the core of Plus Consulting’s methodology for nearly 17 years. Our offerings include a full suite of services around IT, including CRM, business intelligence, cybersecurity, Microsoft platform solutions, application development, talent management, training and support. Our clients around the world depend on us to have a deep understanding of their industry, their business, and their people as an essential part of every project. We believe in identifying the “why” before proposing the “how.” For more information, please visit 30TUwww.plusconsulting.comU30T, call 800.340.0155 or email 30Tinfo@plusconsulting.com30T

October 24
DOM Manipulation in CRM 2016

Microsoft recently made changes to the way pages and form JavaScript are loaded in Dynamics CRM. As such, it is no longer possible to manipulate DOM elements simply using form JavaScript (the elements you’re trying to manipulate don’t exist yet when the code is loading).

 

Manipulating DOM elements in CRM has never been supported, but there may be times when it’s unavoidable. Keep in mind that this type of customization is highly vulnerable to breaking during upgrades.

 

The example below is very simple, we just want to change the background of the Description field on an Opportunity.

 

crm.png

 

 

 

The way we can introduce our JavaScript onto the page is to include it into an HTML web resource somewhere on the page. We can set the web resource not to be visible, and since it loads after the other elements, it will be able to access those elements so we can alter them. The above was achieved using this code:

 

<!DOCTYPE html>

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="X-UA-Compatible" content="IE=10" />

<title>Title</title>

    

<script>

 

window.parent.document.getElementById("description_d").style.background="red";

               

</script>

<body>

<div id="sample"></div>

</body>

</html>

 

The key difference in your code between accessing elements here and from within regular form JavaScript is that you will need to use window.parent to navigate outside of your Web Resource. If you’re using a library like jQuery, make sure to include it in your Web Resources folder and to include a reference to it in a script tag.

 DOM.png

 

While this is a simple example, using this method opens up the possibility of a range of customizations which can expand the utility of your clients’ CRM forms.

October 18
Microsoft Dynamics CRM – Online vs On Premise

Once a company settles on Microsoft Dynamics CRM as a solution to their business needs, they must settle on a how to deploy Dynamics CRM. Generally, there are two deployment models: online and on premise. For the purposes of this discussion, Microsoft partner hosted is equivalent to on premise deployment.

Selecting a deployment option is not just an IT decision. An organization must understand the budget they have for a CRM deployment, the support that they can realistically provide for CRM, and the current and projected hardware state of the organization. The topics below give a starting point to understanding what needs to be considered when selecting a CRM deployment option. Without a comprehensive understanding of organization needs, a project will quickly overrun scope and budget and may not provide a long term solution.

Questions to Keep In Mind

Total Cost of Ownership

               An organization must identify who is responsible for managing the CRM deployment and the cost of managing the deployment. The entire lifecycle should be considered in these evaluations.[i] As part of the evaluation, an organization should evaluate the total cost of ownership (TCO) of their CRM project. TCO includes both maintenance and implementation costs of a CRM system. These costs can include, software licenses, server licenses, consulting fees, IT maintenance fees, and hardware purchases. On premise license costs are for the use of the software and do not have management costs built in. In contrast, an online solution has access and maintenance costs built into the per user fee. The TCO of a Dynamics CRM deployment will also vary depending on organization size, correct licensing, and how long the organization plans to use the CRM deployment.

 

Capital vs. Operational Costs

               An on premise deployment is typically considered a capital expense. An organization is investing in hardware, software and personnel to purchase, deploy, and maintain a CRM system. The organization owns the hardware and must maintain and upgrade hardware and software as needed or desired.

               An online deployment is usually considered an operational expense. It is an ongoing cost that an organization must pay to run and support the business. With an online hosted CRM, an organization is not purchasing any assets outright, and is paying Microsoft to use hardware and perform all maintenance, backups, and security procedures.

 

Release Cycle and Customization

               Customization needs, in addition to preferred Microsoft Dynamics CRM update cycles, should be determined when evaluating deployment options. There are restrictions and best practices that are more important or wholly enforced online that are not as rigid in an on premise deployment. This is because Microsoft controls, tests, and deploys any upgrades or rollouts to online users. Due to this, a company that has heavy or unique customization needs may be better with on premise deployments. Microsoft encourages companies to follow best practices and use Dynamics CRM with included customizations as much as possible for online deployments.

For a more in depth discussion on the unique challenges and boundaries for designing and implementing online CRM, see Patterns and Principles for CRM Online Solution Builders by Andy Schultz and Marc Schweigert.[ii] Another resource on design and building Dynamic CRM is Design for Cloud with Microsoft Dynamics CRM, a presentation at Microsoft Convergence 2014 Europe by Amir Jafri and Ian Smith.[iii]

Comparison Matrix

Below is a matrix that compares online and on premise deployment of Microsoft Dynamics CRM.

CATEGORY

ONLINE

ON PREMISE

 

 

Update Cycle

Two releases per year; typically in Q2 and Q4.

Annually, Q4 Only (includes Q2 content)

Update/ Upgrade Process

Office 365 Admin approves upgrade pre-installation; updates and rollups applied automatically; upgrade can happen on your cycle

Upgrades and update rollups installed by local admin

Mobile Apps for Phones and Tablets

Yes

Yes w/ IFD and Office 365 (for mobile/tablet)

Offline Functionality on Mobile (2016)

Yes

No

Dynamics CRM App for Outlook for Exchange Online

Yes

No

SharePoint, Exchange, Skype for Business, and Yammer integration

Yes

Yes

Part of Office 365 (This enables integrations with additional Office 365 services such as Office 365 Groups, Excel Online, Power BI, and OneNote.)

Yes

No

User Authentication

separate authentication, even if AD syncs with Office 365 Azure AD

Active Directory authentication via ADFS,

Third party integration tools (Scribe, SSIS with Kingwaysoft)

Yes

Yes

Very large data integration

Improved via Optimization, using bulk load API, reducing latency by running integration from Azure server

Sometimes faster if integration server is close (low latency)

ExpressRoute (direct network connection to the CRM Online data center)

Yes

No

Inside View (Insights)

Included

Additional Cost

Social Listening

Included

Additional Cost

Workflows/dialogs

200

Unlimited

Custom Entities

300

Unlimited

SSRS Reporting

FetchXML (T-SQL from locally replicated reporting server)

FetchXML or T-SQL

Direct Server Access (Direct access to the database)

No

Yes

Data Requests Channels

CRM SDK vis CRM web services, Odata feeds, or FetchXML

SQL Access Directly; reports using T-SQL

Storage

Amount Purchased from CRM Online

Amount on Server

Additional Storage

5GB to start, 2.5GB for every 20 professional user licenses up to 50GB (additional GB for $9.99 / month)

limited by server hard drives

Sandbox

Provides non-production environments as part of subscription (25 user minimum for free sandbox)

Can be installed; depends on local server availability (Separate CRM install that is responsibility of local CRM admin)

Security

https://www.microsoft.com/en-us/trustcenter/CloudServices/Dynamics

You control it (depends on organizational infrastructure, policies, and practices)

Data Backup

write own code to extract data for backup or third party tool (Azure, Scribe, etc.)

manage own maintenance plans directly in SQL Server and/or native SQL backups using variety of products and services to automate backup

Plugin Support

Plugins run only in Sandbox mode; cannot access 3rd party dll's

Full plugin support

Online Extensions Acquired by Microsoft

Parature, Social Engagement, MDM - Marketing

N/A

SQL Indexing

Through a Microsoft engineer

Can be done directly

Custom ASP.NET pages

No

Yes

Troubleshooting

Contact Microsoft Engineer

Locally - have availability to more processes and hardware

Task flows

Yes

No

Office 365 Groups

Yes

No

Cortana integration

Yes

No

Static Marketing List Limitation

50,000

N/A

NEW IN DYNAMICS CRM 2016

Service Hub

Yes

Yes

Document Templates (Word, Excel)

Yes

                                  Yes

Excel Integration

Yes

No

Azure Machine Learning

Yes

No

FieldOne

Yes

Possibly

Unified Service Desk

Yes

Yes

Next Generation Global Search

Yes

No



 

 

[ii] http://blogs.msdn.com/b/crm/archive/2015/04/29/microsoft-dynamics-crm-online-patterns-amp-principles-for-solution-builders.aspx

[iii] http://convergence.evo-td.com/library/BKCRM406

June 14
Infor CRM: Tracing Infor CRM nHibernate

by Carla Tillman, Senior Applications Consultant​​

Have you ever wondered what is happening beneath the covers of the is happening beneath the covers of the is happening beneath the covers of the is happening beneath the covers of the Infor CRM framework with nHibernate? Want to see what your HQL queries are doing? Want to find out how many entities are pulled when you hit a new page?

Well you aWell you are in luck – Hibernating Rhinos has a great profiling tool and it is Well you are in luck – Hibernating Rhinos has a great profiling tool and it is Well you are in luck – Hibernating Rhinos has a great profiling tool and it is Infor CRM integration ready. All you have to do is add the NHibernate Profiler to your system, add the DLL to the  integration ready. All you have to do is add the NHibernate Profiler to your system, add the DLL to the  integration ready. All you have to do is add the NHibernate Profiler to your system, add the DLL to the Infor CRM bin folder and  bin folder and uncomment one line. That’s it.

Follow these 6 easy steps to set it up and start profiling!

  1. Download the (Trial or purchase) http://www.hibernatingrhinos.com/downloads/NHProf/latest
    1. Request a License (if using Trial) http://www.hibernatingrhinos.com/products/NHProf/trial
      h1.png
    1. Add the Profiling Assembly to Add the Profiling Assembly to Add the Profiling Assembly to Infor CRM  (http://www.hibernatingrhinos.com/products/nhprof/learn)
      h2.png
  2. Now we need to make Now we need to make Now we need to make Infor CRM aware of the profiler. Open Global.cs and Uncomment Line 2
    //#define EnableNHibernateProfiler
  3. (Build & Deploy)
    h3.png SalesLogix Developers have even left helpful comments further down in the file about NHibernateProfiler!

    Notes from the Global.cs file on NHibernateProfiler:
    // NOTE: To use NHibernate Profiler ( http://nhprof.com )
    // 1. Add a reference to HibernatingRhinos.NHibernate.Profiler.Appender.dll assembly
    // (Do not overwrite log4net.dll if prompted.)
    // 2. Uncomment the #define EnableNHibernateProfiler at the top of this Visual C# source file.


    #if EnableNHibernateProfiler
    HibernatingRhinos.Profiler.Appender.NHibernate.NHibernateProfiler.Initialize();
    #endif


  4. Place the trial license you requested in step 2 on your SalesLogix system & Open NHprof.exe from your downloaded files; it will ask you to browse to your license. You only have to do this once.

Open SLX Web Client and move around;. nHibernate is now profiling SLX. Pointing, loading or wondering if you have everything right - not required! By far and away I love the Sessions / Entities Tab (fig. 1) mix and the Analysis / Unique Queries mix (fig.2) Play around – read the excellent documentation provided by hibernating rhinos at: http://www.hibernatingrhinos.com/Products/NHProf/learn

h4.png
Figure 1

h5.png
Figure 2

The rest is up to you! Happy Profiling!

May 03
Infor CRM: Cleaning up the sticky bits in SalesLogix deployments

by Carla Tillman, Senior Applications Consultant​​

Building and Deploying in the SalesLogix web could not be easier - one button and push you have a new/ updated web site. An entire project has been built, DLL’s are updated, nHibernate has been configured, Code snippets, Forms and JavaScript – oh my! They are all pushed out to a file location, website configurations are set/reset and the application pool has been restarted.

Personally –I think that is nifty. But sometimes all of that niftiness isn’t helpful when changes to Business rules, custom code actions and occasionally other areas need to be pushed out. You know you made the changes, you see them in Application Architect but the web site doesn’t reflect your hard work. Why?

The short answer is that pages & DLLs have been parsed and compiled into runnable code. The files are then used by your website to deliver the end product – however they get ‘stuck’ in processes and are not always replaced by the newer code. In order to parse and compile the new code, we have to clean out the bits that are stuck in process. This method was nicknamed by a coworker of mine, Mike, in the early days of 7.5x; and it has stuck around since.

“Nuke and Pave”

Assumption – you are logged into Application Architect as the only user who has been using the Build and Deploy process. This avoids future build issues – but let’s save that for a different post.)

  1. Open Application Architect and Clean the Build Folders. As of the writing of this article, that function is located off of the main toolbar under Build | Clean Build Folders
  2. Close Application Architect (And Visual Studio if open)
  3. Perform an IISReset on the server
  4. Delete all files located in the following folder locations, but not the folder. (Adjust path locations for nonstandard installations.)
    1. C:\inetpub\wwwroot\SLXClient
    2. C:\inetpub\wwwroot\Sdata
    3. C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files
  5. Reopen Application Architect; Build & Deploy

I’ve made a habit of using the Nuke & Pave action with deployments that include new/ or code that will be rolled into a DLL such as Business Rules or Code Actions.

If you are working straight from Visual studio and cannot get your new code to show; you need only Reset IIS and delete the Temporary ASP.NET files.

April 08
Infor CRM: When your SalesLogix Activity Extensions are not registering

Start with the basics according to documentation: (Activity Customization Examples In Sage SalesLogix v8.0 Sage SalesLogix White Paper)

  1. Make sure you have updated you base.Master (and if desired: dashboard.Master) in two locations: dojoConfig1 path and the require[] area2.
  2. Configure you sdatalistview to read from your ActivityManager.js3
  3. Implement required files according to documentation. (main, activitymanager, activityservice and extensions)

If you have validated the above items and still cannot see your extensions listed when viewing the Source tab in browser debug; there might be another explanation.4

Activity Extensions

Frequently when building, deploying and bundling your new activity Extensions and *.master files: what you start with and what you end up with are not always the same.

There are three issues around this area to be aware of.

    1. Do not Import files into the model, build and deploy over your customizations without first taking a zip file of your Custom folder and files. Even if you see the correct version shooing in Application Architect after import, what gets built and deploy can be up to 3 versions old. Yes three. There seems to be a shadow/hidden copy of all files that will sometimes resurface – forcing older versions of your work to surface and deploy. I do not know where this comes from but I do know it happens. So “insure” your hard work by keeping a separate copy of your latest work outside of the model until this issue can be nailed down!
  1. Not all new js/html files will automatically be usable while building your activities. You may have to import them into the model (bearing item 1 in mind), build and deploy in order to use them.
  2. Verify *All your files have been deployed. Believe it or not – they don’t always do so. Again I suspect this has to do with file regression issues. You will see the files in your model, but not in your newly deployed web site.

Validate your deployments and keep a set of your latest and greatest nearby.

1
var dojoConfig = {
parseOnLoad: true,
async: true,
isDebug: false,
locale: '<%# Global.Locale %>',
paths: {
'Sage': '../../../jscript/Sage',
'BigDeal': '../../../jscript/BigDeal'
},
deferredOnError: function (e) {
if (dojo.config.isDebug) {
} …

From SalesLogix Big Deal Activity Extensions documentation

2
script type="text/javascript">
require([
"dojo/_base/html",
"dijit/_base/manager",
"dojo/parser",
"dijit/Toolbar",
"dijit/layout/ContentPane",
[... Other Requires]
"Sage/Utility/File/DragDropWatcher",
"Sage/Utility/File/DefaultDropHandler",
"Sage/TaskPane/ActivityTaskPaneActions",
"BigDeal/main"
],

From SalesLogix Big Deal Activity Extensions documentation

3
Appendix D: Smart Part Changes
To customize the Activity Manager, customizers can configure the actmgrSDataListView smart part to use a custom SDataList View Provider. For the customizations in this example, the bundle does this for you; it changes “MainViewDefinition” from “Sage.MainView.ActivityManager” to “BigDeal.ActivityManager”. If you want to revert, click Configure Smart Part and set MainViewDefinition=Sage.MainView.ActivityManager.
From SalesLogix Big Deal Activity Extensions documentation


4
This issue may or may not fall in the domain of SalesLogix. This can very well be coming from ASP, Projects or other system functionality.
March 01
Ready to Migrate to Windows 10? Here's Why You Need to Be.

​With a set of announcements from Intel, AMD, Qualcomm and the like, Windows versions prior to 10 will not be supported on the next generation of chips.

What does this mean for you?

In most organizations it means looking at a migration to Windows 10 if you're going to keep up with advancements in hardware technology.  Couple this with the previous news about the end of support for IE for all versions prior to 11 and you have a highly compelling reason to look at getting your migration plans moving.  Partnering with business units to ensure that your LOB applications will work on Windows 10 and IE 11 is no small task and planning/testing will be critical to your success.

March 01
Using Google Maps Instead of MapQuest

Background


The Infor CRM web client currently uses Map Quest as there mapping provider. Recently our Plus APAC Infor team put together an enhancement to use Google Maps instead of Map Quest. Last month Map Quest changed their URL. As a result when users try to access the maps they now get a "Whoops" message page from Map Quest.

Below are instructions from our APAC Wiki on how to change the Web client to use Google maps instead of Map Quest. As per the last line, it could also be modified to use the new MapQuest URL as well.

Some Notes


  1. These instructions are for Infor CRM V8.0, 8.1 and 8.2.
  2. We need the changes to be available wherever the Address control is being used.
  3. We want the changes to be made in such a way that it minimizes the work required during upgrades.
  4. As a reminder you should check a service providers licensing agreement before use. Anyone wanting to use Google maps should check Google's licensing.

Possible Solutions


To make the changes available wherever the control is being used, we could do one of the following.

  1. Change the control directly in the following files
    • - ..\Portal Manager\SlxClient\SupportFiles\jscript\UI\Controls\Address.js
    • - ..\Portal Manager\SlxClient\SupportFiles\jscript\UI\Controls\templates\address.html
    • The issue with editing the address.js file directly, is that it is not automatically minimized into the combined javascript file (i.e. Sage-Cobmbined.js) that the slxclient web site uses. It should also be noted that as Infor have not supplied the required .jsb file we can ont do this manually. We could of course edit the combined file directly, file directly, is that it is not automatically minimized into the combined javascript file (i.e. Sage-Cobmbined.js) that the slxclient web site uses. It should also be noted that as Infor have not supplied the required .jsb file we can ont do this manually. We could of course edit the combined file directly, file directly, is that it is not automatically minimized into the combined javascript file (i.e. Sage-Cobmbined.js) that the slxclient web site uses. It should also be noted that as Infor have not supplied the required .jsb file we can ont do this manually. We could of course edit the combined file directly, however this would create an upgrade nightmare that we would like to avoid.

  2. Create a Javascript file that extends the existing Address class. We will need to extend the class whenever the address control can be found on the screen.

In the rest of this article we are going to show you a way to extend the existing Address class.
Extending the Address Control

Extending the Address Control


To implement this functionality we will need to extend/replace to of the existing functions in the control. We will use the dojo/aspect functionality to do this.

//====================================================================================================
// This script is added to the form by the PlusConsulting.Modules.Address.GoogleMaps.dll Module
// This modules is added to the SlxClient Portal via the following.
// 1. In the Application Architect Double click on SlxClient under the ..\PortalManager
// 2. Click on the Modules Tab
//====================================================================================================
require(['dojo/aspect',
		 'dojo/ready'
], function (aspect, ready) {
    ready(function () {
        if (Sage.UI.Controls.Address) {
            // If the developer has not overridden the default value change from MapQuest to Google Maps
            aspect.after(Sage.UI.Controls.Address.prototype, "postCreate", function () {
                if (this.imageData.imageMapQuestAltText === "MapQuest")
                    this.imageData.imageMapQuestAltText = "Google Maps";
 
                if (this.imageData.imageMapQuestToolText === "MapQuest")
                    this.imageData.imageMapQuestToolText = "Google Maps";
 
                if (this.domNode.lastElementChild.alt === "MapQuest")
                    this.domNode.lastElementChild.alt = "Google Maps";
 
                if (this.domNode.lastElementChild.title === "MapQuest")
                    this.domNode.lastElementChild.title = "Google Maps";
            });
 
            // Replace the showMap function with our own which will call Google Maps
            aspect.around(Sage.UI.Controls.Address.prototype, "showMap", function (originalShowMap) {
                return function () {
                    this.createFormItems();
                    var values = this.getAddressValues();
                    var map = { 'streetaddress': 'addr1', 'addr2': 'addr2', 'city': 'city', 'state': 'state', 'zip': 'postalcode', 'country': 'country' };
                    var parameters = {};
 
                    for (var key in map) {
                        if (values[map[key]])
                            parameters[key] = (typeof values[map[key]] === "object") ? values[map[key]].text : values[map[key]];
                    }
 
                    var queryParams = [];
                    for (var paramKey in parameters) {
                        queryParams.push(encodeURIComponent(parameters[paramKey]));
                    }
 
                    var url = "http://maps.google.com/?&q=" + queryParams.join("+");
                    var options = 'directories=no,location=no,menubar=no,pageXOffset=0px,pageYOffset=0px,scrollbars=yes,status=no,titlebar=no,toolbar=yes';
                    window.open(url, '', options);
                }
            });
        }
    });
});

Lets have a look at the code above in more detail.

  1. We encapsulate our code in the dojo ready function so that it will not run until the DOM has been loaded.
  2. We only want to extend the Address control if it exists.
  3. Add some code to the end of the PostCreate function using dojo's aspect.after function to replace any instances of the text MapQuest with Google Maps.
  4. Replace the showMap function using dojo's aspect.around function to call Google Maps instead of MapQuest.
  5. Add the javascript GoogleMaps.js file into the Infor CRM model. In our case we put it in ..\Poral Manager\SlxClient\SupportFiles\PlusConsulting\jscript\Address\GoogleMaps.js

Hooking it all up


We need to make sure that the GoogleMaps.js file above, is loaded and executed for every new page. There are a few ways to do this.

  1. Add code into each smartparts that uses the address control to register and start our GoogleMaps.js. This is obviously a lot of work and it is also easy to forget to add this code when creating or modifying a smartpart that includes the address control.
  2. Modify the master templates to include the script and run it. Although this would work, we know from previous Infor CRM updates that they modify the templates on a regular basis, hence this would require more work during an upgrade.
  3. Load and run the javascript using a module. This will mean that during an upgrade we will only need to test it, as we have not modified any existing files.

In our case we are going to implement this with option 3 above. The following steps show you how to do this.

  1. We need to create a .NET dll using the code listed below to include our javascript file GoogleMaps.js, in the page and make sure no to include and register the script as a startup.
  2. The DLL will need to be placed into ..\Portal Manager\SlxClient\SupportFiles\bin
  3. Add the module to the slxclient.
    • - In the Application Architect goto the Project Explorer and navigate to ..\Portal Manager
    • - Double click on SlxClient
    • - Click on the Modules Tab
    • - Click on the + (Add Modules) icon.
    • - Expand PlusConsulting.Modules.Address.GoogleMaps
    • - Expand PlusConsulting.Modules.Address
    • - Click on GoogleMaps

  4. Compile and Deploy the site.
using Sage.Platform.Application;
using System;
using System.Web;
using System.Web.UI;
 
namespace PlusConsulting.Modules.Address
{
    public class GoogleMaps : IModule
    {
        public void Load()
        {
            Page page = HttpContext.Current.Handler as Page;
 
            if (page == null)
            {
                return;
            }
 
            // Add our override Javascript
            ScriptManager.RegisterClientScriptInclude(page, GetType(), "PlusConsultingModulesAddressGoogleMaps", page.ResolveUrl("~/PlusConsulting/jscript/Address/GoogleMaps.js"));
            ScriptManager.RegisterStartupScript(page, GetType(), "PlusConsultingModulesAddressGoogleMaps", string.Empty, true);
        }
    }
}

Conclusion


The functionality in the Address control will now show Google maps instead of MapQuest.

The techniques above can also be used to change the OOTB MapQuest URL that Infor CRM uses to reflect changes made to the URL recently by MapQuest.

Please note that all the code above is for use at the user's own risk. If you have any issues, or would like some further assistance, reach out to our Infor CRM team at infor@plusconsulting.com.

October 12
Exchange 2016 is Available: What to Consider Before Migrating

Exchange 2016 is officially available! So what does that mean if you’re planning on moving forward from your existing Exchange platform? There are several considerations to think about before you think about migrating.

Outlook versions. If you have legacy clients (Outlook 2007 or earlier), you have to migrate to a newer version of Office. While Outlook 2010 is supported, to really drive the benefits out to the end-user community, you need to migrate to at least Outlook 2013. Outlook 2016 is recommended. One of the biggest reasons has to do with how Outlook connects. Exchange 2016 moves the Outlook Anywhere protocol from RPC over HTTP to MAPI over HTTP for performance and reliability reasons. The other piece that’s important from an Outlook perspective is that in Outlook 2013 or later you can tune how much data is stored in the OST file for offline use. This feature does NOT exist in Outlook 2010.

exchange.png


The architecture on the server side is changing as well with Exchange 2016. To really exploit the productivity features fully, the implementation of an Office Web Apps server is recommended. Why? Because that allows a user to edit documents in OWA inline without having to download the document.

Interoperability is supported with Exchange 2010 and 2013. For environments on Exchange 2007 and earlier, a stepped migration scenario will need to be used to get the environment to a supported version for migration, or 3rd party migration tools will need to come into play. Exchange 2010 and 2013 are supported in a full coexistence model.

What if you have developed applications using MAPI/CDO? It’s not supported in Exchange 2016, REST APIs and Web Services are the development tools moving forward.

Data Loss Prevention, Search, eDiscovery, and Archiving have all been improved and the native toolsets may have the capability to reduce reliance on third-party tools to handle this work.

There are many other things that have been changed with respect to planning the architecture and deployment of Exchange 2016 in your environment if you’ve decided to keep Exchange on-premises instead of moving to Office 365 for mail.

July 27
Infor CRM: Extending the ActivityEditor HTML Template

by Carla Tillman, Senior Applications Consultant​​

Creating dynamic controls with the Activity Extensions and dojo frame work gives you powerful tools to work with. And if you are extending the Extensions area with new fields and functionality, stick with the dynamic controls. However if the only goal is to change the order of the fields or add one, you may want to consider changing the HTML template instead of trying to dynamically move items around at runtime.

  1. Start by taking a copy of the current templates\ActivityEditor.html and place it inside of your activity customizations folder.
  2. Make your changes, taking care to keep all other pieces intact and controls inside of TableContainers. **
  3. Update our ActivityEditor.js to read from the new Template
    1. Update the Define area with the following includes (if they do not already exist in the list)
      • 'Sage/UI/Controls/Lookup',
      • 'Sage/MainView/ActivityMgr/ActivityEditor',
      • 'dijit/_TemplatedMixin',
      • 'dijit/_WidgetsInTemplateMixin',
      • 'Sage/_Templated',
      • 'dojo/text!./templates/ActivityEditorTemplate.html'
    2. Update the corresponding function call
      • SageActivityEditor,
      • TemplatedMixin,
      • WidgetsInTemplateMixin,
      • Templated,
      • ActivityTemplate
  4. Lastly, change the first line of code in your function to the following:

    var editor = declare('YourNameSpace.ActivityEditor', [SageActivityEditor, Templated], { widgetTemplate: new Simplate(eval(ActivityTemplate)),

  5. There may be additional changes required to get the pathing correct. (Especially if you do this for the HistoryEditor.html)

**Note: I do not recommend removing controls as it will interfere with the OOTB code base. Hide these controls only.

1 - 10Next

Built on SharePoint by Plus Consulting ©2015