Ektron Quick Tip: conditional form field if checkbox is checked

I recently had a requirement to build an Ektron HTML form that has conditional validation.  The form has a text field that is only required if a check box on the form is checked.  To accomplish this I had to find the correct expression to use in the custom validation field.

  • To set validation for a form field, right click on the field and select Field Properties to bring up the properties window.
  • Click on the Validation tab.
  • For this case, we want to use custom validation, so select (custom) from the dropdown list.
  • In the Condition text box, enter the following expression (replace {checkboxName} with the field name of your checkobx):
    • string-length(.) > 0 or ../{chexboxName} != ‘true’
    • So, if your checkbox field name is makeRequired, then your expression would be
      • string-length(.) > 0 or ../makeRequired != ‘true’

ektron_validation

Content Management System Implementation Considerations

Content Management Systems (CMS) can simplify content creation and enable sensible workflows, however without the proper planning, strategy, and implementation you can end up with a convoluted and difficult website to maintain.  Proper planning and strategy considerations need to take place to insure for a smooth implementation.

CMS vs Static site

There are some fundamental differences between developing using a CMS product versus developing a static website or a custom data driven website.  A typical development team for a web site may consist of  back end/server side engineers, front end HTML/CSS/JavaScript engineers, and maybe database and system administrators.  The tech leads or the client will dictate the technology stack based on business requirements and then the development is entirely in the hands of the team.

When developing for a Content Management System, the CMS the system may be selected based on the preferred technical architecture of the team, or the CMS may even dictate the technology stack that will be used.  It is a bit of the “chicken or the egg” scenario. Is the CMS selected first because it best meets the business requirements for the site and therefore technology decisions will be made to meet the system requirements, or is there a technology specific team in place that chooses the CMS that most closely fits the current skill set of the developers?  In any case, using a CMS introduces additional considerations:

Staffing
Do you have developers that are experienced with the technology stack used for the CMS? If not do you need to hire to meet this need or contract the work to an outside development firm?

Environments
Development, QA, and Production server environments will need to be configured to meet the needs of the CMS.  Do you have the necessary infrastructure  to support the development and production needs, or do you need to purchase additional hardware and/or software licenses?

API
Does the CMS have a full featured API that you plan to use for the development of your site? If so, make sure you evaluate the API before you make your final CMS selection.  Is there documentation, code examples, and an active development community?

Support
Keep in mind that the CMS adds an additional layer of code and architecture that you will have to support.  If there are issues and bugs in the CMS they are now your issues and bugs.  Does the CMS have a support team?  If so, ensure that their support levels and availability meet your needs.  Additionally ensure that the CMS has regular and stable updates to address bugs.

Training

No matter which CMS you choose for your website if you don’t know how to use it your experience is not going to be a pleasant one.  Take the time to learn the system before you start the site strategy, design, and development.  Most enterprise level CMS products offer training for developers, marketers, and administrators.  There are also a multitude of tutorials and online resources available.

Training should not only be reserved for developers and content editors. It is important that the Strategists and Information Architects understand how the system works; how the content is created and related as well as any limitations of the system.  Finally, as the content in a CMS is defined by the content editors, designers may need to change their normal design paradigm as page elements can not always be strictly defined.

Planning, Design and Development

Content Models
A content model is a definition of fields and properties used to define any type of content.  Once a model is defined, multiple instances of  structured content can be created using that model as a blue print.  Many enterprise CMS products incorporate some method of defining a content model, and then using that model to create content.

For example, a model can be created to define a simple promotional block.  The promo block may contain a header, a link, and an image. So, our content model would contain fields for a Header, a link, and an Image. It may also define constraints or validation rules, such as the Header can not exceed 25 characters, or that the link is optional.  The model does not contain any data, just the definition of the fields.  From this model, we can now create as many promo blocks based on the defined fields in this content model.

Careful planning must take place when developing the content model strategy as there is a delicate balance between flexibility and ease of content management.  The most basic content type in most systems contains one HTML or Rich Text field that allows editors to create content in a similar manner to using a word processor.  This offers the most flexibility as they can use HTML and basic styles to create any number of custom page content and layouts. The problem that you may run into, however, is that many content editors may not know even basic HTML and the end result many times is an unattractive and poorly laid out page that offers no consistency across the site.  On the flip side of the coin, you can create very specific content models for each page type and prescribe the exact content allowed.  There are several benefits when using this method.  When entering content, the content editor will know the specific data required to create the content and will have a structured method for doing so. This can also simplify design efforts as it is easier to design for structured content than free form content. For the developer, the data fields are specifically defined so they can discretely place the fields at defined locations to match the design comps.  Additionally these fields can be used for sorting, filtering, and searching content. The downside of this strategy is that it can be very rigid and does not allow for any variance in future updates.

The content model strategy is a very complex and important step in the development of a CMS site.  This task is a collaboration between the Information Architects, Copy Writers, Strategists, Engineers, and Designers and may need to be tweaked during the development cycles of the site.  Here are some things to keep in mind when creating the content models:

  • Create simple and reusable models.  For example: if you are creating content models to define page types that contain a Related Links component; create one reusable Related Links model that can be related to the pages (as opposed to adding related links fields to each separate page model).  This allows the Related Links model to be defined once and adds flexibility to the page model if you decide to remove the Related Links from the page, or swap it out with a different component all together.
  • Consider combining similar models and develop the templates to display only the fields that have been populated.  This reduces redundant content models and clutter in the CMS.
  • When creating the Models and relationships keep in mind that the content editors may have various levels of technical ability, so a balance needs to be found between meeting development needs and maintaining ease of content entry.
  • Some CMS applications have Page Builder or Site Builder features that allow editors to drop content widgets or blocks into pre-defined layout templates.  This offers great flexibility for marketers and editors to create custom content, but also requires designers and developers to approach the implementation from a different paradigm.  Allow for extra time for widget or custom content block creation if your team does not have experience with this development model.

Style Guides
One of the features of many CMS tools is the ability of content editors to create formatted content and posts for the web site.  Most of the tools have a WYSIWYG editor that provides word processor functionality as well as the ability to edit the HTML markup.  This can cause design challenges as there is no way of knowing what content will be entered in the future.  A good style guide, both in design and in development, can go a long way towards mitigating this issue. Design should provide the fonts, colors,  text-sizes, etc. of all of the basic HTML elements (headers, paragraphs, bullet lists, etc.) as well as comping out basic layouts for image placement and other common styles.  Developers should create generic content markup that can be used to test all of the possible HTML elements (within reason) that can be implemented in the editor.  Also keep in mind when using CSS reset style sheets to make sure the rich text content is not included.

Design Considerations
Design for CMS sites can be challenging.  Basic page types, promotions, and other content models may follow normal design patterns. However, with many content managed sites, the designers will not know all of the elements that may be on the page.  Some systems allow drag and drop content widgets where the editors can create their own unique pages.  Images and other assets may also be defined by content editors and administrators, so the design comps may be laden with For Placement Only images or design suggestions that may not be followed by the editors.  With responsive sites, content will need to display differently at different screen widths and on different devices.  It may be beneficial to design more at a component or widget level first showing these blocks at the various responsive breakpoints, and then mocking up sample pages based on these blocks.

Development Considerations
Developers will face many of the same issues as the designers and these teams will need to work closely through the entire project life cycle.  Since there may be no way to know what content will be entered into the CMS developers should create a base set of HTML markup that may be used and ensure that they are displayed correctly.  Additionally, the back end engineers and font end engineers need to work closely to ensure that the markup used in the templates matches the markup generated by the CMS.   For responsive sites, each content block should be developed to display correctly at the different breakpoints.  For example, if your site has promotions you should create them so they display correctly if used in different footprints in the templates.  This means that you may want to consider defining a finite number of promotion dimensions that can be used across all templates to limit the number of variations that need to be created.

Many times the tech lead will not only lead the coding initiative, but will also be the initial CMS site Admin,  the System Administrator, as well as a technical writer and trainer who will need to be able to communicate how the system works to non-technical users.  The tech lead will need to know the CMS and architecture inside and out, so ensure that there is time in the schedule for the leads to become familiar with the system before implementation begins.  As most CMS applications offer flexibility on how you can create the site and access the content, a comprehensive user guide will need to be created for the editors that goes above and beyond the standard CMS documentation.  Make sure you allow for time in the schedule for this documentation to be created.  Finally, issues and questions will arise about how to implement features of the CMS or bugs related to the CMS.  These issues will require calls to the support team or scanning user forums and  knowledge base articles in search of solutions.  So, especially if this is the first implementation of a particular CMS, know that there will be extra time needed to iron out CMS specific issues.

Content Loading
After the development of the site is complete the editors will need to load all of the content for the site.  However, the content strategy and copy writing can not wait for development to finish as this could add weeks or months to the schedule.  Once the content models are created and approved the copy writers and content strategists should start work on content creation.

If you are vendor or agency creating the site for for a client you must clearly define the responsibility of the content creation and loading. Depending on the size and depth of a site this task could take hundreds of hours.  If it is determined that you are responsible for the content and content loading, there are additional measures you should consider.

  • Create a content inventory of what needs to be created (images, files, and copy).
    • Who is responsible for image creation?
  • Once the content models and inventory are created, start writing the copy, do now wait for development to finish.
  • Agree to a content review cycle and set limits on the number of reviews the client will have.
  • Have your Quality Assurance (QA) team review the copy before submitting it for review.
  • Determine the environment where the content will be loaded.  Will the content be loaded in your development or QA server and then migrated to a production server?  If you need to migrate content allow for this in the schedule. Also allow for additional QA once the content is migrated.
  • Create a content loading plan and checklist to keep track of progress.
    • Keep in mind that when creating content with links to other pages that the links can not be created unless those pages exist in the system.
    • If multiple people are in the system loading content, they will need to be managed.  Allow for a Project Manager resource to manage this process.
  • Once the content has been created:
    • Use a link checker or site spider tool to check for broken links and orphaned content after loading is complete.
    • Allow for the Client to have a final review of the content in the system and allow for time to fix any content issues.
  • Be prepared for functional issues to arise when the content is being loaded as you will encounter use cases you may not have considered during your planning.

Quality Assurance
As with any project, quality assurance is the key to producing bug free web sites.  CMS sites add a layer of complexity that needs to be accounted for in the QA budget.  The same challenges faced by engineering and design hold true for QA, you may not know what content will be entered by the client in the future, so you may not be able to test all possible use cases.  This especially holds true if you are building this site for a client that is responsible for content loading.  In this case the site tested by QA will most likely be populated with place holder content, or a sub-set of the final content.  If this is the case, it is important to carefully develop the place holder content to try an cover as many use cases as possible.  

  • If the CMS tool has a rich content, WYSIWYG, or HTML editor, create content that contains as many elements as the tool will allow. For example, use bullets, links, headers, bold, italics, underscores, etc. to make sure that they are displayed correctly.  Do this for each content or page type type that can have content added in this manner.
  • Add QA testers as content editors and Admins in the CMS and allow them to update and administer the site.
  • Include QA in any CMS training for the company and bring QA into the project cycle early so they can understand the system and create their test plans accordingly.
  • Create written test plans and use cases that can be leveraged in future projects.
  • Ensure that there is a strong bug tracking system in place to track issues and resolutions.
  • If your company is responsible for the content creation and loading, ensure that the QA team reviews the source content documents before content loading begins.  It is easier to fix issues before they are entered into the system.

While Content Management Systems offer marketers a great platform to create and manage content they also add a layer of complexity for the development team.  The site will be ever changing and growing in ways that can not always be known during the strategy and planning stages of the project.  At times using a CMS may not fit into the development patterns of your company and a paradigm shift may need to occur.  However, with the proper planning and consideration you can greatly increase your chance at a successful and smooth implementation.

 

Ektron Solr search issues registering your sites

I have found that in some cases when you are creating, deleting, or moving sites that the Solr search server may get into a state where it will no longer register and index your site correctly.  Ektron has a good knowledge base article that explains how to clear the crawl database and I have found that this can solve these sorts of issues:

Ektron Knowldege base article: Clearing the Solr Crawl database

Ektron ServerControlWS.asmx 403.6 forbidden error

If you are having issues configuring eSync certificates after running an upgrade or CU patch from Ektron, it may be that access to the ServerControlWS.asmx has been restricted by the Ektron upgrade/patch.  If you log into the server and copy your WSPath into a browser and receive a 403.6 forbidden error, then this is probably the case.  Ektron restricts access to this file to the localhost ip 127.0.0.1.  The issue occurs if your site is using any other IP address than 127.0.0.1 (which is likely if you are running multiple sites on the server).

The Fix:

Basically, the Ektron upgrade/install limits access to the ServerControlWS.asmx file using IIS IP Address and Domain restrictions to only localhost 127.0.0.1.

  1. Open IIS
  2. Switch to Content View
  3. Browse to the Workarea folder and find ServerControlWS.asmx file.
  4. Right click the file and select Feature View.
  5. Now you can can change the IP Address Restriction for that specific file to allow your site’s IP address.

Ektron Quick Tip: Where to start when troubleshooting

When we run into issues with Ektron there are a few things I always like to check before I call customer support:

  1. Open Windows Services and confirm that the Ektron Windows Service is running.
  2. Open the Event Viewer > Application and Service Logs and click on the EktronL4 log.  Are there any errors with starting the Ektron Windows Service?
  3. Check the WSPath in your web.config for all of your Ektron sites.  If you copy this path and paste it into a browser does it load?
  4. Open Microsoft SQL Server Management Studio. Browse to your Ektron Database and find the table AssetServerTable.
    1. Sometimes in a development environment you may end up with several entries in this table (if your developers are pointed at a shared database).  If you use this database as the starting point in a different environment, such as the first time you publish the site to production, the servers listed in this table are no longer valid.  You may need to delete all of the records in this table, then restart the Ektron Windows Service on all servers pointed at the database (This action will create a record for each of the servers).
    2. Look at the Columns callbackUrl and server_state_desc.  The callbackUrl should be populated and the server_state_desc column should not show an error.  If the callbackUrl is blank or there is an error in the server_state_desc, log in to the site server and check the web.config WSPath to ensure it is correct.  If not, delete the bad record from the table, update the web.config to have the correct WSPath and then restart the Ektron Windows Service.

Ektron Quick Tip: Solr does not use AdvancedSearchCriteria

One of the differences between using Microsoft Search and Solr search is that Solr does not use AdvancedSearchCriteria.  If your current code uses AdvancedSearchCriteria it will still work, however it is interpreted as KeywordSearchCriteria.  So, when using Solr you can do all of your searches with the Keyword search.  This also allows you to combine the Query Text with the Expression Tree to do complicated searches.

Ektron Quick Tip: eSync with a Load Balanced Environment

I may just be me, but I found the documentation on how to set up eSync in a load balanced environment fairly confusing.  It is actually pretty simple.  First, set up the Load Balancing Asset sync using this Ektron documentation. Now that the Load balanced servers are configured to sync assets, you can configure eSync as normal between your staging server and only one of your production servers.  When you eSync your files to the production sever, the Load Balance asset sharing will take care of pushing those files to the other servers in the Load Balance configuration.

Ektron Solr Search indexing error

When you view the search status in the Workarea and notice that the content crawl has been running for longer than usual (even for days) and is stuck with a status of Notifying or Terminating you may need to update your Java version.

Check the Solr logs on your search server. The Solr log file can be found at:

C:\Program Files (x86)\Ektron\Search1.0\ManifoldCF\core\logs

Search the logs for an error similar to:

Solr exception during commit 500 parsing error: JAXP00010001

or

JAXP00010001: The parser has encountered more than “64000” entity expansions in this document; this is the limit imposed by the JDK

Also check the version of Java that you have installed.  If you have version 7u45, you will need to install a newer version.  I had success with Java JDK 7u51.  You can reference the Ektron Knowledge Base article https://portal.ektron.com/KB/10157/.

The Fix:

The fix for this one is not fun:

  1. Log into the Search server.
  2. Uninstall Java SDK 7u45.  You may need to open Windows Task Manager, switch to processes and kill any running instances of Java before you can uninstall.
  3. Uninstall (yes, uninstall) Solr Search.
  4. Download and install Java SDK 7u51 (or newer)
  5. Re-install Solr search.
  6. Re-register your servers with Solr.
  7. Start a full crawl to index your site.

 

 

Ektron URL Alias 404 errors on a multi site configuration

We encountered a particularly tricky issue when we upgraded our sites to Ektron 9.  The issue was that in production Regular Expression Aliases were throwing 404 errors.  We spent a long time trying to trouble-shoot this issue and finally figured out what was going on, and lucky for us the fix was actually pretty simple.

The root of the issue was a conflict caused by eSync synchronizing the Staging Domain and Production Domain for our Multi-Site folders to production.  You need to ensure that you do not use the Default site URL for any of your multi-site (not default site) domains. You also need to make sure that if you enter your staging server URL in the Staging Domain that you must also set update your settings to indicate that this is a staging server.  

To Edit Staging/Production Domains for Site Folders:

  1. Log into the Workarea as an administrator.
  2. Navigate to the Content tab.
  3. Right click on the Site folder and select View Properties.
  4. Click Edit Properties.
  5. There are fields for Staging Domain and Production domain. Ensure that if this is not your default site, do not use the default site URL.

To configure the server as a staging server:

  1. Log into the Workarea as an administrator.
  2. Navigate to the Settings tab and expand Configuration node in the tree.
  3. Click Setup and then click Edit.
  4. Check the Staging Server check-box next to the Server Type field.

To fix the 404 errors:

If you already are seeing the 404 errors, you need to take the following steps:

  1.  Update the multi-site folder to not use the default URL as the Staging or Production domain and save.
  2. Restart IIS
  3. Restart the Ektron Windows service
  4. Clear the Alias cache in the Workarea