Sage CRM 7.2: The Impact of Frameset Removal on Code in Upgraded Systems

Hints, Tips and Tricks

Technical Hints Tips and Tricks that cover customization and development using Sage CRM. API usage and coding are covered.

Sage CRM 7.2: The Impact of Frameset Removal on Code in Upgraded Systems

  • Comments 2
  • Likes

The removal of the framesets in Sage CRM 7.2 has an impact in the follow areas 

  • onChange and Custom Content scripts. 
  • ASP extensions 
  • .NET extensions 
  • CTI 

Note:  Depending on how you have coded customizations in Custom Gadgets there may be a  potential impact on your Interactive Dashboards.   The way you have included JavaScript in Classic Content Blocks or have used references to ASP pages and the COM API in a Custom Gadget need to be considered.

Along with the move to the new DIV defined pages there are big changes to way in which JavaScript included in interface.

In Sage CRM v7.1 and earlier much of the JavaScript delivered into the user interface was embedded in the code.  It was the eware.dll that generated the JavaScript used to control the interface and it would be merged it with the HTML.  

In Sage CRM 7.2 the JavaScript is no longer wrapped up in the eware.dll but instead is contained in js files which are referenced and deployed to the client.

There is a new folder in the WWWRoot, called js, and files added there will be deployed to the client.  These can either be in the CRM or custom folders.

In components and customizations you originally created for Sage CRM 7.1 there may be references to JavaScript objects and functions contained in the code returned to screen.  All your client side code will need to be checked.

Some of these system generated object and functions that were created in the eware_mid frame in Sage CRM v7.1 and referenced by your code should still be fine.  Examples of these objects are

CurrentUser and GetKeys().  These continue to exist in the page in which the code runs. 

But in Sage CRM v7.1 there also used to be objects that were created in other frames. Examples of these are

  • WritetoFrame() 
  • Arrays (userslist, usersdislist, targetlistslist)

Code that references these objects will need to be changed and tested. 

Note: These JavaScript objects are client side and so are typically used onChange scripts and in the custom content of screen & list blocks (including those called by RunBlock).  They are, however, also used in ASP pages and .NET assemblies.

You will need to check the meta data for the screens and lists that contain client side customizations.  The following SQL statements can be run in the database to find those screens with defined custom content and onChange scripts.

[code language="sql"]
select * from Custom_ScreenObjects where Cobj_CustomContent is not null

select * from Custom_Screens where SeaP_OnChangeScript is not null;



  • Is there a list of new clientside functions? A developers guide? Is there a best practice guide? ie. This is how is used to be done, but you'd replace it with this? Are all old scripts that don't directly reference the frameset likely to still work?

  • Yep.  It is accessed via the online System Administrators Guide.

    The direct link is