If you want to upgrade to Sophora 4.0 you have to have your servers and components running with 3.x before.
See the list of Sophora versions to see earlier versions with their update instructions.
Sophora 4.0.0 and later requires Java 11 to run all the Sophora components (Server, Delivery, Importer, ...).
-Xmnwith G1! Especially for the Sophora server make sure to remove it from the
vmargswhen updating to the Garbage-First (G1) garbage collector/Java 11.
- The support for 32-bit platforms has been discontinued. The DeskClient only runs on 64-bit platforms and JVMs.
- The DeskClient can no longer be run on Linux with GTK2. Furthermore the
SWT_GTK3environment variable is ignored, as only GTK3 is supported now. Please also note, that GTK versions older than 3.20 are no longer supported.
The Spring version was updated to 5.2 and Spring Boot version was updated to 2.3.
The new date properties
sophora:editorialDate (intended for the date of the editorial document) and
sophora:dwellTimeStart (intended for indicating the start of the document's dwell time) have been added to the mixin
sophora-mix:document and thus also to all document node types.
With server 4.4.0 the new property
sophora:firstPublicationDate (intended for the date of the first publication of new documents) has been added to
sophora-mix:publishable and thus, due to inheritance, also to
All nodetype configurations have been changed to system documents of type "sophora-nt:nodeTypeDocument". The migration step to convert the old nodetype configurations happens automatically.
User and role entities have been changed to system documents of type "sophora-nt:userDocument" and "sophora-nt:roleDocument". Therefore some special features of these entities have been removed or mapped to standard Sophora document features and workflows. Note that changes to user or role documents must be published to take effect.
When exporting users in the DeskClient, the normal document export wizard will appear and there will be no additional checkbox to "Export user passwords as hashes" anymore. To prevent passwords from being exported in a hashed form, you can add the property
sophora:password to the "Properties that should not be exported" in the extended settings on the second page of the export wizard or to the
document.export.propertiesNotToExportInSophoraXml setting in the configuration document.
The following special export configuration settings of the Sophora Repo Exporter have been removed:
You can replace these settings by using the
allSystemDocuments) or the
documentTypes criteria or a query (XPath or Solr; documents must be searchable). To prevent passwords from being exported in a hashed form, you can add the property
sophora:password to the
propertiesNotToExportInSophoraXml setting in the main configuration or alternatively to the
document.export.propertiesNotToExportInSophoraXml setting in the configuration document.
|4.0.0||After the update to Sophora Client 4.0.0.||The long time deprecated constructor |
|4.0.0||After the update to Sophora Client 4.0.0.||Throughout the ISophoraClient and several API and Client classes several deprecated methods have been removed, that have been using Strings as UUIDs. In every case there is an alternative method using an UUID object directly.|
|4.0.0||After the update to Sophora Client 4.0.0.||The deprecated methods |
|4.0.0||After the update to Sophora Client 4.0.0.||The class |
|4.0.0||After the update to Sophora Client 4.0.0.||The methods |
|4.0.0||After the update to Sophora Client 4.0.0.||All methods which return |
|4.0.0||Can be adjusted before updating to a newer major version.||The class |
|2.5.41, 3.0.2, 4.0.0||After updating to Sophora Delivery 4.0.0, 3.0.2, 2.5.41||We changed the behaviour when requesting URLs pointing at index documents of structure nodes.|
The new behaviour results in the regular handling of missing documents for this structure node.
If you don't want this then you can keep the former behaviour by adding this line to your webapp's sophora.properties:
|3.0.24, 4.0.11||After updating to Sophora Delivery 3.0.24, 4.0.11||Link URLs in <a>-tags generated from link documents (textlinks) are now XML-encoded. (e.g. '&' instead of '&'). If you have encoded them by yourself so far, you should not anymore because this will break your textlink destination because URLs would be encoded twice.|
The search results will be updated automatically when the search text or selected filter options change. This feature can be disabled globally by adding the parameter "search.instantSearch.enabled" with the value "false" to the configuration document.
Tags from the "sophora:tags" property are no longer displayed by default in the document entries (in search, opened documents view, etc.). If you want them to remain visible, the property must be included in the document information of the nodetype configuration.
In older versions some node types had to be registered manually via the administration area when setting up a new repository:
- For updates via update site, an installed DeskClient version 3.7.0 (or newer) or 4.3.0 (or newer) is required so that the automatic restart after the update works without errors.
Some dependencies that were provided by
org.eclipse.core.runtime are no longer provided for all bundles. If you use one of the following dependencies inside your own plugin, you need to declare the dependency directly in your
MANIFEST.MF file now.
We recommend to use the
Import-Package directive to import only used packages.
IFormElement.getReferencedDocuments() was removed. The references in string properties are now collected and set to the documents'
sophora:referencedDocuments property by the server during the save operation. The benefit is that a document will always have the references updated when saved. Before only the DeskClient filled in all references. The importer or scripts had to update the property
sophora:referencedDocuments on their own. In Sophora 4 the method still exists in the abstract classes of the form field elements. So if you have overwritten this method you don't need to update your code immediately. This stub will be removed with the next major release Sophora 5.
The editor with the ID
com.subshell.sophora.eclipse.editor.BrowserEditor was removed. Instead the e4 part
com.subshell.sophora.eclipse.editor.BrowserPart can be used.
The deprecated attributes "childNodeType" and "alwaysShowOnNodetype" of extension point "com.subshell.sophora.eclipse.editorComponents" have been removed.
If your input field provides an editor tab (implementing
IEditorComponent.getEditorTabs()) you have to adapt your code for the following API changes:
- The interface provided by
IEditorComponentTabProvider.createEditorPart()was renamed from
- You can no longer extend the Eclipse class
AbstractSophoraEditorPartinstead. We suggest to extend
AbstractLoadingPartfor additionally creating the controls lazy.
- The first parameter for the
init()method has changed from
- The method
getPartControl()was removed and instead the method
createPartControl()must return the created control.
- For property changes to
PROP_DIRTYit must be referenced qualified as
- The methods
ISophoraEditorPart.getReferencedDocuments()has been removed.
AbstractSophoraEditorPart.getReferencedDocuments()is deprectated and will be removed in Sophora 5.
- The method
AbstractFormField.labelLinkActivated()is now deprecated. Use the new method
IFormField2interface instead. The associated attribute
labelAsLinkof the extension point
com.subshell.sophora.eclipse.formInputFields(defined in the custom plugin.xml file) is also deprecated and can be removed. Both the method and the attribute will be removed in Sophora 5.
- The method
AbstractFormField.getReferencedDocuments()is deprectated and will be removed in Sophora 5.
|4.0.0||Before the update to 4.0.0||The deprecated method |
|4.0.0||After the update to Importer 4.0.0||With Sophora 4, we have renovated the Sophora Importer. It is now based on Spring Boot, which we use for all our tools developed in recent years. With this release, the configuration format of the Importer changes and you will need to migrate your configuration files. The installation of the Importer is different as well. The migration guide explains the steps needed to update your installation.|
|4.1.2||After the update to Importer 4.1.2||Since importer version 4.1.2 the configuration property |
|4.0.0||Before the update to Importer 4.0.0||The deprecated method |
|4.0.0||After the update to Importer 4.0.0||In order to get a more detailed time logging of each step during the import process the following constructors/methods now need an additional parameter:|
|4.0.0||After the update to Sophora Metadata Supplier 4||A new version of the Mapper Plugin adapted to Metadata Supplier Version 4 must be installed.|
|4.0.0||After the update to Sophora Metadata Supplier 4||The configuration of the server connection in the |
|4.7.0||Configuration can be adjusted before updating to version 4.7.0||Starting with version 4.7.0, the Sophora Server has a new default implementation for composing and parsing URLs, which uses the URL components of the Sophora webapp-framework instead of requesting the deliveries.The new implementation can handle both Sophora document URLs and URLs for the Sophora Image Service. It also avoids HTTP calls to the deliveries and thus it's much faster.|
If you want to keep the old behavior and use the URL handling from the deliveries, you can set the property
Otherwise you should adjust the relevant properties for the URL generation to match your setup.
For more information about the properties, see the description in the documentation of the Sophora server configuration.
Two configuration properties are removed:
The new default value (and minimum value) for
sophora.archive.maxVersionsToRetain is '20'. This ensures, that the archive worker can concentrate its work on documents with more than 20 versions.
The Sophora server used EHCache for some internal caches. With Sophora 4 Caffeine is used instead. Due to that some of the caching statistics available through JMX look different now.
In Sophora 3, access tokens are configured using the property
sophora.authenticate.tokens in the
sophora.properties file. Starting with Sophora 4, access tokens are an extension to a Sophora user. You have to manually assign the access tokens from the
sophora.properties file to a Sophora user document. You can do this by opening the user document in the DeskClient's Admin View and add the token to the user.
Note that all access tokens in Sophora 3 are internally mapped to the admin role; however, it is advisable to assign them to less priviliged users in Sophora 4.
Field names for virtual properties indexed in the internal Solr contain slashes which makes them unusable with the fl-parameter. Solr Cloud uses underscores instead of slashes which fixes that problem.
"sophora-nt_stickyNote/sophora_comment_s": "comment" (virtual property in internal Solr)
"sophora-nt_stickyNote_sophora_comment_s": "comment" (virtual property in Solr Cloud)
The deprecated configuration options sophoraUsername, sophoraPassword and sophoraHost have been removed. Instead use the configuration block sophoraServer with its properties host, username and password.
|4.2.0||This must be done before the Teletext Generator is started for the first time in version 4.2.0.||The configuration for the Sophora Client has changed, we are now using the configuration of the library Spring Boot Sophora Commons. Therefore your configuration of the Sophora Server connection must be adapted.|
If you want to read more about all available configuration properties, have a look at the corresponding documentation for Spring Boot Sophora Commons.
The names of some optional properties have also changed. If you have configured some of these properties, you have to replace the old by the new names, otherwise these properties have no effect.
|This must be done before updating the SFTP server or the Teletext Generator||With this version of the Teletext Generator, the outdated |
|4.1.0||After the update to Teletext 4.1.0||The teletext generator requires no special Solr cores to be present and uses internal cores |
The Solr core
|4.2.0||The technical documentation is moved to the Website|
|4.0.0||This must be done when UGC is started for the first time in version 4.||With Sophora release 4 the ugc-webapp has been simplified to ugc. Therefore the executable jar has been renamed to ugc.jar. As a consequence the *.conf file that contains the VMARGS must also be renamed to ugc.conf.|
|4.1.0||After the update to UGC 4.1.0 and only if you use a reverse proxy for your UGC||When running the UGC webapp with a reverse proxy (i.e. for the editorial ui), you must now explicitly define an allowed origin to the websocket which is used to check for new content. Please use |
|4.2.2||After the update to UGC 4.2.2 and only if you use a reverse proxy for your UGC||The path of the websocket to check for new comments and images changed from |
Consult the Reverse proxy documentation page for details on configuring a reverse proxy.
|4.3.0||After the update to UGC 4.3.0||UGC now supports the OpenAPI 3.0 Specification. The OpenAPI Specification endpoint has changed from |
The Swagger UI endpoint has changed from
|4.0.2||After the update to UGC 4.0.2||The configuration property group |
|4.0.0||After the update to UGC taglib 4.0.0||With Sophora 4 the prior deprecated node function VotingReport.getReport(INode) has been removed. Use VotingReport.getRankingReport(INode) to get the same report or consider the method VotingReport.getSimpleReport(INode) if a simplier report may satisfy your requirements. The methods have been existing prior to Sophora 4 so that adjustments can be done before the update.|
|4.1.0||After the update to 4.1.0||Following interfaces moved to other packages:|
With the new version, you will also have to put your static resources into the default Spring Boot resources folders. These are:
|4.1.0||After the update to AV-Tool 4.1.0||The configuration property |
|4.6.0||This must be done before updating the SFTP server or the YouTube Connector||With this version of the YouTube Connector, the outdated |
|4.5.0||This must be done before the Sophora Mobile Client is started for the first time in version 4.5.0.||The configuration of the server connection in the application.yml must be changed from|