Home » Upgrading Backoffice from 6.7 to 1808

Upgrading Backoffice from 6.7 to 1808

Procedure

  1. Remove backofficeSolrIndexerDeleteCronJob by importing the following impex:
  2. REMOVE CronJob;code[unique=true]
    ;backofficeSolrIndexerDeleteCronJob
  3. Run update system to create backofficeconfiguration.
  4. Backoffice Solr config set was removed, to follow a new approach:
  • Remove temp folder within hybris directory.
  • Remove config/solr/instances/backoffice directory.
  • Run the provided impex.
$solrIndexerQueries=solrIndexerQueries(identifier)[forceWrite = true]; 
INSERT_UPDATE SolrIndexedType;identifier[unique = true];type(code);$solrIndexerQueries;
variant;identityProvider;modelLoader;configSet;indexName;
;BackofficeProduct;Product;
backofficeProductFull, backofficeProductUpdate, backofficeProductDelete;false;
backofficeIdentityProvider;;default;backoffice_product
  1. 5. Perform full Solr indexation.

Additional Information

These upgrade steps are intended to assist in the upgrade of custom-developed extensions and do not need to be performed for out-of-the-box SAP Commerce functionality.

The initial content of template extensions is guaranteed to stay compatible, but you need to make sure that the added or changed custom code is analyzed and tested for the upgrade from functionality. 6.7 to 1808.

This section describes some of the factors that you should take into account when upgrading from 6.7 to 1808.

Highlights

General information that you need to take into consideration when upgrading to SAP Commerce 1808

  • A possibility to change widget access restrictions was added.

There are a few API changes in Backoffice that you need to take into consideration when upgrading to SAP Commerce 1808

Deprecated API

With 1808 SAP Commerce, the following elements have been deprecated:

  • com.hybris.cockpitng.widgets.common.explorertree.model.DefaultExplorerTreeModel.indexOf(NavigationNode, List<NavigationNode>)
  • com.hybris.cockpitng.widgets.common.explorertree.model.DefaultExplorerTreeModel.unpackNavigationNodeDecorator(NavigationNode)
  • com.hybris.backoffice.cockpitng.search.builder.impl.isUnaryOperator(ValueComparisonOperator)

Use com.hybris.cockpitng.search.data.ValueComparisonOperator.isUnary or com.hybris.cockpitng.search.data.ValueComparisonOperator.isUnary(ValueComparisonOperator) instead

  • com.hybris.backoffice.solrsearch.indexer.impl.BackofficeSolrDocumentFactory
  • com.hybris.backoffice.solrsearch.services.impl.DefaultBackofficeFacetSearchService#prepareTypeCondition(com.hybris.cockpitng.search.data.SearchQueryData)

Use com.hybris.backoffice.solrsearch.services.impl.DefaultBackofficeFacetSearchService#prepareTypeCondition(de.hybris.platform.solrfacetsearch.config.IndexedType, com.hybris.cockpitng.search.data.SearchQueryData) instead

  • com.hybris.backoffice.solrsearch.constants.BackofficesolrsearchConstants#TYPE_CODE_FIELD

Use de.hybris.platform.core.model.ItemModel#ITEMTYPE instead

  • com.hybris.backoffice.solrsearch.events.DirectSolrIndexSynchronizationStrategy#performIndexUpdate(final String typecode, final SolrFacetSearchConfigModel solrFacetSearchConfig, final List<String> pks)
  • com.hybris.backoffice.solrsearch.events.SolrIndexingAfterSaveListener

Use com.hybris.backoffice.solrsearch.aspects.ObjectFacadeSolrIndexingAspect instead

  • com.hybris.backoffice.cockpitng.modules.BackofficeFileConventionUtils#SPRING_XML_SUFFIX
  • com.hybris.backoffice.cockpitng.modules.BackofficeFileConventionUtils#WIDGETS_XML_SUFFIX
  • com.hybris.backoffice.cockpitng.modules.BackofficeFileConventionUtils#CONFIG_XML_SUFFIX
  • com.hybris.backoffice.cockpitng.modules.BackofficeFileConventionUtils#SEPARATOR
  • com.hybris.backoffice.cockpitng.modules.BackofficeFileConventionUtils#EXTENSION_PROTOCOL_PREFIX
  • com.hybris.backoffice.cockpitng.modules.BackofficeModuleConnector#getHybrisModulesFromExtensions
  • com.hybris.cockpitng.core.CockpitComponentDefinitionService#getClassLoader
  • com.hybris.cockpitng.core.CockpitComponentDefinitionService#getApplicationContext
  • com.hybris.cockpitng.core.persistence.packaging.WidgetJarLibInfo#getJarFile
  • com.hybris.cockpitng.editors.impl.EditorDefinitionFactory#DEFAULT_VIEW_ZUL_FILENAME
  • com.hybris.cockpitng.engine.impl.DefaultCockpitWidgetEngine#VIEW_ZUL
  • com.hybris.cockpitng.modules.CockpitModuleConnector#getDefaultModules
  • com.hybris.cockpitng.modules.CockpitModuleConnector#setDefaultModules
  • com.hybris.cockpitng.modules.LibraryHandler#canFetchLibrary
  • com.hybris.cockpitng.modules.LibraryHandler#fetchLibrary
  • com.hybris.cockpitng.modules.LibraryHandler#afterDeploy
  • com.hybris.cockpitng.modules.LibraryHandler#afterDeployReverseOrder
  • com.hybris.cockpitng.modules.core.impl.CockpitModulesApplicationContextInitializer#initializeCockpitModulesApplicationContext
  • com.hybris.cockpitng.widgets.compare.renderer.DefaultCompareViewAttributeRenderer#renderAttributeName(TableCell, Attribute, PartialRendererData<Collection>, DataType, WidgetInstanceManager)

Use com.hybris.cockpitng.widgets.compare.renderer.DefaultCompareViewAttributeRenderer#renderAttributeName(TableRow, TableCell, Attribute, PartialRendererData, DataType, WidgetInstanceManager) instead

  • com.hybris.cockpitng.widgets.compare.renderer.DefaultCompareViewAttributeRenderer#createAttributeNameContents(Attribute, PartialRendererData<Collection>, DataType, WidgetInstanceManager)

Use com.hybris.cockpitng.widgets.compare.renderer.DefaultCompareViewAttributeRenderer#createAttributeNameContents(TableRow, Attribute, PartialRendererData, DataType, WidgetInstanceManager) instead

  • com.hybris.cockpitng.widgets.compare.renderer.DefaultCompareViewSectionRenderer#handleSectionExpandStateChangeRequested(TableRowsGroup, Section, PartialRendererData<Collection>, DataType, WidgetInstanceManager)

Use com.hybris.cockpitng.widgets.compare.renderer.DefaultCompareViewSectionRenderer#handleSectionExpandStateChangeRequested(TableRowsGroup, TableRow, Section, PartialRendererData, DataType, WidgetInstanceManager, Object) instead

  • com.hybris.cockpitng.widgets.compare.renderer.DefaultCompareViewSectionRenderer#renderSection(TableRowsGroup, Section, PartialRendererData<Collection>, DataType, WidgetInstanceManager)

Use com.hybris.cockpitng.widgets.compare.renderer.DefaultCompareViewSectionRenderer#renderSection(TableRowsGroup, TableRow, Section, PartialRendererData, DataType, WidgetInstanceManager) instead

  • com.hybris.cockpitng.widgets.compare.renderer.DefaultCompareViewBoxRenderer#appendConstantElementIfRequired(Component, String, String, Executable, Object)

Use com.hybris.cockpitng.widgets.compare.renderer.appendConstantElementIfRequired(Component, String, Executable)

  • com.hybris.cockpitng.widgets.compare.renderer.DefaultCompareViewBoxRenderer#isMarkedObjectUpToDate(Component, String, Object)
  • com.hybris.backoffice.excel.template.ExcelTemplateService.createWorkbook(InputStream is)

Use ExcelWorkbookService#createWorkbook(InputStream) instead

  • com.hybris.backoffice.excel.template.ExcelTemplateService.getTypeSystemSheet(Workbook workbook)

Use ExcelWorkbookService#getMetaInformationSheet(Workbook) instead

  • com.hybris.backoffice.excel.template.ExcelTemplateService.getSheetsNames(Workbook workbook)

Use ExcelSheetService#getSheetsNames(Workbook) instead

  • com.hybris.backoffice.excel.template.ExcelTemplateService.getSheets(Workbook workbook)

Use ExcelSheetService#getSheets(Workbook) instead

  • com.hybris.backoffice.excel.template.ExcelTemplateService.getCellValue(Cell cell)

Use ExcelCellService#getCellValue(Cell) instead

  • com.hybris.backoffice.excel.template.ExcelTemplateService.getHeaders(Sheet typeSystemSheet, Sheet typeSheet)

Use ExcelHeaderService#getHeaders(Sheet, Sheet) instead

  • com.hybris.backoffice.excel.template.ExcelTemplateService.getSelectedAttributesQualifiers(Sheet typeSystemSheet, Sheet typeSheet)

Use ExcelHeaderService#getSelectedAttributesQualifiers(Sheet, Sheet) instead

  • com.hybris.backoffice.excel.template.ExcelTemplateService.findColumnIndex(final Sheet typeSystemSheet, final Sheet sheet, SelectedAttribute selectedAttribute)

Use ExcelSheetService#findColumnIndex(Sheet, Sheet, ExcelAttribute) instead

  • com.hybris.backoffice.excel.template.ExcelTemplateService.createTypeSheet(final String typeCode, final Workbook workbook)

Use ExcelSheetService#createTypeSheet(Workbook, String) instead

  • com.hybris.backoffice.excel.template.ExcelTemplateService.findTypeCodeForSheetName(String sheetName, Workbook workbook)com.hybris.backoffice.excel.template.ExcelTemplateService.createTypeSheet(final String typeCode, final Workbook workbook)

Use ExcelSheetService#findTypeCodeForSheetName(Workbook, String) instead

  • com.hybris.backoffice.excel.template.ExcelTemplateService.findSheetNameForTypeCode(String typeCode, Workbook workbook)

Use ExcelSheetService#findSheetNameForTypeCode(Workbook, String) instead

  • com.hybris.backoffice.excel.template.ExcelTemplateService.addTypeSheet(final String typeName, final Workbook workbook)

Use ExcelSheetService#createTypeSheet(Workbook, String) instead

  • com.hybris.backoffice.excel.template.ExcelTemplateService.insertAttributeHeader(final Sheet sheet, final SelectedAttribute selectedAttribute, final int columnIndex)

Use {@link ExcelHeaderService#insertAttributeHeader(Sheet, ExcelAttribute, int) instead

  • com.hybris.backoffice.excel.template.ExcelTemplateService.insertAttributesHeader(final Sheet sheet, final Collection<SelectedAttribute> selectedAttributes)

Use com.hybris.backoffice.excel.template.ExcelTemplateService.createTypeSheet(finalExcelHeaderService#insertAttributesHeader(Sheet, Collection)} instead

  • com.hybris.backoffice.excel.template.ExcelTemplateService.insertAttributeValue(final Cell cell, final Object object)

Use ExcelCellService#insertAttributeValue(Cell, Object) instead

  • com.hybris.backoffice.excel.template.ExcelTemplateService.createEmptyRow(final Sheet sheet)

Use ExcelSheetService#createEmptyRow(Sheet) instead.

  • com.hybris.backoffice.excel.template.ExcelTemplateService.getAttributeDisplayName(AttributeDescriptorModel attributeDescriptorModel, final String isoCode)

Use DisplayNameAttributeNameFormatter#format(ExcelAttributeContext) instead

  • com.hybris.backoffice.excel.template.DefaultExcelTemplateService.hideUtilitySheet(final Workbook workbook, final String sheetName)

The process of hiding sheets was moved to com.hybris.backoffice.excel.exporting.HideUtilitySheetsDecorator

  • com.hybris.backoffice.excel.template.DefaultExcelTemplateService.getUtilitySheetHiddenLevel()

The process of hiding sheets was moved to com.hybris.backoffice.excel.exporting.HideUtilitySheetsDecorator

  • com.hybris.backoffice.excel.template.DefaultExcelTemplateService.activateFirstNonUtilitySheet(final Workbook workbook)

The process of hiding sheets was moved to com.hybris.backoffice.excel.exporting.HideUtilitySheetsDecorator

  • com.hybris.backoffice.excel.template.DefaultExcelTemplateService.populateTypeSystemSheet(final ComposedTypeModel composedType, final Workbook workbook)

Use TypeSystemSheetPopulator#populate(ExcelExportResult) instead. The typeSystem sheet is now being populated in com.hybris.backoffice.excel.exporting.ExcelExportWorkbookPostProcessor via com.hybris.backoffice.excel.exporting.ExcelExportWorkbookDecorator

  • com.hybris.backoffice.excel.template.DefaultExcelTemplateService.addAttributeToExcelTypeSystemSheet(final AttributeDescriptorModel attributeDescriptor, final Sheet sheet)

Use TypeSystemSheetPopulator#populate(ExcelExportResult) instead. The typeSystem sheet is now being populated in com.hybris.backoffice.excel.exporting.ExcelExportWorkbookPostProcessor via com.hybris.backoffice.excel.exporting.ExcelExportWorkbookDecorator

  • com.hybris.backoffice.excel.template.DefaultExcelTemplateService.addAttributeToExcelTypeSystemSheet(final AttributeDescriptorModel attributeDescriptor, final Sheet sheet, final String langIsoCode)

Use TypeSystemSheetPopulator#populate(ExcelExportResult) instead. The typeSystem sheet is now being populated in com.hybris.backoffice.excel.exporting.ExcelExportWorkbookPostProcessor via com.hybris.backoffice.excel.exporting.ExcelExportWorkbookDecorator

  • com.hybris.backoffice.excel.template.DefaultExcelTemplateService.isMandatory(final AttributeDescriptorModel attributeDescriptor, final String langIsoCode)

The logic was moved to DisplayNameAttributeNameFormatter.

  • com.hybris.backoffice.excel.template.DefaultExcelTemplateService.getAttributeDescriptorName(final AttributeDescriptorModel attributeDescriptor)

The logic was moved to DisplayNameAttributeNameFormatter.

  • com.hybris.backoffice.excel.template.DefaultExcelTemplateService.getCommonI18NService()
  • com.hybris.backoffice.excel.template.DefaultExcelTemplateService.setCommonI18NService(final CommonI18NService commonI18NService)
  • com.hybris.backoffice.excel.template.DefaultExcelTemplateService.getExcelTranslatorRegistry()
  • com.hybris.backoffice.excel.template.DefaultExcelTemplateService.setExcelTranslatorRegistry(final ExcelTranslatorRegistry excelTranslatorRegistry)
  • com.hybris.backoffice.excel.template.DefaultExcelTemplateService.getPermissionCRUDService()
  • com.hybris.backoffice.excel.template.DefaultExcelTemplateService.setPermissionCRUDService(final PermissionCRUDService permissionCRUDService)
  • com.hybris.backoffice.excel.template.DefaultExcelTemplateService.getExcelDateUtils()
  • com.hybris.backoffice.excel.template.DefaultExcelTemplateService.setExcelDateUtils(final ExcelDateUtils excelDateUtils)
  • com.hybris.backoffice.excel.template.DefaultExcelTemplateService.getExcelSheetNamingStrategy()
  • com.hybris.backoffice.excel.template.DefaultExcelTemplateService.setExcelSheetNamingStrategy(final ExcelSheetNamingStrategy excelSheetNamingStrategy)
  • com.hybris.backoffice.excel.template.ExcelTemplateConstants#TYPE_SYSTEM

Use ExcelTemplateConstants.UtilitySheet#TYPE_SYSTEM instead.

  • com.hybris.backoffice.excel.template.ExcelTemplateConstants#TYPE_TEMPLATE

Use @link ExcelTemplateConstants.UtilitySheet#TYPE_TEMPLATE instead.

  • com.hybris.backoffice.excel.template.ExcelTemplateConstants#UTILITY_SHEETS

Use ExcelTemplateConstants.UtilitySheet instead.

  • com.hybris.backoffice.excel.template.ExcelTemplateConstants.isUtilitySheet(final String sheetName)

Use ExcelTemplateConstants.UtilitySheet#isUtilitySheet(Collection, String) instead.

  • com.hybris.backoffice.excel.template.ExcelTemplateConstants$Mark

Use ExcelTemplateConstants$SpecialMark instead.

  • com.hybris.backoffice.excel.template.ExcelTemplateConstants$TypeSystemColumns

Use ExcelTemplateConstants$TypeSystem instead.

  • com.hybris.backoffice.excel.validators.WorkbookMaxRowValidator.getExcelTemplateService()
  • com.hybris.backoffice.excel.validators.WorkbookMaxRowValidator.setExcelTemplateService(final ExcelTemplateService excelTemplateService)
  • com.hybris.backoffice.excel.validators.WorkbookMandatoryColumnsValidator.hasNotDefaultValue(final AttributeDescriptorModel attributeDescriptorModel)

Use com.hybris.backoffice.excel.template.filter.DefaultValueCheckingFilter instead.

  • com.hybris.backoffice.excel.validators.WorkbookMandatoryColumnsValidator.getTypeService()
  • com.hybris.backoffice.excel.validators.WorkbookMandatoryColumnsValidator.setTypeService(final TypeService typeService)
  • com.hybris.backoffice.excel.validators.WorkbookMandatoryColumnsValidator.getExcelTemplateService()
  • com.hybris.backoffice.excel.validators.WorkbookMandatoryColumnsValidator.setExcelTemplateService(final ExcelTemplateService excelTemplateService)
  • com.hybris.backoffice.excel.exporting.ExcelExportDivider.groupItemsByType(final List<ItemModel> items)

Use #groupItemsByType(Collection) instead.

  • com.hybris.backoffice.excel.exporting.ExcelExportDivider.groupAttributesByType(final Set<String> typeCodes, final List<SelectedAttribute> selectedAttributes)

Use #groupAttributesByType(Collection, Collection) instead.

  • com.hybris.backoffice.excel.exporting.DefaultExcelExportService.getExcelTemplateService()
  • com.hybris.backoffice.excel.exporting.DefaultExcelExportService.setExcelTemplateService(final ExcelTemplateService excelTemplateService)
  • com.hybris.backoffice.excel.validators.WorkbookTypeCodeAndSelectedAttributeValidator.getExcelTemplateService()
  • com.hybris.backoffice.excel.validators.WorkbookTypeCodeAndSelectedAttributeValidator.setExcelTemplateService(final ExcelTemplateService excelTemplateService)
  • com.hybris.backoffice.excel.data.SelectedAttribute#REFERENCE_PATTERN_SEPARATOR

Use com.hybris.backoffice.excel.template.ExcelTemplateConstants#REFERENCE_PATTERN_SEPARATOR instead.

  • com.hybris.backoffice.excel.data.SelectedAttribute.findDefaultValues()

Use com.hybris.backoffice.excel.importing.parser.DefaultImportParameterParser#parseDefaultValues(String, String) instead.

  • com.hybris.backoffice.excel.validators.ExcelMediaImportValidator.getImportService()
  • com.hybris.backoffice.excel.validators.ExcelMediaImportValidator.setImportService(final ExcelImportService importService)
  • com.hybris.backoffice.excel.jobs.ExcelImportJobPerformable.getExcelTemplateService()
  • com.hybris.backoffice.excel.jobs.ExcelImportJobPerformable.setExcelTemplateService(final ExcelTemplateService excelTemplateService)
  • com.hybris.backoffice.excel.data.ImpexHeaderValue(final String name, final boolean unique, final String lang, final String dateFormat, final String translator)

Use #Builder instead.

  • com.hybris.backoffice.excel.data.ImpexHeaderValue(final String name, final boolean unique, final String lang, final String dateFormat)

Use #Builder instead.

  • com.hybris.backoffice.excel.data.ImpexHeaderValue(final String name, final boolean unique, final String lang)

Use #Builder instead.

  • com.hybris.backoffice.excel.data.ImpexHeaderValue(final String name, final boolean unique)

Use #Builder instead.

  • com.hybris.backoffice.excel.imp.wizard.ExcelImportDownloadValidationErrorHandler

Use ExcelDownloadReportService instead.

  • com.hybris.backoffice.excel.imp.wizard.renderer.ExcelImportValidationRowResultRenderer.createDetailsRow(final Object columnHeader, final String validationMessage)

Use ExcelValidationDetailsComponentFactory instead.

  • com.hybris.cockpitng.util.UITools#adjustURL(final String url)
  • com.hybris.backoffice.cockpitng.services.media.impl.MediaToPreviewResolutionStrategy#mediaStorageConfigService
  • com.hybris.backoffice.cockpitng.services.media.impl.MediaToPreviewResolutionStrategy#getMediaStorageConfigService()
  • com.hybris.backoffice.cockpitng.services.media.impl.MediaToPreviewResolutionStrategy#setMediaStorageConfigService(final MediaStorageConfigService mediaStorageConfigService)
  • com.hybris.cockpitng.tree.util.TreeUtils.FilteredTreeModel#rebuild()

Create a new instance of FilteredTreeModel instead.

  • com.hybris.backoffice.widgets.collectioneditorarea.CollectionEditorAreaController#updateWidgetTitile

Use #updateWidgetTitle instead.

  • com.hybris.backoffice.bulkedit.BulkEditHandler#commitTransaction
  • com.hybris.backoffice.bulkedit.BulkEditHandler#rollbackTransaction
  • com.hybris.backoffice.bulkedit.BulkEditHandler#beginTransaction
  • com.hybris.backoffice.widgets.actions.enumeration.EnumerationAction#beginTransaction
  • com.hybris.backoffice.widgets.actions.enumeration.EnumerationAction#rollbackTransaction
  • com.hybris.backoffice.widgets.actions.enumeration.EnumerationAction#commitTransaction

Removed deprecated API

With 1808 SAP Commerce, the following elements have been removed:

  • com.hybris.backoffice.attributechooser.AttributeChooserRenderer#createAttributesSection(org.zkoss.zul.Tree, com.hybris.cockpitng.engine.WidgetInstanceManager, java.lang.String)

Use com.hybris.backoffice.attributechooser.AttributeChooserRenderer#createAttributesSection(org.zkoss.zul.Tree, com.hybris.cockpitng.engine.WidgetInstanceManager, com.hybris.backoffice.attributechooser.AttributesChooserConfig, java.lang.String) instead

  • com.hybris.backoffice.attributechooser.AttributeChooserRenderer#populateTreeData(org.zkoss.zul.Tree, org.zkoss.zul.Tree, com.hybris.backoffice.attributechooser.AttributeChooserForm, com.hybris.cockpitng.engine.WidgetInstanceManager)

Use com.hybris.backoffice.attributechooser.AttributeChooserRenderer#populateTreeData(org.zkoss.zul.Tree, org.zkoss.zul.Tree, com.hybris.backoffice.attributechooser.AttributeChooserForm, com.hybris.backoffice.attributechooser.AttributesChooserConfig, com.hybris.cockpitng.engine.WidgetInstanceManager) instead

  • com.hybris.backoffice.attributechooser.AttributeChooserRenderer#addChosenAttributesListener(org.zkoss.zul.Tree, org.zkoss.zul.Tree, com.hybris.cockpitng.engine.WidgetInstanceManager, com.hybris.backoffice.attributechooser.AttributeChooserForm, org.zkoss.zk.ui.Component)

Use com.hybris.backoffice.attributechooser.AttributeChooserRenderer#addChosenAttributesListener(org.zkoss.zul.Tree, org.zkoss.zul.Tree, com.hybris.cockpitng.engine.WidgetInstanceManager, com.hybris.backoffice.attributechooser.AttributeChooserForm, com.hybris.backoffice.attributechooser.AttributesChooserConfig, org.zkoss.zk.ui.Component) instead

  • com.hybris.backoffice.attributechooser.AttributeChooserRenderer#isIncludeAllSelected(com.hybris.cockpitng.engine.WidgetInstanceManager)

Use com.hybris.backoffice.attributechooser.AttributeChooserRenderer#isIncludeAllSelected(com.hybris.cockpitng.engine.WidgetInstanceManager, com.hybris.backoffice.attributechooser.AttributesChooserConfig) instead

  • com.hybris.cockpitng.tree.util.TreeUtils.FilteredTreeModel#filterString
  • com.hybris.cockpitng.tree.util.TreeUtils.FilteredTreeModel#getFilterString
  • com.hybris.cockpitng.tree.util.TreeUtils.FilteredTreeModel#getChildrenMap
  • com.hybris.cockpitng.tree.util.TreeUtils.FilteredTreeModel#invalidateNodeAndChildren
  • com.hybris.cockpitng.tree.util.TreeUtils.FilteredTreeModel#isEligibleForRegistering
  • com.hybris.cockpitng.tree.util.TreeUtils.FilteredTreeModel#registerFilteredChildren
  • com.hybris.backoffice.solrsearch.utils.SolrQueryLogger.LOG
  • com.hybris.backoffice.config.impl.BackofficeWidgetPersistenceService#getWidgetsConfigMedia
  • com.hybris.backoffice.config.impl.BackofficeWidgetPersistenceService#removeAmbiguousConfiguration
  • com.hybris.backoffice.config.impl.BackofficeWidgetPersistenceService#createWidgetsConfigMedia
  • com.hybris.backoffice.solrsearch.dataaccess.SolrSearchCondition.ConditionValue#ConditionValue(java.lang.Object, com.hybris.cockpitng.search.data.ValueComparisonOperator)

Use com.hybris.backoffice.solrsearch.dataaccess.SolrSearchCondition.ConditionValue#ConditionValue(java.io.Serializable, com.hybris.cockpitng.search.data.ValueComparisonOperator) instead

  • com.hybris.backoffice.solrsearch.services.impl.DefaultBackofficeFacetSearchService#createTypeCodeFQCondition(java.lang.String)
  • com.hybris.backoffice.solrsearch.setup.BackofficeSolrSearchStartupHandler#setBackofficeFacetSearchConfigService(com.hybris.backoffice.solrsearch.services.BackofficeFacetSearchConfigService)
  • com.hybris.backoffice.solrsearch.setup.BackofficeSolrSearchStartupHandler#createAfterInitializationStartCallback
  • com.hybris.backoffice.solrsearch.setup.BackofficeSolrSearchStartupHandler#setBackofficeFacetSearchConfigService
  • com.hybris.backoffice.solrsearch.setup.BackofficeSolrSearchStartupHandler#createAfterInitializationStartCallback
  • com.hybris.backoffice.solrsearch.services.impl.DefaultBackofficeFacetSearchService#createTypeCodeFQCondition
  • com.hybris.backoffice.solrsearch.dataaccess.SolrSearchCondition.ConditionValue#ConditionValue(java.lang.Object, ValueComparisonOperator)

Removed Classes and Interfaces:

  • com.hybris.backoffice.solrsearch.utils.SolrQueryLogger
  • com.hybris.backoffice.BackofficeContextLoaderListener

Deprecated Classes and Interfaces

  • com.hybris.cockpitng.widgets.collectionbrowser.mold.impl.listview.ListViewCollectionBrowserMoldStrategy.CloneableListModel

Replaced by com.hybris.cockpitng.widgets.collectionbrowser.mold.impl.listview.ListViewCollectionBrowserMoldStrategy.UnsortableListModelArray

  • com.hybris.cockpitng.widgets.compare.renderer.DefaultCompareViewSectionRenderer.ExpandSectionListener

Widgets and Config XMLs Moved to Secure Folder

A new backofficeconfiguration media folder was added and it is preconfigured to be secured. In case you store Backoffice configuration in another folder, the folder must be secure. Otherwise Backoffice fails to load.

The only exception to the rule is when the media is stored in the root folder. In this case it is assigned to the backofficeconfiguration secure folder. If the update system or initialization is run, the backofficeconfiguration folder is pre-created. Otherwise, the first attempt to load configuration creates the folder automatically. If the system is not updated, and the first attempt to load configuration happens in clustered environments, the chances are that the secure folder creation may be attempted on many nodes at once. In case the race condition happens, only one folder is created and other creations should fail. In this case, the system should re-try to load the configuration and should continue to load.

Change log

Changed placeholder in the property name of backofficeModulesLabelLocator bean from ${extensionname} to {extName}.