Summary:

An issue may occur in versions 7.1 and 7.2 of Sage CRM whereby a JavaScript error appears when attempting to file an email from a contact that does not exist in CRM. This issue will only occur in instances of Sage CRM that are integrated with Sage 200.



Symptoms:

The issue can be reproduced when using the Exchange Lite plugin (installed to Outlook clients when the Exchange integration is enabled). On filing an email from an unknown contact against a company and person that exist in CRM, but are not linked to Sage 200, the following JavaScript error will be displayed:

An error has occurred in the script on this page.

Line: 30
Char: 1953

Unable to get value of the property 'value': object is null or undefined.

URL: http://crm-server/crm/eware.dll/Do?Act=6011...

Cause:

The issue is caused by a client-side script referencing cmli_comm_accountid and _HIDDENcmli_comm_accountidTEXT, which do not exist on that screen.



Work around:

If using a copy of Sage CRM on a version prior to v7.2e, the issue can be worked around by amending the FilIt -> FileCRM custom caption with the following:


E-mail Target
<script>
window.attachEvent("onload", function () {

    if (document.location.href.indexOf("Act=6011")>-1) {

        var allLinks = document.getElementsByTagName("a");
        var tempOnClick = "";

        for (var i=0; i<allLinks.length; i++) {

            tempOnClick = allLinks[i].onclick+"";

            if (tempOnClick.indexOf("saveTarget")>-1) {

                allLinks[i].onclick = Function("case145105(); getSelection(); if(validateTarget()) {saveTarget();}");
            }
        }
    }
});

function case145105() {

    if (!getElm("cmli_comm_accountid") && !getElm("_HIDDENcmli_comm_accountidTEXT")) {

        var dummy1 = document.createElement("input"); 
        with (dummy1) { type = "hidden"; id = "cmli_comm_accountid"; value = "-1"; }

        var dummy2 = document.createElement("input");
        with (dummy2) { type = "hidden"; id = "_HIDDENcmli_comm_accountidTEXT"; value = "";}

        document.EntryForm.appendChild(dummy1);
        document.EntryForm.appendChild(dummy2);
    }
}
function getElm (a) { return document.getElementById(a);}
</script>

 

Status:

This issue has been resolved by a code change in v7.2e.