For Developers

Support for our UBCMS developers.

On this page:

Last reviewed: November 18, 2024

Permissible Activities

To maintain security and stability of the UBCMS, we have established the following guidelines for customization and development.

Site authors (developers) can do the following.

  • Add unfiltered HTML, CSS or JavaScript to individual pages using our HTML Snippet, or to every page in a site by adding the HTML snippet to the site's header or footer.
  • Customize the look and feel of an entire site with a custom CSS stylesheet and custom JavaScript. That can be added in an HTML Snippet in your site's header or footer, or instead to the main.css and main.js within the /etc/designs area for your site within CRXDE.
  • Embed custom external content in individual pages by adding JavaScript or an <iframe> to an HTML Snippet. This works well for forms, videos and maps.
  • Integrate with custom back-end applications by embedding the front-end application framework into individual pages and calling the backend APIs through JavaScript in an HTML Snippet. (See a JamStack example - usual login required.)
  • Use an API to automate publishing external content into UBCMS pages (see a RestAPI example - usual login required). This is a way for an external script (e.g. PHP) to manage UBCMS pages instead of using Author tools. Typically this external script would run once to create pages that would then be edited in the normal way in Author going forward (such as a migration), or it would run continuously and be the only way certain pages are maintained (perhaps from an external database).
  • Access pieces of UBCMS content via REST API, such as to download your UBCMS header and footer to an external server to extend your UBCMS look and feel to other sites.
  • Develop custimized sites outside the UBCMS. UBit supports additional hosting platforms (e.g. UB CaaS, Wordpress).
  • Use the UBCMS Training Server as a sandbox separate from your real site. This is a fully functional AEM environment equivalent to the main Author server, but content developed there cannot be transfered back to the Author server. (Request a sandbox on the Training Server.)

These actions are not allowed.

  • Installing custom server-side AEM code (e.g. Java, JSP, HTL):
    • On our servers.
    • On your own university server or a third party server.

Please keep in mind:

  • Any customizations must be supported by your team.
  • We run code deployments on a weekly schedule and suggest you test regularly to address any code in your site that is affected.

Code Deployments and Blackout Windows

FYI, we normally deploy code changes on Wednesday mornings before business hours, but emergency changes may be pushed out with little or no notice.

If you work requires changes on the backend, we avoid periods of peak university activity (e.g. start of semester, and examss) as well as holidays.

Akamai Content Delivery Network

The Akamai content delivery network (CDN) delivers our Web pages through high-speed 'edge' servers physically located around the globe, instead of through the 'origin' servers directly (our UBCMS servers). The CDN helps accelerate, filter, and secure web traffic. 

Analytics / Google Analytics / Google Tag Manager (GTM/UA/GA4)

The UBCMS supports the collection of usage data including Google Analytics and Universal Analytics. UB’s centralized code (GTM-T5KRRKT) is added automatically to all published UBCMS pages. 

University Communications manages a Google Analytics GA4 property that collects usage data across all UBCMS websites. This data is available to all units in the UBCMS. UWLs and Site Owners/Managers can request viewer access to the GA4 property.

University Communications maintains a set of tags that collect data into different event categories. Each time a user 'clicks' a tagged element, Google Analytics records the link text (label) and URL under the corresponding category.

More details about UB's GA4 property and event tags is in the main Analytics documentation.

Heatmap data can also be collected. University Communications has been using hotjar. Contact the team for more details.

Tracking Tags

These guidelines apply to adding Google Analytics to UBCMS websites.

  • All sites in the UBCMS are required to run the main tracking code (GTM-T5KRRKT). The main code can be disabled for an individual page in the Google Analytics section in the Advanced tab of that page's Properties, but we strongly discourage this action.
  • Please be aware that while adding multiple Google Analytics codes should not have a large impact on page performance, adding analytics scripts to pages (e.g. for heat mapping) can have an impact. Always be cautious before adding any custom code to your pages, and test for function and accessibility as recommended for all customizations.
  • A single code can be added by entering its type and ID in the Google Analytics section in the Advanced tab of page Properties. This will be applied to child pages as well, so it is typically set on your home page and is the preferred way to add a second code.
  • Additional codes can also be added in an HTML Snippet in your site's header, with custom JavaScript to load it on every page of your site. But the page Properties method is preferred to this approach.
  • Custom HTML code, such as analytics snippets can also be added to the <head> section of an individual page under Head Content in the Advanced tab of that page's Properties. This code only applies to that one page.

To work correctly, Google Analytics can be placed in an HTML Snippet on the header (or footer), or in the Properties of your site's home page, but NOT in the header or footer page Properties.

Access to GA4/GTM

Author Debugging Tools

CRXDE

The link to CRXDE is off the Start page. Look on the left for the Tools hammer icon. Click that to reveal 'General'. Click that to reveal the link to CRXDE (developers only).

Tag Admin Console

The link to the Tag Admin Console is off the Start page. Look on the left for the Tools hammer icon. Click that to reveal 'General'. Click that to reveal the link to Tags (admins only).

User Admin / Group Manager

The links to the User Admin and Group Manager Tools are off the Start page. Look on the left for the Tools hammer icon. Click that to reveal Security. Click that to reveal the link to both user tools (admins only).

Emulator / Mobile Device Simulator

Display your page as it would appear in mobile phones and other size devices.

Copy Content to Another Page

You can copy and paste content from one browser tab to another.

Compare Pages (DIFF)

Compare two versions of a page, usually the current with the last published.

Compare Two Different Pages

Use this trick to compare two different pages side by side in one window. It's similar to the Diff tool, but for any pages you specify, and without markup.

Sandbox / Experimental Space

In addition to special sandbox areas, ALL UBCMS users have permissions for the QA Server. This server has a copy of all UBCMS sites from Author that is normally refreshed every weekend.  Authors can revise a recent copy of their real site to make experimental changes but remember these changes will only be safe until the next sitewide refresh, cannot  be directly copied back to the Author environment, and we do not guarantee the QA Server will always be available with a fresh copy of Author pages. (The main purpose of the QA Server is for testing and troubleshooting. Syncing content from Author to QA or temporarily stopping that sync is all in service of carrying out various backend work by our development team.)

QA Authors (require UB network or VPN access):

QA Dispatcher - to view live pages (require UB network or VPN access):  

Tree Activation Tool

Publish (activate) multiple pages or assets in a specified path of the UBCMS.

Be very cautious with this tool. There is no undo feature!

Especially useful for large numbers of pages, and nested sub-folders. It is also a safer (more controlled) alternative to some AEM tools such as Manage Publication.

The process can be limited to just modified or just activated pages, and can ignore deactivated pages. It also has a 'dry run' mode.

Recommendations:

  • Do a dry run first to check paths and number of resources.
  • Make sure <path> is included correctly (eg: /content/www/sitename, or /content/sitename).
  • Normally, activation takes about 1 minute per 200 pages.
  • If connection is lost, the process should continue.
  • Activate one tree at a time.
  • Do not activate over 500 objects 8:00 AM - 5:00 PM weekdays (replication queues back up and authors complain)
  • Status can be checked by by viewing page status indicators in author once they catch up. EAS can also view replication queues and error logs.

SiteImprove

SiteImprove-Only Setting

The 'Siteimprove-Only Block' is located in page Properties, Advanced tab, under Site Visibility, but can only be adjusted by System Admins.

This is normally applied to the home page when a site is first created. It is used to allow advanced access by SiteImprove for pre-launch accessibility testing and normally removed when a site launches.

When set, your live site can only be seen by the SiteImprove platform. People and crawlers will see a 403 server error. It is not a 'noindex' block.

SiteImprove Known Issues (for UBCMS elements)

Page Load Speed

Formstack Forms

RSS Feeds (from external sources)

Master Classes

Embedding I - Developer Master Class (5/8/2014)

Solutions Group Date: May 8, 2014

Presenter: Kevin Eye

Embedding II: Accessing UBCMS Content via REST APIs - Developer Master Class (7/31/2014)

Solutions Group Date: July 31, 2014

Presenter: Kevin Eye

Making Your Pages Load Faster (1/21/2022)

Solutions Group Date: January 21, 2022

Presenters: Rebecca Bernstein, Nick Peterson, Kevin Eye & Mary Henesey

Additional Resources

Was This Information Helpful?

(Required)
(Required)
(so we can thank you or request more details)
(Required)
(buffalo.edu addresses only please)
(Required)