Upgrade from version 3.2 to version 4.0
Note: This document is evolving with every 4.0 release
The version 4.0 have some significant changes if compared to version 3.x that requires some attention if you are considering a migration from such a previous version.
- Removed support for old technical platforms (e.g. J2EE 1.4), replaced by support for new technical platforms
- Removed features and APIs marked as outdated deprecated in previous version(s), see bellow
- Changed URL patterns (with some backward compatibility however) and removed the legacy web services gateway webapp (replaced by the
/apiendpoint introduced in version 3.1), see bellow
- Removed naming flexibility for grant hooks shared script (the previously allowed
GRANTHOOKSname is now forbidden, it must now be
Warning: The old legacy JSPs pages are scheduled to be removed in release P24. See bellow to refactor any hard-coded URL involving these JSPs.
Warning: The legacy UI is scheduled to be fully removed in release P25, you now need to consider refactoring all code/components dedicated to this legacy UI
Outdated implementation patterns to refactor
These implementation patterns that used to be possible, but already strongly discouraged, in previous versions must be now refactored:
- Any usage of any hard coded URLs (see bellow) in your code or configured items (e.g. shortcuts, UI zones, actions, ...) must be avoided,
you must use the
HTMLToolmethods instead (directly in your code or using `[EXPR:(...)] in configuration items).
- Specific JSP pages are not supported anymore. You must now rewrite them as external objects
service.jsscript and were only versions 2.x's backward-compatibility synchronous wrappers of
Simplicite.Ajax, this script does not exist anymore)
- Adding custom global styles using the static
application.cssfile is not possible anymore, this is replaced by the disposition-level
- Adding custom global JS scripts using the static
application.jsfile is not possible, this is replaced by the disposition-level
- When using external authentication (e.g. OAuth2) the user data is now updated automatically, you don't need to handle the
SESSION_INFOparameter anymore (except if you have something more specific to do with it)
- The deprecated
$is now the usual alias to
$jalias is kept for compatibility but it is recomended to change it to
$instead of the
$jQuery alias you must refactor them (e.g.
$("myid")must be rewritten as
- In scripted expressions, the deprecated syntax
[<field name>]is not longer supported, you must use the syntax
- The legacy UI platform components (e.g.
ObjectList) have been removed from default packages imported in Rhino scripts (if you use some of them you need to add an explicit package import statement
importPackage(Packages.com.simplicite.webapp)or an individual class import statement (e.g.
Deprecated implementation patterns
These implementation patterns are to be considered deprecated, their usage is to be avoided (and any existing usage is to be refactored) as they will be removed in next version:
Simplicitenamespace is strongly discouraged
- Developping custom pages/components with the legacy UI patterns: the responsive UI pattern for developping custom page/components is very different from the legacy UI patterns, the legacy UI will be removed in the future, so a refactoring of such custom components is strongly encouraged, see this document for details.
Warning: The legacy UI is scheduled to be removed in release P25, you now need to consider refactoring all code/components dedicated to this legacy UI
The version 4.0 includes a complete refactoring of the legacy UI URL patterns.
Note: With the responsive UI manipulating URLs does not make sense anymore, you need to use the client-side UI APIs, see this document for details.
If you are using traditional realm-based or JAAS authentication, make sur to update your
web.xml accordingly to the one provided.
In particular make sure to have both
/jsp/* as protected URL pattern in the
And if you are using a form-based authentication make sure your
web.xml has the following login page declaration in the
You will also need to make sure you have the following error mappings in your
<error-page> <error-code>404</error-code> <location>/error?code=ERR_HTTP404&status=404</location> </error-page> <error-page> <error-code>500</error-code> <location>/error?code=ERR_HTTP500&status=500</location> </error-page>
Custom code impacts
If you are already using the
HTMLTool methods (which you should), the changes are transparent.
If you have any hardcoded URL (which you should not), you must now use the
HTMLTool methods instead.
URL pattern changes
The changes are described bellow (the new URL patterns are given for information and must not be hardcored but designated using the available
|Old URL pattern||New URL pattern||
|/index.jsp||/ or /main||
|/logon.jsp||/signin or /login||
|/logout.jsp||/signout or /logout||
|/PUB_content.jsp and /jsp/ALL_content.jsp||/content||
|/PUB_document.jsp||/document or /dbdoc||
|/PUB_extobject.jsp?extobject=<external object name>||/ext/<external object name>||
|/PUB_error.jsp and /jsp/SYS_error.jsp||/error||
|/scripts/core.js (static)||/scripts/core.js (dynamic)||n/a|
|/jsp/index.jsp||/ui/ or /ui/main||
|/jsp/SYS_work.jsp?view=<view name>||/ui/home?view=<view name>||
|/jsp/GDG_chat.jsp||n/a (now an external object)||n/a|
|/jsp/ALL_extobject.jsp?extobject=<external object name>||/ui/ext/<external object name>||
|/jsp/ALL_search.jsp?object=<object name>||/ui/obj/search/<object name>||
|/jsp/ALL_list.jsp?object=<object name>||/ui/obj/list/<object name>||
|/jsp/ALL_form.jsp?object=<object name>||/ui/obj/form/<object name>||
|/jsp/ALL_panel.jsp?object=<object name>||/ui/obj/panel/<object name>||
|/jsp/ALL_select.jsp?object=<object name>&type=R||/ui/obj/reference/<object name>||
|/jsp/ALL_select.jsp?object=<object name>&type=O||/ui/obj/objectref/<object name>||
|/jsp/ALL_select.jsp?object=<object name>&type=M||/ui/obj/datamap/<object name>||
|/jsp/ALL_help.jsp?object=<object name>||/ui/obj/help/<object name>||
|/jsp/ALL_update.jsp?object=<object name>||/ui/obj/updateall/<object name>||
|/jsp/ALL_merge.jsp?object=<object name>||/ui/obj/merge/<object name>||
|/jsp/ALL_chart.jsp?object=<object name>||/ui/obj/chart/<object name>||
|/jsp/ALL_crosstab.jsp?object=<object name>||/ui/obj/crosstab/<object name>||
|/jsp/ALL_graph.jsp?object=<object name>||/ui/obj/graph/<object name>||
|/jsp/ALL_print.jsp?object=<object name>||/ui/obj/print/<object name>||
|/jsp/ALL_agenda.jsp?object=<object name>||/ui/obj/agenda/<object name>||
|/jsp/ALL_placemap.jsp?object=<object name>||/ui/obj/placemap/<object name>||
|/jsp/ALL_timesheet.jsp?object=<object name>||/ui/obj/timesheet/<object name>||
|/jsp/SYS_template.jsp?object=<object name>||/ui/obj/formpreview/<object name>||
|/jsp/SYS_objpref.jsp?object=<object name>||/ui/obj/preferences/<object name>||
|/jsp/PCS_start.jsp?pcs=<workflow name>||/ui/pcs/start/<workflow name>||
|/jsp/PCS_search.jsp?pcs=<workflow name>||/ui/pcs/search/<workflow name>||
|/jsp/PCS_list.jsp?pcs=<workflow name>||/ui/pcs/list/<workflow name>||
|/jsp/PCS_form.jsp?pcs=<workflow name>||/ui/pcs/form/<workflow name>||
|/jsp/PCS_help.jsp?pcs=<workflow name>||/ui/pcs/help/<workflow name>||
|Legacy webservices gateway webapp URLs||/api/*||n/a|
- Some of theses changes were already done in previous versions (typically 3.1 and 3.2) and the main
HTMLToolmethods already exists in these previous versions. You can start anticipating these changes even if you are using a previous version.
- Any relative reference to a old JSP page located in the
/jsp/folder must now be done using an absolute reference (e.g.
/jsp/SYS_work.jsp) but, better, should be refactored using the
HTMLToolclass methods decribed above
In then version 4.0 responsive UI the former "disposition" concept has been split into 2 distinct concepts:
Disposition: that now corresponds only to the page layout (and which uses dedicated HTML resources for that)
Theme: that corresponds to the page's styles (CSS, logos, ...)
In the responsive UI it it thus absolutely not required to create a custom disposition if you just want to change some styles. Doing this, as you would have done in versions 3.x, is an anti-pattern that must be avoided (unless you actually want to change the page layout).
The version 4.0 legacy UI pages structures and CSS styles have been deeply refactored, if you had a 3.x custom disposition
with custom styles chances are it will no render the same in 4.0. You should reset to
default disposition and create
new CSS styles overrides.
Warning: the legacy UI is scheduled to be removed in release P25, you now need to consider refactoring all code/components dedicated to this legacy UI
The update MUST be done on an up-to-date 3.2 version.
This means that all maintenance releases patches of version 3.2 have been sucessfully applied and verified.
To avoid issues the following system parameters must be reset to their suitable values for 4.0:
DISPOSITIONmust be set to
DISPOSITION_RESOURCESmust be set to
PUBLIC_PAGESmust be set to
SHOW_MOBILEmust be set to either
yes(once migrated you will be able to change it to
noif you want but not before migration)
The following upgrade procedure is only applicable to instances managed on an instance manager (SIM), it MUST be done using command line.
- Connect on your instance's account:
sudo su - myinstance
- Make a final update of your instance:
- Make a backup of your instance:
- Make a complete backup of the instance's
tomcatfolder (in order to be able to revert manually to previous version if needed):
cp -r tomcat tomcat-fefore.version.upgrade
- Change your instance's version in the manager's database:
sqlite3 /var/simplicite/data/apps.db "update instances set version = '4.0' where name = 'myinstance'"
- Apply all database-level patches:
- Stop your instance:
- Manually check and update if needed your instances's deployment descriptors
WEB-INF/web.xmlby comparing them to the default ones of version 4.0 (that you can find in
- Upgrade tour instance's webapp:
- Restart your instance:
- Remove the patch level property file
- Apply all configuration-level patches:
It is recommended to do a manual global clear cache using the generic web UI at the end of the process.