Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Anchor
top
top
This topic provides information about things you need to check and extra tasks you may need to perform when upgrading your XperienCentral installation to a specific version. The modifications per version are not cumulative which means that you need to apply the changes for all versions between your current version and the one you are upgrading to. For example, if you upgrade from XperienCentral R35 to R41, you need to apply the changes described in this topic for all versions from R36 up to and including R41. For general upgrade information, see Upgrading a Linux Installation or Upgrading a Windows Installation.

...

Expand
titleXperienCentral R45

XperienCentral R45

Release date: September 10, 2024


Note

Minimum Version Required for Upgrading to XperienCentral R45

Upgrading to XperienCentral R45 requires a minimum version of R26. If you are upgrading from XperienCentral R25 or lower, you must first upgrade to R26 and then upgrade to XperienCentral R45.

Check Configuration Files

See Check Configuration Files.

Check Custom Media Item Code

If you implement a custom media item, you will most likely need to modify your custom media item controller. Usually, BeanUtils.copyProperties is used to copy properties from the media item version to your form backing object in YourCustomMediaItemController#formBackingObject and vice versa in YourCustomMediaItemController#onSubmit. However, since a media item itself doesn't have a presentation, the setPresentation and setPresentationVariant on MediaItemArticleVersionImpl now throws an UnsupportedOperationException. In XperienCentral versions R44 and lower, that method didn't do anything. To prevent this runtime exception from being thrown, you must explicitly omit these properties when you use BeanUtils to copy its properties.

For example, change;


Code Block
themeEclipse
BeanUtils.copyProperties(mediaItemVersion, myFormBackingObject);

to

Code Block
themeEclipse
BeanUtils.copyProperties(mediaItemVersion, myFormBackingObject, new String[ {"presentation", "presentationVariant"});

and change

Code Block
themeEclipse
BeanUtils.copyProperties(myFormBackingObject, mediaItemVersion);

to

Code Block
themeEclipse
BeanUtils.copyProperties(myFormBackingObject, mediaItemVersion, new String[]{"presentation", "presentationVariant"});

jQuery Has Been Removed

In XperienCentral version R45 the Interactive Forms JavaScript files have been modified to remove the dependency on jQuery. This has a direct impact on any custom JavaScript implementations you have developed that listen for thrown events. There are two paths that you can take to rewrite your frontend code: either remove jQuery altogether from your own implementation (recommended!) or rewrite your custom code to still use jQuery. The following events are thrown by Interactive Forms which you have the ability to listen to in your own frontend code:

  • IAF_ShowFormFragment

  • IAF_HideFormFragment

  • IAF_ShowError

  • IAF_HideError

  • IAF_SubmitForm

  • IAF_AfterSubmit

  • IAF_AjaxShowFormStep

  • IAF_FormLoaded

  • IAF_ClientSideFrameworkLoaded

For the following events, no changes have to be made if you keep using jQuery:

  • IAF_ShowFormFragment

  • IAF_HideFormFragment

  • IAF_SubmitForm

  • IAF_FormLoaded

  • IAF_ClientSideFrameworkLoaded

If you do want to rewrite your custom JavaScript to not include jQuery, rewrite your code as follows:

Old situation:

Code Block
themeEclipse
$(document).on('IAF_ShowFormFragment, '.formfragment', function(e) { ... });

New situation without jQuery:

Code Block
themeEclipse
document.addEventListener('IAF_ShowFormFragment', (e) => {
   const fragment = e.target;
   ...
});

The same applies for the other events.

For the following events changes have to be made regardless of whether you keep using jQuery or not:

  • IAF_ShowError

  • IAF_HideError

  • IAF_AfterSubmit

  • IAF_AjaxShowFormStep

In the old case these jQuery events had specific data which was added to them, but the way you have to retrieve this data has changed.

  • IAF_ShowError: passes on error div ID and the errors

  • IAF_HideError: passes on error div ID

  • IAF_AfterSubmit: passes on data returned by XC

  • IAF_AjaxShowFormStep: passes on form step data returned by XC

For these events you can apply the following changes to your code:

IAF_ShowError

Old situation:

Code Block
themeEclipse
$(document).on('IAF_ShowError', '.wmpform div', function(e, errorDivId, errors) { ... });

New situation with jQuery:

Code Block
themeEclipse
$(document).on('IAF_ShowError', '.wmpform div', function(e) {
   const errorDivId = e.detail.id;
   const errors = e.detail.errors;
   ...
});

New situation without jQuery:

Code Block
themeEclipse
document.addEventListener('IAF_ShowError', (e) => {
   const fragment = e.target;
   const errorDivId = e.detail.id;
   const errors = e.detail.errors;
   ...
});

IAF_HideError

Old situation:

Code Block
themeEclipse
$(document).on('IAF_HideError', '.wmpform div', function(e, errorDivId) { ... });

New situation with jQuery:

Code Block
themeEclipse
$(document).on('IAF_HideError', '.wmpform div', function(e) {
   const errorDivId = e.detail.id;
   ...
});

New situation without jQuery:

Code Block
themeEclipse
document.addEventListener('IAF_HideError', (e) => {
   const fragment = e.target;
   const errorDivId = e.detail.id;
   ...
});

IAF_AfterSubmit

Old situation:

Code Block
themeEclipse
$(document).on('IAF_AfterSubmit', '.wmpform', function(e, data) { ... });

New situation with jQuery:

Code Block
themeEclipse
$(document).on('IAF_AfterSubmit', '.wmpform', function(e) {
   const data = e.detail;
   ...
});

New situation without jQuery:

Code Block
themeEclipse
document.addEventListener('IAF_AfterSubmit', (e) => {
   const form = e.target;
   const data = e.detail;
   ...
});

IAF_AfterSubmit

Old situation:

Code Block
themeEclipse
$(document).on('IAF_AjaxShowFormStep', '.wmpform', function(e, formStep) { ... });

New situation with jQuery:

Code Block
themeEclipse
$(document).on('IAF_AjaxShowFormStep', '.wmpform', function(e) {
   const formStep = e.detail;
   ...
});

New situation without jQuery:

Code Block
themeEclipse
document.addEventListener('IAF_AjaxShowFormStep', (e) => {
   const form = e.target;
   const formStep = e.detail;
   ...
});

Summary

  • For IAF_ShowError, the e.detail is an object where e.detail.id is the error div id and e.detail.errors contains the errors

  • For IAF_HideError, the e.detail is the same object as above, where only e.detail.id should be relevant, as e.detail.errors will be empty

  • For IAF_AfterSubmit, e.detail is the response data object from the Form POST (same data as the old argument)

  • For IAF_AjaxShowFormStep, e.detail is the identifier of the form step (same data as the old argument)

    Audit Trail Database Modifications

    In some cases, the Audit Trail panel can cause the XperienCentral environment to freeze up. This is caused by the out of control growth of some database tables related to the audit information that is collected and stored. To solve this problem, the application manager or a developer must execute two queries on the database used to store the Audit Trail history. These queries create two new indices. Creating the indices is optional but GX Software recommends that you do so. You can upgrade XperienCentral to version R45 without the new indices.


    Warning

    When the indices are created, the entire table is copied first. Because the table might be quite large, it is important to check whether there is enough available free disk space to create the copy before running the queries in order to avoid crashing the database server.


    Execute the following two queries on the database containing the Audit Trail:


    Code Block
    themeEclipse
    CREATE INDEX parentContentIdIndex ON wmHistory (parentContentId);
    CREATE INDEX webIdActionContenttypeIndex ON wmHistory (webId, action, contenttype);


    Deprecated Components

    In XperienCentral version R45, a number of deprecated components have been removed. If you have custom code that makes use of any of these components, you must modify it. The following components have been deprecated/removed:

    • All references to page models
    • Deprecated/unused filters in web.xml:
      • XslFoFilter
      • XSLFoTransformer
      • MobileESPFilter
      • DeviceAtlasFilter
      • DeviceRedirectFilter
    • The Mobile Toolkit module


    Expand
    titleComplete list of deprecated methods/classes

    XperienCentral Core

    nl.gx.webmanager.cms.core.Personalization

    Removed interface Personalization.
    Replace with nl.gx.webmanager.cms.core.PersonalizationItem.   
    Used in reusables.

    nl.gx.webmanager.authorization.AuthorizationService

    Removed method login(String username, String password, HttpServletRequest request).
    Replace with LoginStatus.SUCCESS.equals(authorizationService.formLogin(username, password, request)).
    Used in reusables.     

    nl.gx.webmanager.authorization.Role

    Removed methods getToolbarElements(), getToolbarElementIcons() and setToolbarElemenIcons().
    There is no migration path - these methods should not be used. 
    Not used in reusables.

    nl.gx.webmanager.authorization.User

    Removed method getEditLanguage().
    Replace with nl.gx.webmanager.authorization.User.getEditingLanguage,
    Not used in reusables.

    Removed method delete(),
    Replace with nl.gx.webmanager.authorization.AuthorizationService.deleteUser(user).
    Not used in reusables.

    nl.gx.webmanager.cms.workflow.WorkflowActivity

    Removed method createInstance().
    Replace with nl.gx.webmanager.services.workflow.WorkflowService.createWorkflowActivityInstance().
    Not used in reusables.


    nl.gx.webmanager.cms.mediarepository.implementation.MediaTerm

    Removed method getInstance(String termName).
    Replace with nl.gx.webmanager.cms.mediarepository.implementation.MediaTerm.getInstance(null, termName).
    Not used in reusables.

    Removed method setMouseOverText(String mouseOverText).
    Replace with nl.gx.webmanager.cms.core.InternalLink.setLinkTitle(mouseOverText).
    Not used in reusables.

    Removed method getMouseOverText(String mouseOverText).
    Replace with getLinkTitle(mouseOverText)
    Not used in reusables.

    nl.gx.webmanager.cms.mediarepository.MediaItemVersion

    Removed method getMediaItemVersion().
    Replace with nl.gx.webmanager.cms.core.ContentItemVersion.getContentItemVersion().
    Used in reusables.     


    Removed method setLeadImage(FileResource leadImage).
    Replace with nl.gx.webmanager.cms.core.ContentItemVersion.setAttachedLeadImage(leadImage.getFileResouce()),
    Used in reusables.     

    Removed method setLeadImage(Image leadImage).
    Replace with nl.gx.webmanager.cms.core.ContentItemVersion.setAttachedLeadImage(leadImage).
    Not used in reusables.

    Removed method setPublic(boolean isPublic).
    Do not use this method because public (published) should be determined by the workflow state and not set manually.  
    Not used in reusables.

    Removed method setArticle(boolean isArticle).
    Determining whether a media item is an article should be done by <mediaItemInstance> instanceof ElementHolder
    Not used in reusables.

    Removed method isArticle().
    Determining whether a media item is an article should be done by <mediaItemInstance> instanceof ElementHolder.
    Not used in reusables.

    Removed method setContentType(String contentType).
    Do not use - you should not set the content type manually.
    Not used in reusables.

    Removed method createRichTextElements().
    Replace with MediaItemVersion.getElementHolder() or cast to ElementHolder and use this method on the resulting ElementHolder
    Not used in reusables.

    Removed method getLastElement().
    Replace with MediaItemVersion.getElementHolder() or cast to ElementHolder and use this method on the resulting ElementHolder
    Not used in reusables.

    Removed method insertLastElementAtCursor().
    Replace with MediaItemVersion.getElementHolder() or cast to ElementHolder and use this method on the resulting ElementHolder
    Not used in reusables.

    nl.gx.webmanager.cms.core.ContentItem

    Removed method getMostRelevantVersion(Language language)
    Replace with getVersion(false, language, false, new Date(), true),
    Not used in reusables.

    Removed method setDownloadFileResource(FileResource file).
    Do not use.
    Not used in reusables.

    nl.gx.webmanager.cms.core.Page

    Removed method getBlockLabel(),
    Replace with getBlockLabels().
    Not used in reusables.

    Removed method getDefaultEditingLanguage().
    Replace with website.getDefaultContentLanguage()
    Not used in reusables.

    Removed method setDefaultEditingLanguage(Language language).
    Do not use this method - manually setting the editing language is not recommended. 
    Not used in reusables.

    nl.gx.webmanager.cms.core.ElementHolder

    Removed method setModelElements(Element[] elements).
    Do not use this method - page models are no longer supported.
    Not used in reusables.

    Removed method getModelElements().
    Do not use this method - page models are no longer supported.
    Not used in reusables.

    Removed method isAdditionalElementsAllowed().
    Do not use this method - page models are no longer supported.
    Not used in reusables.

    Remove method getModelElementsFBOMap().
    Do not use this method - page models are no longer supported.
    Not used in reusables.

    nl.gx.webmanager.cms.mediarepository.MediaItemArticleVersion

    Removed method setAdditionalElementsAllowed(boolean allowed).
    Do not use this method - page models are no longer supported.
    Not used in reusables.

    nl.gx.webmanager.cms.core.PresentationContext

    Removed method setPageModel(PageModel pageModel).
    Do not use this method - page models are no longer supported.
    Not used in reusables.

    Removed method getPageModel().
    Do not use this method - page models are no longer supported.
    Not used in reusables.

    nl.gx.webmanager.services.contentapi.ElementManagementService

    Removed method createAndInsertElement(PageModel pageModel, Class<? extends Element> elementType).
    Do not use this method - page models are no longer supported.
    Not used in reusables.

    Removed method createAndInsertElement(PageModel pageModel, Class<? extends Element> elementType, int position).
    Do not use this method - page models are no longer supported.
    Not used in reusables.

    Removed method copyElement(Element element, PageModel target).
    Do not use this method - page models are no longer supported.
    Not used in reusables.

    nl.gx.webmanager.services.contentapi.MediaRepositoryManagementService

    Removed method createPageModelMediaItem(Website website, PageModel pageModel).
    Do not use this method - page models are no longer supported.
    Not used in reusables.

    Removed method createMediaItemVersion(MediaItem mediaItem, MediaItemVersion original).
    Do not use this method - page models are no longer supported.
    Not used in reusables.

    Removed method createPageModelMediaItem(Website website, PageModel pageModel).
    Do not use this method - page models are no longer supported.
    Not used in reusables.

    Removed method createPageModelMediaItem(Website website, PageModel pageModel).
    Do not use this method - page models are no longer supported.
    Not used in reusables.

    Removed method performWorkflowAction(MediaItemVersion mediaItemVersion, WorkflowAction workflowAction).
    Replace with performWorkflowAction(T workflowEnabled, WorkflowAction workflowAction).
    Used in reusables.     

    Removed method performPostUpdateActions(MediaItemVersion mediaItemVersion).
    Remove all calls to this method and do not use.
    Used in reusables.     

    nl.gx.webmanager.services.contentapi.PageManagementService

    Removed method createPageModelMediaItem(Website website, PageModel pageModel).
    Do not use this method - page models are no longer supported.
    Not used in reusables.

    Removed method performWorkflowAction(PageVersion pageVersion, WorkflowAction workflowAction).
    Replace with performWorkflowAction(T workflowEnabled, WorkflowAction workflowAction).
    Used in reusables.     

    Removed method performPostUpdateActions(PageVersion pageVersion).
    Remove all calls to this method and do not use.
    Not used in reusables.

    Removed method createAndInsertPageFromPageModel(Page page, PageModel pageModel).
    Do not use this method - page models are no longer supported.
    Not used in reusables.

    Removed method createAndInsertPageSectionFromPageModel(Page page, PageModel pageModel).
    Do not use this method - page models are no longer supported.
    Not used in reusables.

    Removed method createPageModel(Website website).
    Do not use this method - page models are no longer supported.
    Not used in reusables.

    Removed method createAndInsertPageFromPageModel(Page page, PageModel pageModel, int position).
    Do not use this method - page models are no longer supported.
    Not used in reusables.

    Removed method copyPageModel(PageModel pageModel).
    Do not use this method - page models are no longer supported.
    Not used in reusables.

    Removed method deletePageModel(PageModel pageModel).
    Do not use this method - page models are no longer supported.
    Not used in reusables.

    Removed method reorderElements(PageModel pageModel, Element[] elements).
    Do not use this method - page models are no longer supported.
    Not used in reusables.

    nl.gx.webmanager.cms.core.Website

    Removed method getWhoIsWhoSearchPage().
    Do not use this method - the  who-is-who functionality is no longer supported.
    Not used in reusables.

    Removed method getWhoIsWhoClickableLists().
    Do not use this method - the  who-is-who functionality is no longer supported.
    Not used in reusables.

    Removed method getWhoIsWhoUploadUrl().
    Do not use this method - the  who-is-who functionality is no longer supported.
    Not used in reusables.

    Removed method getRootPageSection().
    Use getRootBlock() . 
    Not used in reusables.

    Removed method getPageModels().
    Do not use this method - page models are no longer supported.
    Used in reusables.

    nl.gx.webmanager.cms.element

    Removed method getWhoIsWhoSearchPage().
    Do not use this method - the  who-is-who functionality is no longer supported.
    Not used in reusables.

    Removed method getPageModel().
    Do not use this method - page models are no longer supported.
    Not used in reusables.

    Removed method getPageModelElements().
    Do not use this method - page models are no longer supported.
    Not used in reusables.

    Removed method getPersonalizationItems().
    Replace with getPersonalizationAttributes().getPersonalizationItems()
    Used in reusables.     

    nl.gx.webmanager.contentapi.event.PageModelEvent

    Removed class PageModelEvent.
    Do not use this class - page models are no longer supported.
    Not used in reusables.

    nl.gx.webmanager.cms.pagemodel.PageModel

    Removed class PageModel.
    Do not use this class- page models are no longer supported.
    Not used in reusables.

    nl.gx.webmanager.cms.pagemodel.PageModelElement

    Removed class PageModelElement.
    Do not use this class - page models are no longer supported.
    Not used in reusables.

    nl.gx.webmanager.cms.core.PageVersion

    Removed method setNavigationTitle(String value).
    Replace with setShortTitle(String value).
    Not used in reusables.

    Removed method getPage().
    Replace with getContentItem()
    Used in reusables.     

    Removed method getSeeEvent().
    Do not use this method.
    Not used in reusables.

    Removed method getBlocks().
    Replace with getContentItem().getBlocks().
    Used in reusables.     

    Removed method getBlocks(BlockLabel[] labels).
    Replace with getContentItem().getBlocks(labels)
    Not used in reusables.

    Removed method getLabels().
    Replace with getPageLabels() and map the contents to a String array if needed.
    Used in reusables.     

    Removed method copyLanguageVersion(String webid, String languageid, String l_id).
    Replace with nl.gx.webmanager.services.contentapi.PageManagementService.copyPageVersion(PageVersion, Language).
    Not used in reusables.

    Removed method getPreviewTopBody().
    Do not use this method. 
    Not used in reusables.

    nl.gx.webmanager.cms.mediarepository.MediaRepository

    Removed method getPublicStates().
    Replace with getAllPublicStates()
    Not used in reusables.

    Removed method getUrl(String fileName, Website website, HttpServletRequest req).
    Replace with getUrl(String, Website)
    Not used in reusables.

    Removed method getObjectLibraryCentralMode().
    Do not use this method. 
    Not used in reusables.

    Removed method getContentTypeId(String contentType).
    Replace with getContentType(contentType).getId().
    Not used in reusables.

    Removed method deleteMediaItem(MediaItemVersion mediaItem).
    Replace with nl.gx.webmanager.services.contentapi.MediaRepositoryManagementService#deleteMediaItem(MediaItem).
    Not used in reusables.

    Removed method getWorkflowModel(String contentType).
    Replace with getWorkflowModel(getContentType(contentType)), or if there already is a contentType instance in memory, replace with getWorkflowModel(ContentType contentType).
    Not used in reusables.

    nl.gx.webmanager.cms.core.Website.MediaTerm

    Removed method getClassification().
    Replace with getClassifications()[0].getName() - also check for an empty array.
    Used in reusables.     


    nl.gx.webmanager.cms.integration.QueryParameter

    Removed method getFormElement(),
    Do not use this method.
    Not used in reusables.

    Removed method getFormElementHtml().
    Do not use this method.
    Not used in reusables.

    nl.gx.webmanager.cms.mediarepository.MediaItemDownloadVersion

    Removed method getDate().
    Replace with getFileModifiedDate() - call toString() if you need a string. 
    Not used in reusables.

    nl.gx.webmanager.cms.mediarepository.MediaItemImageVersion

    Removed method getResizedImage(int sizeId).
    Replace with Image.getSizedImage(int,int).
    Not used in reusables.

    Removed method getResizedImage(int width, int height).
    Replace with Image.getSizedImage(int,int).
    Not used in reusables.

    nl.gx.webmanager.wcb.WcbHelper

    Removed method getWcbResourcePrefix(final WCB_RESOURCETYPE wcbResourceType, final String personalName).
    Replace with wcbResourceType.getTargetLocation(personalName){}.
    Used in reusables.     

    Removed method getWcbDeployedName(final String src, final String personalName).
    Replace with src.replace(WCBConstants.WCB_RESOURCE_INSERT_COMPONENT_FILE_ID, personalName).
    Not used in reusables.

    Removed class WcbHelper.
    First replace the methods above and then remove the unused import. 
    Used in reusables.     

    nl.gx.webmanager.wcb.ComponentDefinition

    Removed method getNameSpace().
    Replace with getComponentBundleDefinition().getNameSpace().
    Used in reusables.     

    nl.gx.webmanager.cms.integration.DatabasePageType

    Removed interface DatabasePageType.
    Replace with DatabaseEntity.
    Not used in reusables.

    org.osgi.framework.BundleContext.ComponentBundleDefinition

    Removed method getWCBKey().
    Remove all instances of this method. 
    Not used in resusables.

    nl.gx.webmanager.cms.mediarepository.MediaCollectionOverviewElement

    Removed method getIncludingTerms().
    Replace with getMandatoryTerms().
    Not used in reusables.

    nl.gx.webmanager.cms.layout.PagePart

    Removed method getBannerServiceUrl().
    Do not use this method. 
    Not used in reusables.

    nl.gx.webmanager.wcb.MenuItemComponentDefinition

    Removed method getTargetMenu().
    Replace with nl.gx.webmanager.wcb.paneltype.PanelComponentDefinition#getMenuCategory().
    Not used in reusables.

    Removed method getTargetMenuLocationAfter().
    Do not use this method.
    Used in reusables.     

    Removed method getTargetMenuLocationBefore().
    Do not use this method.
    Not used in reusables.

    Removed method getSubMenu().
    Do not use this method.
    Not used in reusables.

    Removed method getSubMenuTextMessageKey().
    Do not use this method.
    Not used in reusables.

    Removed method getSubMenuLocationAfter().
    Do not use this method.
    Not used in reusables.

    Removed method getSubMenuLocationBefore().
    Do not use this method.
    Not used in reusables.

    nl.gx.webmanager.wcb.dojotype.DojoModule.ModuleType

    Removed enum constant SidebarWidget.
    Replace with SIDEBAR_WIDGET.
    Not used in reusables.

    Removed enum constant Module.
    Replace with MODULE
    Not used in reusables.

    Removed enum constant SimpleSearch.
    Replace with SIMPLE_SEARCH
    Not used in reusables.

    Removed enum constant Panel.
    Replace with PANEL
    Not used in reusables.

    nl.gx.webmanager.services.history.HistoryEvent

    Removed String constant TOUCH.
    Use EntityEvent.UPDATE
    Not used in reusables.

    nl.gx.webmanager.services.datasource.Provider

    Removed method getSpecification().
    Do not use this method.
    Not used in reusables.

    nl.gx.webmanager.cms.workflow.WorkflowModel

    Removed method createInstance(String name).
    Use WorkflowService.createWorkflowModelInstance(workflowModel).
    Used in reusables.     

    nl.gx.webmanager.cms.core.implementation.Image

    Removed method getHtmlTag().
    Create HTML using a JSP. 
    Not used in reusables.

    nl.gx.webmanager.wcb.pagemetadatatype.PageMetaDataComponentDefinition

    Removed enum PageMetaDataPosition.
    Page metadata position is no longer supported - remove all instances of this enum.
    Used in reusables.     

    nl.gx.webmanager.cms.element.TableRow

    Removed method setNrRows(int rowcount).
    Remove all calls to this method.
    Not used in reusables.

    Removed method getNrRows(int rowcount).
    Remove all calls to this method.
    Not used in reusables.

    nl.gx.webmanager.services.history.Action

    Removed enum constant PAGEMODEL_UPDATE.
    Do not use.
    Not used in reusables.

    nl.gx.webmanager.services.defaultprofileprovider.DefaultProfile

    Removed method getPassWord().
    Do not use.
    Not used in reusables.

    nl.gx.webmanager.wcb.elementtype.ElementComponentDefinition

    Removed method getAccessKey()
    Do not use.
    Not used in reusables.

    nl.gx.webmanager.services.seo.PageFriendlyURLEntity

    Removed method getPageVersionId()
    Use getVersionId().
    Not used in reusables.

    Removed method getDepth()
    Use getURLIdentifier().split(SEOUtil.getPathSeparator()).length.
    Not used in reusables.

    nl.gx.webmanager.services.contentapi.LinkManagementService

    Removed method createRelatedExternalLink(ElementHolder elementHolder, String url).
    Use createRelatedLink(ElementHolder, java.lang.Class<? extends RelatedLink>.
    Not used in reusables.

    Removed method updateRelatedExternalLink(ElementHolder elementHolder, String code, String url).
    Use createRelatedLink(ElementHolder, java.lang.Class<? extends RelatedLink>) and then update the Link object itself.
    Not used in reusables.


    nl.gx.webmanager.cms.element.DownloadElement

    Removed method getSeeEvent().
    Do not use.
    Not used in reusables.


    nl.gx.webmanager.services.seo.entity.PageFriendlyURLEntityMutator

    Removed method renamePathPart(int depth, String replace).
    Replace with setURLPath(String).
    Not used in reusables.

    Removed method renameStartPath(int depth, String replace).
    Replace with setURLPath(String).
    Not used in reusables.

    nl.gx.webmanager.wcb.paneltype.PanelComponentDefinition

    Removed method getAccessKey().
    Do not use. 
    Not used in reusables.

    nl.gx.webmanager.contentapi.event.PageVersionEvent

    Removed method getTargetPageVersion().
    Replace with getPageVersion(). 
    Used in reusables.     

    nl.gx.webmanager.cms.workflow.WorkflowActivityState

    Removed method getStateName().
    Replace with getState().name
    Not used in reusables.

    nl.gx.webmanager.contentapi.event.MediaItemEvent

    Removed constructor MediaItemEvent(Type eventType, MediaItem mediaItem, String eventAction, Object source, int discussionId, Website[] websites).
    Replace with MediaItemEvent(Type eventType, MediaItem mediaItem, String eventAction, Object source,Website[] websites)
    Not used in reusables.

    Removed constructor MediaItemEvent(Type eventType, MediaItem mediaItem, String eventAction, Object source, int discussionId, Website[] websites, Class<? extends MediaItem> scope).
    Replace with MediaItemEvent(Type eventType, MediaItem mediaItem, String eventAction, Object source, Website[] websites, Class<? extends MediaItem> scope)
    Not used in reusables.

    Removed constructor MediaItemEvent(Type eventType, MediaItem mediaItem, MediaItem originalMediaItem, String eventAction, Object source, int discussionId, Website[] websites).
    Replace with MediaItemEvent(Type eventType, MediaItem mediaItem, MediaItem originalMediaItem, String eventAction, Object source, Website[] websites)
    Not used in reusables.

    Removed constructor MediaItemEvent(Type eventType, MediaItem mediaItem, MediaItem originalMediaItem, String eventAction, Object source, int discussionId, Website[] websites, Class<? extends MediaItem> scope).
    Replace with MediaItemEvent(Type eventType, MediaItem mediaItem, MediaItem originalMediaItem, String eventAction, Object source, Website[] websites, Class<? extends MediaItem> scope).
    Not used in reusables.

    Removed method getDiscussionId().
    Replace with getMediaItem().getPlanned().getForum().getId().
    Not used in reusables.

    nl.gx.webmanager.wcb.ComponentManager

    Removed method installBundle(Bundle bundle).
    Replace with startComponent(Component component) or startComponentBundle(ComponentBundle componentBundle)
    Not used in reusables.

    Removed method updateBundle(Bundle bundle).
    Replace with startComponent(Component component) or startComponentBundle(ComponentBundle componentBundle)
    Not used in reusables.

    nl.gx.webmanager.cms.mediarepository.implementation.MediaCollectionOverviewElementImpl

    Removed method getContentDependentOperator().
    Replace with getContentRelatedOperator.getId()
    Not used in reusables.

    Removed method getTerms(final boolean excluding).
    Replace with getTerms(TermsDeclaration.EXCLUDING_TERMS) or ArrayUtils.addAll(getTerms(TermsDeclaration.OPTIONAL_TERMS),getTerms(TermsDeclaration.MANDATORY_TERMS)).
    Not used in reusables.

    nl.gx.webmanager.services.seo.FriendlyURLEntity

    Removed method isCurrent().
    Replace with getReference() == null
    Not used in reusables.

    nl.gx.webmanager.services.seo.SeoService

    Removed method activateFriendlyURL(PageVersion pageVersion).
    Replace with publishFriendlyURL(PageVersion)
    Not used in reusables.

    Removed method activateFriendlyURL(MediaItemVersion mediaItemVersion).
    Replace with publishFriendlyURL(MediaItemVersion)
    Not used in reusables.

    Removed method getFriendlyURL(ResourceInstance resourceInstance).
    Replace with getFriendlyURL(PageVersion, ResourceInstance).
    Not used in reusables.

    Removed method getFriendlyURL(MediaItemVersion mediaItemVersion, Website website).
    Replace with getFriendlyURL(PageVersion, MediaItemVersion)
    Not used in reusables.

    Removed method getPageFriendlyURL(int pageVersionId, String host).
    Replace with getFriendlyURL(PageVersion)
    Not used in reusables.

    Removed method getMediaItemFriendlyURL(int mediaItemVersionId, String host).
    Replace with getFriendlyURL(MediaItemVersion, Website)
    Not used in reusables.

    Removed method getDBPageFriendlyURL(int dbId, int typeOfPageId, String host).
    Replace with getFriendlyURL(ResourceInstance).
    Not used in reusables.

    Removed method getMediaItemBaseEntityURLTitle(int mediaItemVersionId).
    Replace with FriendlyURLEntity.getBaseURLTitleEntityIdentifier() which can be retrieved through getFriendlyURLEntity(MediaItemVersion).
    Not used in reusables.

    Removed method translateTitleToURLTitle(String title).
    Replace with getFriendlyURL(PageVersion)} and FriendlyURLEntity.getURLTitle().
    Not used in reusables.

    Removed method translateTitleToURLIdentifier(String title).
    Replace with getFriendlyURL(PageVersion)} and FriendlyURLEntity.getURLTitle().
    Not used in reusables.

    Removed method updateFriendlyURL(MediaItemVersion mediaItemVersion, String urlTitleOverrule).
    Do not use.
    Not used in reusables.

    nl.gx.webmanager.cms.mediarepository.implementation.MediaitemReferenceImpl

    Removed class MediaitemReferenceImpl.
    Replace with the Index service.
    Not used in reusables.

    nl.gx.webmanager.cms.core.implementation.DownloadImpl

    Removed method getInstance(final String url).
    Just create an instance manually. 
    Not used in reusables.


    nl.gx.webmanager.cms.element.implementation.JCRElementBase

    Removed method getMailing().
    Do not use.
    Not used in reusables.

    nl.gx.webmanager.cms.element.implementation.TableRowImpl

    Removed constructor method TableRowImpl(final HtmlObject obj, final HttpServletRequest req, final HttpServletResponse res).
    Replace with another constructor. 
    Not used in reusables.

    nl.gx.webmanager.springmvc.controller.component.ElementComponentController

    Removed method initFormBackingObject(final Element element, final Element fbo).
    Replace with BeanUtils.copyProperties(element, formBackingObject)
    Not used in reusables.

    nl.gx.webmanager.cms.forum.implementation.ForumMessageImpl

    Removed method getInstance(final Forum forum, final int id, final HttpServletRequest req, final HttpServletResponse res),
    Do not use this method.
    Not used in reusables.

    nl.gx.webmanager.authorization.Permission.Permissions

    Removed class Permissons.
    Do not use.
    Not used in reusables.

    nl.gx.webmanager.springmvc.controller.component.MediaItemComponentController

    Removed method initFormBackingObject(final MediaItemVersion mediaItemVersion, final Element fbo),
    Replace with BeanUtils.copyProperties(element, formBackingObject)
    Not used in reusables.

    nl.gx.webmanager.cms.core.implementation.ImageImpl

    Removed method getFileLocation(final String url, final boolean deescape).
    Replace with getFile()
    Not used in reusables.

    nl.gx.webmanager.cms.element.implementation.RichTextElementImpl

    Removed method convertToXhtml(final Website website, final String source).
    Replace with convertToXhtml(source)
    Not used in reusables.

    nl.gx.webmanager.foundation.DatabaseUtil

    Removed class DatabaseUtil.
    Replace with nl.gx.webmanager.services.datasource.QueryManagerService
    Used in reusables.     

    nl.gx.webmanager.taglib.GetMediaItemsTag

    Removed class GetMediaItemsTag.
    Replace with GetMediaItemVersionsTag
    Used in reusables.     

    nl.gx.webmanager.cms.presentation.implementation.PresentationImpl

    Removed method setJspPageContext (final HttpServletRequest request, final PageContext pageContext).
    Replace with pushJspPageContext(request, pageContext)
    Not used in reusables.

    nl.gx.webmanager.springmvc.controller.platform.PlatformController

    Removed method publishUpdateEvent(final Object entity, final Event.Type type).
    Replace with publishEvent(Event).
    Not used in reusables.

    nl.gx.webmanager.springmvc.controller.BaseWebmanagerController

    Removed method getEditLanguageLabel(final String label).
    Do not use this method.
    Not used in reusables.

    nl.gx.webmanager.taglib.FunctionLibrary

    Removed method filterHTML(String html, final String whitelistName, final String[] tags).
    Replace with one of these methods : filterHTMLBasic(String), filterHTMLRelaxed(String),filterHTMLTags(String, String), filterHTMLTagsAndAttributes(String,String,String).
    Used in reusables.     

    nl.gx.webmanager.foundation.Utilities

    Removed method getImageSize(String filename).
    Replace with getImageSize(File).
    Not used in reusables.

    nl.gx.webmanager.authorization.impl.ToolbarElement

    Removed class ToolbarElement.
    Don't use this class. 
    Not used in reusables.

    nl.gx.webmanager.wcb.Component

    Removed method purgeContent().
    Replace with onPurge()
    Not used in reusables.

    nl.gx.webmanager.wcb.paneltype.impl.PanelComponentDefinitionImpl

    Removed method setAccessKey(final char accessKey).
    Don't use this method - access keys on panel components are no longer supported. 
    Not used in reusables.

    nl.gx.webmanager.services.seo.handler.FriendlyUrlHandler

    Removed method activate(final PageVersion pageVersion).
    Replace with currentRollOver(final PageVersion version)
    Not used in reusables.

    Removed method activate(final MediaItemVersion mediaItemVersion).
    Replace with currentRollOver(final MediaItemVersion version).
    Not used in reusables.

    nl.gx.product.wmpdeviceatlas.api.DeviceAtlasService

    Removed method getDeviceMap().
    Do not use this method.
    Not used in reusables.

    Removed method getDeviceProperties(String userAgent).
    Replace with getDeviceProperties(HttpServletRequest).
    Not used in reusables.

    nl.gx.forms.wmpformmanager.api.form.impl.FormSectionImpl

    Removed method getActiveVersion().
    Replace with getCurrent().  
    Not used in reusables.

    Removed method setActiveVersion(final BasicFormSectionVersion activeVersion).
    Do not use this method.
    Not used in reusables.

    nl.gx.webmanager.wcb.foundation.ComponentBase

    Removed method setComponentBundle(final ComponentBundleImpl componentBundle).
    Replace with setComponentBundle(final ComponentBundle componentBundle)
    Not used in reusables.

    nl.gx.webmanager.wcb.foundation.ComponentBundleDefinitionImpl

    Removed method setWCBKey(final String wcbKey).
    Do not use.
    Used in reusables.     

    nl.gx.webmanager.wcb.foundation.ComponentDefinitionImpl

    Removed method setNameSpace(final String nameSpace).
    Do not use.

    nl.gx.webmanager.wcb.foundation.MenuItemComponentDefinitionImpl

    Removed method setTargetMenu(final String targetMenu).
    Do not use.
    Not used in reusables.

    Removed method setTargetMenuLocationAfter (final String menuItem).
    Do not use.
    Not used in reusables.

    Removed method setTargetMenuLocationBefore (final String menuItem).
    Do not use.
    Not used in reusables.

    Removed method setSubMenu(final String subMenu).
    Do not use.
    Not used in reusables.

    Removed method setSubMenuLocationAfter(final String subMenuLocationAfter).
    Do not use.
    Not used in reusables.

    Removed method setSubMenuLocationBefore(final String subMenuLocationBefore).
    Do not use.
    Not used in reusables.

    Removed method setSubMenuTextMessageKey(final String subMenuTextMessageKey).
    Do not use.
    Not used in reusables.

    nl.gx.webmanager.wcb.elementtype.impl.ElementComponentDefinitionImpl

    Removed method getStaticBackendDir().
    Replace with getBackendResourcesDir

    nl.gx.webmanager.handler.config.Config

    Removed class Config.
    Replace with nl.gx.webmanager.handler.util.Util
    Not used in reusables.

    nl.gx.siteworks.parser.library.AuthorisarionLibrary

    Removed method canView(SiteWorksParserData parserData).
    Replace with isUserLoggedIn(parserData)
    Not used in reusables.

    Removed method canCreate(SiteWorksParserData parserData).
    Replace with isUserLoggedIn(parserData)
    Not used in reusables.

    Removed method canDelete(SiteWorksParserData parserData).
    Replace with isUserLoggedIn(parserData)
    Not used in reusables.

    Removed method canEdit(SiteWorksParserData parserData).
    Replace with isUserLoggedIn(parserData)
    Not used in reusables.

    Removed method canCreate(SiteWorksParserData parserData, int objectId).
    Replace with isUserLoggedIn(parserData)
    Not used in reusables.

    Removed method canEdit(SiteWorksParserData parserData, int objectId).
    Replace with isUserLoggedIn(parserData)
    Not used in reusables.

    Removed method canDelete(SiteWorksParserData parserData, int objectId).
    Replace with isUserLoggedIn(parserData)
    Not used in reusables.

    Removed method canView(SiteWorksParserData parserData, int objectId).
    Replace with isUserLoggedIn(parserData)
    Not used in reusables.

    nl.gx.siteworks.parser.library.MiscLibrary

    Removed method getDebugLevel(),
    Do not use.
    Not used in reusables.

    nl.gx.siteworks.util.SiteWorksUtil

    Removed method firstUpper(final String string).
    Use Apache StringUtils.capitalize(string)
    Not used in reusables.

    nl.gx.forms.wmpformmanager.api.form.impl.FormImpl

    Removed method getActiveVersion().
    Replace with getCurrent()
    Not used in reusables.

    Removed method setActiveVersion(final BasicFormVersion activeVersion).
    Do not use.
    Not used in reusables.

    nl.gx.product.wmasolrsearch.api.SearchService

    Removed method indexPages(String[] urls, String[] hostnames, int depth, boolean clearRest).
    Replace with indexPages(List<String> urls, Set<String> hostnames, int depth, boolean clearRest)
    Used in reusables.     

    nl.gx.siteworks.parser.library.CoreLibrary

    Removed method getValue(int objectId, DotExpression dotExpression, SiteWorksParserData parserData).
    Replace with getAssignment(int objectId, String dotExpression, SiteWorksParserData parserData)
    Not used in reusables.


    nl.gx.forms.wmpformapi.engine.FormValuesMap

    Removed method getUploadedFile(String key).
    Replace with getUploadedFiles(String key)
    Not used in reusables.

    nl.gx.forms.wmpformapi.api.form.State

    Removed enum State.
    Do not use.
    Not used in reusables.

    nl.gx.forms.wmpformmanager.api.form.impl.FormSectionVersionImpl
    nl.gx.forms.wmpformapi.api.BasicVersion
    nl.gx.forms.wmpformmanager.api.form.impl.FormVersionImpl

    Removed method getState().
    Do not use.
    Not used in reusables.
    Not used in reusables.

    Removed method setState(State state).
    Do not use.
    Not used in reusables.

    Removed method getStateValue().
    Do not use.
    Not used in reusables.

    Removed method setStateValue(String state).
    Do not use.
    Not used in reusables.

    The old workflow states active, inactive, development have been removed from XperienCentral. If you still need to migrate away from these old states, contact a GX consultant. 

    nl.gx.product.wmasolrsearch.api.UrlProvider

    Removed method getUrls(boolean includeAll).
    Replace with getUrlList(boolean includeAll)
    Not used in reusables.

    nl.gx.product.wmasolrsearch.searchengine.server.Session

    Removed method execute(String query).
    Do not use this method.
    Not used in reusables.

    Removed method select(String query).
    Do not use this method.
    Not used in reusables.

    Removed method gc().
    Do not use this method.
    Not used in reusables.

    Removed method shutdown().
    Do not use this method.
    Not used in reusables.

    Removed method reset().
    Do not use this method.
    Not used in reusables.

    Removed method execute(String query).
    Do not use this method.
    Not used in reusables.

    nl.gx.forms.wmpformapi.api.form.FormVersion

    Removed method isCurrentlyActive().
    Replace with isPublic().
    Not used in reusables.

    nl.gx.forms.wmpformapi.engine.FormScope

    Removed method setUploadFragmentValue(String fragment, UploadedFile file).
    Replace with setUploadFragmentValues(fragment, Collections.singletonList(file))
    Not used in reusables.

    nl.gx.forms.wmpformapi.engine.UploadFragmentScope

    Removed method getOriginalFilename().
    Replace with getValues().get(0).getOriginalFilename()
    Not used in reusables.

    Removed method getContentType().
    Replace with getValues().get(0).getContentType()
    Not used in reusables.

    Removed method getCurrentFilename().
    Replace with getValues().get(0).getFile().getAbsolutePath()
    Not used in reusables.

    Removed method getSize().
    Replace with getValues().get(0).getSize()
    Not used in reusables.

    Removed method setContentType(String contenType).
    Do not use this method.
    Not used in reusables.

    Removed method setCurrentFilename(String filename).
    Do not use this method.
    Not used in reusables.

    Removed method setOriginalFilename(String filename){}.
    Do not use this method.
    Not used in reusables.

    Removed method setSize(long size).
    Do not use this method.
    Not used in reusables.

    Removed method clearFile().
    Replace with clearFiles()
    Not used in reusables.

    nl.gx.forms.wmpuserprofilesformlogic.api.WebUserService

    Removed method userNameNotInUseByAnotherUser(Website website, String userName).
    Replace with userNameExists(Website website, String userName).
    Not used in reusables.

    Removed method emailNotInUseByAnotherUser(Website website, String email).
    Replace with emailExists(Website website, String userName).
    Not used in reusables.

    nl.gx.forms.wmpformapi.api.base.SimpleParameter

    Removed method getOverridden().
    Replace with getParameterMode().
    Not used in reusables.

    nl.gx.proxy.config.Config

    Removed method getStringValue(String name, String defaultValue).
    Replace with getStringValue(String name).
    Not used in reusables.

    Removed method getIntValue(String name, String defaultValue).
    Replace with getIntValue(String name).
    Not used in reusables.

    nl.gx.siteworks.core.Session

    Removed method createSession().
    Replace with createSession(true).
    Used in reusables.     

    nl.gx.siteworks.parser.library.DateLibrary

    Removed method week(SWDate date).
    Replace with dateToString(date, string, string).
    Not used in reusables.




    Modular Content

    nl.gx.product.wmamodularcontent.api.ModularContentTypeManagementService

    Removed method getUsageInItem(String id).
    Replace with getUsageInItem(ModularContentType modularContentType)
    Not used in reusables.

    nl.gx.product.wmamodularcontent.api.TemplatePropertyType

    Removed constructor TemplatePropertyType(String identifier, String label, TemplatePropertySubtype... subtypes).
    Replace with another constructor.
    Not used in reusables.

    Removed constructor TemplatePropertyType(String identifier, String label, List<TemplatePropertySubtype> subtypes).
    Replace with another constructor.
    Not used in reusables.



    Connector API

    com.gxwebmanager.solutions.wmsconnectorapi.api.Connector

    Removed method getWebsite().
    Replace with getWebsites()
    Not used in reusables.

    Removed method setWebsite(Website website).
    Replace with setWebsites(Website[] websites)
    Not used in reusables.

    com.gxwebmanager.solutions.wmsconnectorapi.api.JobSchedulerService

    Removed method run(SchedulerJob scheduledJob).
    Replace with execute(SchedulerJob scheduledJob)
    Not used in reusables.

    Removed method run(Job job).
    Replace with execute(Job job).
    Not used in reusables.

    Removed method runLocal(Job job).
    Replace with executeLocal(Job job).
    Not used in reusables.

    Removed method run(SchedulerJob scheduledJob, LogFactory logFactory).
    Replace with execute(SchedulerJob scheduledJob, LogFactory logFactory).
    Not used in reusables.

    Removed method run(Job job, LogFactory logFactory).
    Replace with execute(Job job, LogFactory logFactory).
    Not used in reusables.

    com.gxwebmanager.solutions.wmsconnectorapi.api.JobSession

    Removed method getWebsite().
    Replace with getWebsiteId().
    Not used in reusables.

    com.gxwebmanager.solutions.wmsconnectorapi.api.util.FileUtils

    Removed method writeZipEntryToFile(ZipFile zipFile, ZipEntry zipEntry, File target).
    Replace with ZipUtils.writeZipEntryToFile(zipFile, zipEntry, target).
    Not used in reusables.

    Removed method loadContentFromZipEntry(ZipFile zipFile, ZipEntry zipEntry).
    Replace with ZipUtils.loadContentFromZipEntry(zipFile, zipEntry).
    Not used in reusables.

    Removed method createZipFile(String zipFileName, File[] sourceFiles).
    Replace with ZipUtils.createZipFile(zipFileName, sourceFiles).
    Not used in reusables.

    com.gxwebmanager.solutions.wmsconnectorapi.api.impl.ImportExportLogger

    Removed method getFromToProgress().
    Replace with getProgressIndex() and getProgressMaxCount().
    Not used in reusables.

    Removed method setFromToProgress(int progress, int max).
    Replace with setProgressIndex(progress) and setProgressMaxCount(max).
    Not used in reusables.









    ...

    Expand
    titleXperienCentral R36

    XperienCentral R36

    Release date: June 15, 2022


    Note

    Minimum Version Required for Upgrading to XperienCentral R36

    Upgrading to XperienCentral R36 requires a minimum version of R26. If you are upgrading from XperienCentral R25 or lower, you must first upgrade to R26 and then upgrade to XperienCentral R36.


    Check Configuration Files

    See Check Configuration Files.

    SEO Updates

    In R35 and earlier, the application_settings.friendly_url_extension setting was used to determine whether a URL is friendly. In R36 and higher, it's possible to leave the friendly URL extension empty which calculates friendly URLs without extensions. This means that the way that a URL is checked for being friendly has been changed. A new setting has been introduced in the startup_settings section of the General tab of the Setup Tool: seo_path. The value in this field is used to determine if a URL is friendly or not. For example, assume that Apache is not configured to remove /web/ from a URL. In that case a friendly URL in versions R35 or earlier would be /web/home.htm. In versions R36 and higher, it would be /web/seo/myweb.htm.

    To make sure this works as intended check the following settings in the Setup tool:

    website_settings.friendly_url_prefix

    In R35, the default value was /${startup_settings.context}. When Apache is not used to remove the /web/ prefix, this setting should be updated to

    /${startup_settings.context}/${startup_settings.seo_path}

    If Apache is used, this field is usually empty and can be left as is.

    startup_settings.seo_path

    The value of this field should be set to seo by default. If this field is not present in the startup_settings.xml check with your hosting provider if a different startup_config.xml is used than the one shipped with the deploy of XperienCentral. In that case, the following line should be added:

    <entry name="seo_path" value=$(webmanager seopath)" />

    Please also make sure that all changes in settings.xml have been applied.

    context_static

    The setting application_settings.context_static has been removed in XperienCentral R36. You must modify any custom code that uses this setting to use application_settings.static_files_url instead.

    Changes to Apache

    A minor change needs to be done to the vhost configuration in Apache to make sure XperienCentral keeps working. Most installations should have something along these lines to redirect requests from Apache to XperienCentral:


    Code Block
    themeEclipse
    RewriteCond %{REQUEST_URI} !^/web/
    RewriteCond %{REQUEST_URI} !^/admin/
    RewriteRule ^/(.*)\.htm$ /web/$1.htm [PT,L]


    The last line should be updated to


    Code Block
    themeEclipse
    RewriteRule ^/(.*)\.htm$ /web/seo/$1.htm [PT,L]

    This applies to both the back- and frontend vhost configurations.

    In order to run XperienCentral without extensions at all, see Running XperienCentral without a Friendly URL Extension.

    Friendly URL Extension Setting

    The setting frontend_settings.friendly_url_extension was removed in R36.

    URL Transformations

    When transforming a URL from a URL without a context path to one with a context path in custom code, you should now also add the SEO path to the updated URL. This kind of logic is often used in custom implementations of the MetaDataProvider interface.

    Update your Solr Configuration

    In R36, the Solr version has been upgraded to version 8.11.1, therefore you must make the following changes:

    In solrconfig.xml, change the declaration:

    <luceneMatchVersion>6.6.6</luceneMatchVersion>

    to

    <luceneMatchVersion>8.11.1</luceneMatchVersion>

    The eDismax query parser parameter lowercaseOperators now defaults to false if the luceneMatchVersion in solrconfig.xml is 7.0.0 or above, therefore you must set the lowercaseOperators parameter explicitly to true:

    <bool name="lowercaseOperators">true</bool>

    The following spatial-related fields have been removed:

    • LatLonType
    • GeoHashField
    • SpatialVectorFieldType
    • SpatialTermQueryPrefixTreeFieldType

    Choose one of these field types instead:

    • LatLonPointSpatialField
    • SpatialRecursivePrefixTreeField
    • RptWithGeometrySpatialField

    Extra Steps

    1. Stop Tomcat if it is running.
    2. Remove the directory <webmanager-root>/work/searchengine.
    3. If you have a custom solrconfig.xml, you need to modify it — open it in a text editor.
    4. Save your custom solrconfig.xml.
    5. Start Tomcat.
    6. Log in to XperienCentral.

    Real-time indexing

    If you use real-time indexing (the XperienCentral Realtime Indexing reusable):

    1. Navigate to Configuration > Realtime Indexing.
    2. Select the "Indexing" tab.
    3. Select all the websites that you want to index in the top part of the panel.
    4. Click [Index selected items].

    No real-time indexing

    If you do not use real-time indexing (the XperienCentral Realtime Indexing reusable):

    1. Open the Setup Tool.
    2. Select the Search Tools tab.
    3. Click [Index] in the "INDEX URL" section.

    Custom Solr Queries

    Check the changes that have been made between Solr versions 6.6.6 and 8.11.1 in order to determine whether you need to modify your custom Solr queries. See https://solr.apache.org/guide/8_11/major-changes-in-solr-8.html.

    Deprecated Functionalities

    Some query functionalities have been deprecated and/or removed, so it might be necessary to rewrite custom queries. See Solr upgrade (R36/Solr 8.11.1) for specific use cases that GX Software has encountered (login required).

    Rebuild the Content Index

    Due to a change in the Search functionality, you must rebuild the content index. To do so, manually remove the <webmanager-root>/work/contentindex directory after the upgrade and allow it to be regenerated after restarting XperienCentral. Selecting contentindex_queue_empty_reindex in the General tab of the Setup Tool is not sufficient to trigger the regeneration of the content index.



    ...

    Expand
    titleXperienCentral R35

    XperienCentral R35

    Release date: February 7, 2022


    Note

    Minimum Version Required for Upgrading to XperienCentral R35

    Upgrading to XperienCentral R35 requires a minimum version of R26. If you are upgrading from XperienCentral R25 or lower, you must first upgrade to R26 and then upgrade to XperienCentral R35.


    Check Configuration Files

    See Check Configuration Files.

    SSI URLs

    New security measures were introduced in this version that prevent the manipulation of URLs that contain SSI object IDs and/or presentation IDs. In general the cache will still be filled with files that contain pre-upgrade SSI URLs after an upgrade, which will lead to SSIs not being loaded and to the following message being logged in the Catalina logs:


    nl.gx.webmanager.servlet.ControllerServlet.checkSsiObjectIdUrlSignature Block ssiObjectId request XXXXXXX because it is not allowed in this context 

    This can be prevented by either clearing the frontend cache during the upgrade or, if that is not an option, by disabling the check_url_signature option in the application_settings section of the General tab in the Setup Tool. Be sure to re-enable this option after the cache has been regenerated. This setting will be shown in Setup Tool as turned off by default. However, it's actually turned on. So in order to get the state right, toggle the option in the Setup Tool to make sure it reflects the proper state.

    fragment.tag and fragmentLabel.tag

    The files fragment.tag and fragmentLabel.tag have been extensively modified in this version of XperienCentral. If you have custom code that makes use of modified versions of these files, perform a diff on the XperienCentral version of these files with your own modified versions in order to see what the differences are in order to pick up the new modifications. As is the case with all upgrades, do not overwrite your versions of these files if they have been customized for your XperienCentral deployment.

    Changes to fragment.tag

    This file has been updated to always render the HTML for the fragment label in the IAF Panel. Additionally, an ID is added to the <div class="wm-field-helptext"> whenever it appears in the IAF Panel.

    Changes to fragmentLabel.tag

    If you select "Required field" for a form fragment, you see that change immediately in the Interactive Forms panel. In earlier versions, this was not the case. In order to make this possible, the HTML is now always rendered in the Interactive Forms panel.


     



    Expand
    titleXperienCentral R34

    XperienCentral R34

    Release date: November 18, 2021


    Note

    Minimum Version Required for Upgrading to XperienCentral R34

    Upgrading to XperienCentral R34 requires a minimum version of R26. If you are upgrading from XperienCentral R25 or lower, you must first upgrade to R26 and then upgrade to XperienCentral R34.


    Check Configuration Files

    See Check Configuration Files.

    Deprecated Media Repository Method Removed

    The following method which was deprecated in 2009 has been removed from nl.gx.webmanager.cms.mediarepository.MediaRepository:

    Code Block
    int copyMediaItem(MediaItemVersion mediaItem);

    JBoss upgrade

    From R34 onwards, JBoss 7.2 EAP is the supported JBoss version. JBoss 7.2 EAP and higher incorporates JDK 11 support. In order to upgrade, download the JBoss 7.2.0 EAP application server from https://developers.redhat.com/products/eap/download. See https://access.redhat.com/articles/2026253 for the supported configurations. In order to run XC on the JBoss application platform, use the standalone.xml and standalone.conf delivered with the XC SDK. For more information, see the updated JBoss information on the Linux Server Installation page.

    MySQL Connector Upgrade

    • In R34, the version of the MySQL connector has been upgraded from version 5.1.23 to 8.0.26. In version 8.0.23, changes were made to the way that MySQL handles time zones and dates. The method getObject(columnindex) now returns a local date/time rather than a string for any date/time columns, therefore any custom code that implements this method should be checked and modified if necessary.
    • A second change in the connector is the way time zone conversions are handled. In order to keep these settings the same as they were before the changes in version 8.0.23, the following parameter should be added to the
      connection URL in the connectionTimeZone=<server> parameter in the Tomcat server.xml . For example:

      Before:

      jdbc:mysql://localhost:3306/webmanager9?autoReconnect=true

      After:

      jdbc:mysql://localhost:3306/webmanager9?autoReconnect=true&amp:connectionTimeZone=<server>

      In the second example above, note that &amp: is used instead of &.



    ...

    Expand
    titleXperienCentral R27

    XperienCentral R27

    Release date: March 26, 2020

    Check Configuration Files

    See Check Configuration Files.

    Language Version Support for Media Items

    Beginning in XperienCentral 10.27.0, each version of a media item has a specific language defined for it. During the upgrade R27 or higher, each media item is assigned the default editing language of the home page. A consequence of this is that media items might not be shown any longer if its language differs from that of the page on which it should be shown. This is also the case for (lead) images stored in the Content Repository. This can be solved in many cases by defining a fallback language for the languages on your channel. If the fallback language for Dutch is set to English, for example, and there is no Dutch media item to be shown on a Dutch page, then the English version will be shown. This is the case for all kinds of media items, images as well as articles, for example.

    Check the following to ensure that media items in your channel(s) are handled appropriately:

    • The "Language" setting (default editing language) for the home page: Properties widget > General > Other > Language.
    • Enable/disable fallback language(s) setting: Channel Configuration > General > Options > "Use another language if language is not available".
    • The fallback language to use for a language: Language Labels.

    Modify your Solr Configuration

    In this version of XperienCentral, the Lucene version has been upgraded to version 6.6.6, therefore you must make the following changes to solrconfig.xml:

    Change the declaration

    <luceneMatchVersion>5.4.1</luceneMatchVersion>

    to

    <luceneMatchVersion>6.6.61</luceneMatchVersion>

    and add the following declaration to the <config></config> section:

    <schemaFactory class="ManagedIndexSchemaFactory">
       <bool name="mutable">false</bool>
    </schemaFactory>


    Deprecated Method

    The following method has been deprecated in the XperienCentral API in this release:

    • MediaRepositoryManagementService.createMediaItemVersion (MediaItem,MediaItemVersion) — Use createMediaItemVersion(MediaItemVersion) instead.

    Removed Methods/Interfaces

    The following methods and interfaces have been removed from the XperienCentral API in this release:

    • MediaRepository.createContent — Use MediaRepositoryManagementService.createMediaItem(Website, String) instead.
    • MediaItemDownloadVersion.getPersonalization() — Use getPersonalizationItem() instead.
    • PageVersion.getPersonalization() — Use getPersonalizationItem() instead.
    • Element.getPersonalization() — Use getPersonalizationItem() instead.
    • Element.setPersonalization() — Use setPersonalizationItem() instead.
    • MediaItemDownloadVersion.setPersonalization() — Use setPersonalizationItem() instead.
    • Website.getPersonalizations() — Use getPersonalizationItems() instead.
    • Utilities.checkPersonalizations() — Use checkPersonalizationItems() instead.
    • DirectoryElement
    • FileNode
    • PollElement

    • PollItem

    • WhoIsWhoElement

    Update your Presentation JSPs

    You need to update your presentation JSPs if they use the following methods:

    • PageVersion.getPersonalization()
    • Element.getPersonalization()
    • MediaItemDownloadVersion.getPersonalization()

    Perform a global search in your presentation JSPs for the string ".personalization" to ensure that you catch all instances.



    ...