{"users":[{"id":2,"username":"scampano","name":"Simon Campano","avatar_template":"/user_avatar/community.simplicite.io/scampano/{size}/10010_2.png","primary_group_name":"Simplicite","flair_name":"Simplicite","flair_url":"/uploads/default/original/2X/c/cb501954b2e9de68ee34418ef6bd4bd2c0b53b23.svg","flair_bg_color":"ffff","flair_group_id":90,"admin":true,"moderator":true,"trust_level":4},{"id":5,"username":"david","name":"David AZOULAY","avatar_template":"/user_avatar/community.simplicite.io/david/{size}/5703_2.png","primary_group_name":"Simplicite","flair_name":"Simplicite","flair_url":"/uploads/default/original/2X/c/cb501954b2e9de68ee34418ef6bd4bd2c0b53b23.svg","flair_bg_color":"ffff","flair_group_id":90,"admin":true,"moderator":true,"trust_level":4},{"id":219,"username":"Emmanuelle","name":"Emmanuelle Fenice","avatar_template":"/user_avatar/community.simplicite.io/emmanuelle/{size}/3012_2.png","trust_level":2},{"id":-1,"username":"system","name":"system","avatar_template":"/user_avatar/community.simplicite.io/system/{size}/4700_2.png","admin":true,"moderator":true,"trust_level":4},{"id":9,"username":"Francois","name":"François Genestin","avatar_template":"/user_avatar/community.simplicite.io/francois/{size}/6448_2.png","primary_group_name":"Simplicite","flair_name":"Simplicite","flair_url":"/uploads/default/original/2X/c/cb501954b2e9de68ee34418ef6bd4bd2c0b53b23.svg","flair_bg_color":"ffff","flair_group_id":90,"admin":true,"moderator":true,"trust_level":4},{"id":84,"username":"Alistair","name":"Alistair Wheeler","avatar_template":"/user_avatar/community.simplicite.io/alistair/{size}/7855_2.png","primary_group_name":"Simplicite","flair_name":"Simplicite","flair_url":"/uploads/default/original/2X/c/cb501954b2e9de68ee34418ef6bd4bd2c0b53b23.svg","flair_bg_color":"ffff","flair_group_id":90,"admin":true,"moderator":true,"trust_level":4}],"primary_groups":[{"id":90,"name":"Simplicite"}],"flair_groups":[{"id":90,"name":"Simplicite","flair_url":"/uploads/default/original/2X/c/cb501954b2e9de68ee34418ef6bd4bd2c0b53b23.svg","flair_bg_color":"ffff","flair_color":""}],"topic_list":{"can_create_topic":false,"more_topics_url":"/c/tips-and-tricks/35?page=1","per_page":30,"top_tags":[{"id":5,"name":"v4-0","slug":"v4-0"},{"id":20,"name":"v5","slug":"v5"},{"id":15,"name":"docker","slug":"docker"},{"id":26,"name":"cicd","slug":"cicd"},{"id":7,"name":"filter","slug":"filter"},{"id":8,"name":"panel","slug":"panel"},{"id":3,"name":"v3-1","slug":"v3-1"},{"id":2,"name":"v3-2","slug":"v3-2"},{"id":35,"name":"v5-3","slug":"v5-3"}],"topics":[{"fancy_title":"Tips and tricks list","id":2112,"title":"Tips and tricks list","slug":"tips-and-tricks-list","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":null,"created_at":"2020-02-03T19:54:54.935Z","last_posted_at":"2020-02-03T19:55:47.093Z","bumped":true,"bumped_at":"2020-02-03T19:54:55.094Z","archetype":"regular","unseen":false,"pinned":true,"unpinned":null,"excerpt":"Tips &amp; Tricks list\nCustom UI components\n\nCustom chart embeding\nCustom confirm dialog\nResources in External Objects\nCustom consent page after first logon\nKeep scroll position when saving object\nServe a Vue.js application &hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":1256,"like_count":4,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":4,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"About the Tips and tricks category","id":577,"title":"About the Tips and tricks category","slug":"about-the-tips-and-tricks-category","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2016-05-19T13:54:06.502Z","last_posted_at":"2016-05-19T13:54:06.566Z","bumped":true,"bumped_at":"2021-10-28T09:29:13.384Z","archetype":"regular","unseen":false,"pinned":true,"unpinned":null,"excerpt":"Discover and post small tips and tricks to make it easy for you (and everyone) to develop applications on Simplicité. Summary","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":1538,"like_count":0,"has_summary":false,"last_poster_username":"david","category_id":35,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":5,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Custom User Object","id":3400,"title":"Custom User Object","slug":"custom-user-object","posts_count":1,"reply_count":1,"highest_post_number":1,"image_url":null,"created_at":"2021-06-07T16:09:48.142Z","last_posted_at":"2021-06-07T16:09:48.346Z","bumped":true,"bumped_at":"2025-03-19T17:27:04.364Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":786,"like_count":3,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":3,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Update licence key","id":3677,"title":"Update licence key","slug":"update-licence-key","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2021-08-11T15:35:36.354Z","last_posted_at":"2021-08-11T15:35:36.561Z","bumped":true,"bumped_at":"2023-12-21T11:57:23.308Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Move to Docs","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":472,"like_count":0,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Custom publication of objects and fields","id":2830,"title":"Custom publication of objects and fields","slug":"custom-publication-of-objects-and-fields","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":"https://community.simplicite.io/uploads/default/optimized/2X/b/b134ef7ad8ca80333d6757c606971457514b73e1_2_1024x840.png","created_at":"2020-12-17T23:24:34.804Z","last_posted_at":"2020-12-17T23:24:34.904Z","bumped":true,"bumped_at":"2023-12-20T17:06:45.893Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"The canonical example on CSV publications is available on the documentation \n▶ \nPublication of objects and fields example","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":5,"name":"v4-0","slug":"v4-0"},{"id":20,"name":"v5","slug":"v5"}],"tags_descriptions":{"v5":""},"views":431,"like_count":1,"has_summary":false,"last_poster_username":"david","category_id":35,"op_like_count":1,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":5,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"CSV Adapter Example","id":2110,"title":"CSV Adapter Example","slug":"csv-adapter-example","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2020-01-30T16:17:08.780Z","last_posted_at":"2020-01-30T16:17:08.910Z","bumped":true,"bumped_at":"2023-12-20T14:16:52.234Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Moved to CSV line based adapter lesson","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":752,"like_count":2,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":2,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Deciding how to implement a data parser","id":4586,"title":"Deciding how to implement a data parser","slug":"deciding-how-to-implement-a-data-parser","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2022-03-24T14:17:15.126Z","last_posted_at":"2022-03-24T14:17:15.450Z","bumped":true,"bumped_at":"2023-12-20T14:15:23.820Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Moved to adapters lesson","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":388,"like_count":0,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Add custom Maven-assisted dependencies to your custom images","id":4669,"title":"Add custom Maven-assisted dependencies to your custom images","slug":"add-custom-maven-assisted-dependencies-to-your-custom-images","posts_count":3,"reply_count":0,"highest_post_number":3,"image_url":null,"created_at":"2022-04-07T23:27:01.193Z","last_posted_at":"2023-10-18T16:40:12.956Z","bumped":true,"bumped_at":"2023-10-18T16:40:12.956Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"The latest Docker images  allows building custom images with additonal Maven dependencies added to the platform’s libs. \nThe typical Dockerfile for building these custom images is this one: Dockerfile-add-custom-dependen&hellip;","visible":true,"closed":true,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":15,"name":"docker","slug":"docker"}],"tags_descriptions":{},"views":658,"like_count":2,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":2,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":5,"primary_group_id":90,"flair_group_id":90},{"extras":"latest","description":"Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"[TIP] Positionnement automatique des links dans un modèle","id":6904,"title":"[TIP] Positionnement automatique des links dans un modèle","slug":"tip-positionnement-automatique-des-links-dans-un-modele","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":"https://community.simplicite.io/uploads/default/optimized/2X/a/aebddf9e9a95ea425c88cf04a692094edeff7ce8_2_1024x854.png","created_at":"2023-09-20T09:24:31.301Z","last_posted_at":"2023-10-20T09:24:36.282Z","bumped":true,"bumped_at":"2023-09-20T09:46:05.493Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Request description\nBonjour, \nLorsqu’on a plusieurs liens entre deux nodes, il apparaissent empilés. \nJ’ai modifié le OnDrawNode pour les courber automatiquement à l’ouverture. \nC’est sûrement améliorable mais je partage&hellip;","visible":true,"closed":true,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":35,"name":"v5-3","slug":"v5-3"}],"tags_descriptions":{"v5-3":""},"views":136,"like_count":1,"has_summary":false,"last_poster_username":"system","category_id":35,"op_like_count":1,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":219,"primary_group_id":null,"flair_group_id":null},{"extras":"latest","description":"Most Recent Poster","user_id":-1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Quick Adapter Configuration","id":6504,"title":"Quick Adapter Configuration","slug":"quick-adapter-configuration","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":"https://community.simplicite.io/uploads/default/optimized/2X/4/4853eac5db27f126842898d94315b1468cab8b84_2_1024x493.png","created_at":"2023-06-07T13:37:43.149Z","last_posted_at":"2023-06-07T13:37:43.469Z","bumped":true,"bumped_at":"2023-06-07T13:37:43.469Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"The Quick Adapters are a way to inject models fast, and also a way to let a non technical user work on the data model. This tool should only be used by seasoned Simplicité developers. \nThey are provided as a platform add&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":204,"like_count":1,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":1,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"XXL publications","id":6017,"title":"XXL publications","slug":"xxl-publications","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":"https://community.simplicite.io/uploads/default/original/2X/8/8e75a8b28f0bc40110266df56d54aa53c6dac691.jpeg","created_at":"2023-03-10T14:38:08.967Z","last_posted_at":"2023-03-10T14:38:09.301Z","bumped":true,"bumped_at":"2023-03-10T14:38:09.301Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"When generating large files, two issues have to be considered carefully: \n\n\nthe app memory must be cared for: if the whole file is, at some point in the algorithm, loaded in memory, we might saturate the app’s allocated &hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":350,"like_count":2,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":2,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Limiter le nombre de pillbox en liste","id":5927,"title":"Limiter le nombre de pillbox en liste","slug":"limiter-le-nombre-de-pillbox-en-liste","posts_count":4,"reply_count":0,"highest_post_number":4,"image_url":"https://community.simplicite.io/uploads/default/optimized/2X/a/a462aef34d69fd70b407681a77f9ce785daff9b0_2_1024x672.png","created_at":"2023-02-22T09:04:47.733Z","last_posted_at":"2023-03-24T11:00:48.809Z","bumped":true,"bumped_at":"2023-02-22T10:59:55.195Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Request description\nBonjour, \nJe partage une solution custom pour limiter le nombre d’étiquettes pillbox affichées en ligne. Car pour les instances contenant beaucoup de données, nous obtenions des lignes beaucoup trop h&hellip;","visible":true,"closed":true,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":20,"name":"v5","slug":"v5"}],"tags_descriptions":{"v5":""},"views":223,"like_count":8,"has_summary":false,"last_poster_username":"system","category_id":35,"op_like_count":4,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":219,"primary_group_id":null,"flair_group_id":null},{"extras":null,"description":"Frequent Poster","user_id":9,"primary_group_id":90,"flair_group_id":90},{"extras":null,"description":"Frequent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90},{"extras":"latest","description":"Most Recent Poster","user_id":-1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"Thème état (France) inspiré du DSFR","id":5764,"title":"Thème état (France) inspiré du DSFR","slug":"theme-etat-france-inspire-du-dsfr","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":"https://community.simplicite.io/uploads/default/optimized/2X/8/8b91a78d6792bf5b32d700e41e6a94299009dad1_2_1024x629.png","created_at":"2023-01-18T20:27:46.786Z","last_posted_at":"2023-01-18T20:27:47.065Z","bumped":true,"bumped_at":"2023-01-18T20:42:54.725Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Pour installer le thème Simplicité “état (France)” inspiré du Système de Design de l’Etat (DSFR): \n  \nCréez manuellement un module ThemeEtat avec les settings suivant: \n{\n\t&quot;type&quot;: &quot;git&quot;,\n\t&quot;origin&quot;: { &quot;uri&quot;: &quot;https://gith&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":20,"name":"v5","slug":"v5"}],"tags_descriptions":{"v5":""},"views":308,"like_count":2,"has_summary":false,"last_poster_username":"david","category_id":35,"op_like_count":2,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":5,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Default filtering on object","id":2955,"title":"Default filtering on object","slug":"default-filtering-on-object","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":"https://community.simplicite.io/uploads/default/original/2X/7/7ddd29c6256ad8f423013f6fe32858edad445c21.jpeg","created_at":"2021-02-17T16:15:20.835Z","last_posted_at":"2021-02-17T16:15:20.958Z","bumped":true,"bumped_at":"2023-01-16T12:03:46.030Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"This allows to properly add some default filters that the user can remove \npublic class DemoSupplier extends ObjectDB {\n\tprivate static final long serialVersionUID = 1L;\n\tprivate static final String INIT_FILTER_FLAG=&quot;sup&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":526,"like_count":1,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":1,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"How to add an extra Java library","id":5626,"title":"How to add an extra Java library","slug":"how-to-add-an-extra-java-library","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":"https://community.simplicite.io/uploads/default/original/2X/4/4656bc309be3e59e7611812a110e5790831e8ca1.jpeg","created_at":"2022-12-15T17:26:05.753Z","last_posted_at":"2022-12-15T17:26:06.049Z","bumped":true,"bumped_at":"2022-12-16T15:34:55.107Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"1- Identify the library you need on maven\n2- Check the compatibility with Simplicité’s librabries\n\nAdd the maven-enforcer-plugin to your project’s pom.xml :\n\n&lt;plugin&gt;\n  &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;\n  &lt;arti&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":335,"like_count":2,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":2,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Input suggestions","id":5371,"title":"Input suggestions","slug":"input-suggestions","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":"https://community.simplicite.io/uploads/default/optimized/2X/8/808d5c0bca7188b11c4dde8abffcb5b0f9045e1f_2_1024x477.gif","created_at":"2022-10-13T15:17:46.329Z","last_posted_at":"2022-10-13T15:17:46.622Z","bumped":true,"bumped_at":"2022-10-13T15:17:46.622Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"You might have seen errors with suggestions in the platform. Did you know that you could use this same system in your own app? \n▶ \nClick to see example in action\nGood to know\n\nthere are two type of suggestions:\n\nblocking (&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":309,"like_count":2,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":2,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Serve a Vue.js application from a Simplicité instance","id":5361,"title":"Serve a Vue.js application from a Simplicité instance","slug":"serve-a-vue-js-application-from-a-simplicite-instance","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2022-10-11T15:12:28.378Z","last_posted_at":"2022-10-11T15:12:28.577Z","bumped":true,"bumped_at":"2022-10-12T10:24:15.326Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"The following example will explain how to serve a Vue.js application on the “/” endpoint of your instance. \nIt also provides a method to properly redirect URL paths in the event of a vue-router based application. \n1. Pre&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":292,"like_count":4,"has_summary":false,"last_poster_username":"Alistair","category_id":35,"op_like_count":4,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":84,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Keep current scroll position at object save","id":2916,"title":"Keep current scroll position at object save","slug":"keep-current-scroll-position-at-object-save","posts_count":5,"reply_count":0,"highest_post_number":5,"image_url":null,"created_at":"2021-01-29T10:41:52.229Z","last_posted_at":"2022-03-11T11:13:12.121Z","bumped":true,"bumped_at":"2022-03-11T11:13:12.121Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Use following script to keep current scroll position at object save : \n(function(ui) {\n    // ========= SIMPLICITE BOILERPLATE ===========\n\tif (!ui) return;\n\tvar app = ui.getAjax();   \n\tSimplicite.UI.hooks.MyObject = fun&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":900,"like_count":5,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":2,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90},{"extras":null,"description":"Frequent Poster","user_id":9,"primary_group_id":90,"flair_group_id":90},{"extras":null,"description":"Frequent Poster","user_id":5,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Use the NPM JS client lib within the generic web UI","id":4425,"title":"Use the NPM JS client lib within the generic web UI","slug":"use-the-npm-js-client-lib-within-the-generic-web-ui","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2022-02-18T13:31:25.181Z","last_posted_at":"2022-02-18T13:31:25.303Z","bumped":true,"bumped_at":"2022-02-18T13:31:25.303Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"This example module is for those who are interested in using the Simplicite® NPM JS lib from within the generic web UI. \n\nNote: this modules requires a Simplicité platform instance in version 5.2.0 and above","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":20,"name":"v5","slug":"v5"}],"tags_descriptions":{"v5":""},"views":272,"like_count":0,"has_summary":false,"last_poster_username":"david","category_id":35,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":5,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Basic Azure AD Config","id":4283,"title":"Basic Azure AD Config","slug":"basic-azure-ad-config","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2022-01-10T12:49:03.021Z","last_posted_at":"2022-01-10T12:49:03.383Z","bumped":true,"bumped_at":"2022-01-10T12:49:03.383Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":464,"like_count":4,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":4,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Blocking/limiting brute force attacks","id":4196,"title":"Blocking/limiting brute force attacks","slug":"blocking-limiting-brute-force-attacks","posts_count":3,"reply_count":0,"highest_post_number":3,"image_url":"https://community.simplicite.io/uploads/default/original/2X/2/2285f96f563eb9afd4d9ffea18fdd950a975f627.png","created_at":"2021-12-11T13:45:15.293Z","last_posted_at":"2021-12-13T18:35:38.949Z","bumped":true,"bumped_at":"2021-12-13T18:35:38.949Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"As of revision 5.1.16 it is possible to implement a logic for blocking/limiting “brute force” attacks or any abusive number of attempts to log in using the internal authentication. \nA typical implémentation relies on the&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":20,"name":"v5","slug":"v5"}],"tags_descriptions":{"v5":""},"views":333,"like_count":2,"has_summary":false,"last_poster_username":"david","category_id":35,"op_like_count":2,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":5,"primary_group_id":90,"flair_group_id":90},{"extras":null,"description":"Frequent Poster","user_id":9,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Comment arrêter une tache trop longue?","id":4082,"title":"Comment arrêter une tache trop longue?","slug":"comment-arreter-une-tache-trop-longue","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":null,"created_at":"2021-11-12T16:36:27.711Z","last_posted_at":"2021-12-12T16:37:03.091Z","bumped":true,"bumped_at":"2021-11-12T16:49:57.097Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Dans Simplicité, il existe un mécanisme de demande d’arrêt d’une tache longue / lancée par Action asynchrone ou via Crontab. \nDans le code de la méthode, il faut vérifier de temps en temps qu’il n’y a pas une demande d’a&hellip;","visible":true,"closed":true,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":5,"name":"v4-0","slug":"v4-0"},{"id":20,"name":"v5","slug":"v5"}],"tags_descriptions":{"v5":""},"views":409,"like_count":1,"has_summary":false,"last_poster_username":"system","category_id":35,"op_like_count":1,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":null,"description":"Original Poster","user_id":9,"primary_group_id":90,"flair_group_id":90},{"extras":"latest","description":"Most Recent Poster","user_id":-1,"primary_group_id":null,"flair_group_id":null}]},{"fancy_title":"[CI/CD] Automatic module imports at platform startup","id":3919,"title":"[CI/CD] Automatic module imports at platform startup","slug":"ci-cd-automatic-module-imports-at-platform-startup","posts_count":3,"reply_count":0,"highest_post_number":3,"image_url":null,"created_at":"2021-10-06T14:50:03.303Z","last_posted_at":"2021-10-06T15:15:35.817Z","bumped":true,"bumped_at":"2021-10-06T15:22:33.320Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"As of version 5.1.6, a new delivery method is offered by the platform, as documented here. It allows to pass a specification file telling the platform to import modules at startup. In a docker context, the file can be bi&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":15,"name":"docker","slug":"docker"},{"id":26,"name":"cicd","slug":"cicd"}],"tags_descriptions":{},"views":585,"like_count":1,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":1,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Use of resources in external object","id":3807,"title":"Use of resources in external object","slug":"use-of-resources-in-external-object","posts_count":3,"reply_count":0,"highest_post_number":3,"image_url":null,"created_at":"2021-09-13T10:17:41.097Z","last_posted_at":"2021-09-13T14:11:58.269Z","bumped":true,"bumped_at":"2021-09-13T14:20:02.604Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"Question: how to use a resource in my (often external) object \nProblem: \n\nto use an image / font / etc in CSS / HTML, we need the URL of the file\nif we directly get the URL of a added as an object’s resource, we can see &hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":657,"like_count":0,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"MFA on internal authentication","id":3790,"title":"MFA on internal authentication","slug":"mfa-on-internal-authentication","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":null,"created_at":"2021-09-08T16:57:00.234Z","last_posted_at":"2021-09-10T09:24:04.475Z","bumped":true,"bumped_at":"2021-09-10T09:24:04.475Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"As of version 5.1 (starting with revision 5.1.1) an basic MFA (multi factors authentication) will be available on the internal UI authentication. \n\nWarning : As it is still an experimental feature, the principles decribe&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":20,"name":"v5","slug":"v5"}],"tags_descriptions":{"v5":""},"views":450,"like_count":1,"has_summary":false,"last_poster_username":"david","category_id":35,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":5,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Custom consent page after first logon","id":3711,"title":"Custom consent page after first logon","slug":"custom-consent-page-after-first-logon","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":"https://community.simplicite.io/uploads/default/optimized/2X/e/edbdea565ae026998b8758ef37d08d059416696b_2_1024x216.png","created_at":"2021-08-17T12:19:45.976Z","last_posted_at":"2021-08-17T12:19:46.184Z","bumped":true,"bumped_at":"2021-08-30T09:46:10.335Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"The following example will show you one of the ways to implement a custom temporary page after the user has logged on for the first time. \nOne of the use-cases is : The user needs to agree to the terms and conditions bef&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":518,"like_count":5,"has_summary":false,"last_poster_username":"Alistair","category_id":35,"op_like_count":5,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":84,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Database access with Docker / Docker compose","id":3325,"title":"Database access with Docker / Docker compose","slug":"database-access-with-docker-docker-compose","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":"https://community.simplicite.io/uploads/default/optimized/2X/1/189ffd9895da36b8c68201a990be8bad265d7fd7_2_1024x624.png","created_at":"2021-05-18T16:56:59.191Z","last_posted_at":"2021-05-18T16:56:59.348Z","bumped":true,"bumped_at":"2021-05-19T07:42:05.014Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"The new Docker images (built as of May 19th 2021) will include a script /usr/local/tomcat/db.sh that connects you to the configured database with the appropriate native database client (mysql for a MySQL database, psql f&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":15,"name":"docker","slug":"docker"}],"tags_descriptions":{},"views":907,"like_count":0,"has_summary":false,"last_poster_username":"david","category_id":35,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":5,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Restore backup with Docker","id":3156,"title":"Restore backup with Docker","slug":"restore-backup-with-docker","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2021-04-13T22:28:05.551Z","last_posted_at":"2021-04-13T22:28:05.844Z","bumped":true,"bumped_at":"2021-04-13T22:43:32.833Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"This quick tutorial shows how to quickly restore a Simplicité Backup. It shows an example with a PostgreSQL database and a dbdoc on a CentOS 7 instance. \nPre-requisites\n\nDocker Registry Access\nSimplicité backup (database&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":15,"name":"docker","slug":"docker"}],"tags_descriptions":{},"views":595,"like_count":2,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":2,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Sending an email with attachments","id":2172,"title":"Sending an email with attachments","slug":"sending-an-email-with-attachments","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2020-02-20T10:06:33.012Z","last_posted_at":"2020-02-20T10:06:33.155Z","bumped":true,"bumped_at":"2021-04-09T14:25:13.371Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"ObjectDB obj = getGrant().getTmpObject(&quot;myObject&quot;);\nObjectField myObjectFile = obj.getField(&quot;myObjFile&quot;); // must be of type file\n\n// https://www.simplicite.io/resources/4.0/javadoc/com/simplicite/util/tools/MailTool.htm&hellip;","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[{"id":5,"name":"v4-0","slug":"v4-0"},{"id":20,"name":"v5","slug":"v5"}],"tags_descriptions":{"v5":""},"views":665,"like_count":0,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]},{"fancy_title":"Upsert Object Example","id":3108,"title":"Upsert Object Example","slug":"upsert-object-example","posts_count":1,"reply_count":0,"highest_post_number":1,"image_url":null,"created_at":"2021-04-06T12:41:25.151Z","last_posted_at":"2021-04-06T12:41:25.357Z","bumped":true,"bumped_at":"2021-04-06T13:49:48.276Z","archetype":"regular","unseen":false,"pinned":false,"unpinned":null,"excerpt":"This is the recommended method to upsert an object","visible":true,"closed":false,"archived":false,"bookmarked":null,"liked":null,"tags":[],"tags_descriptions":{},"views":496,"like_count":0,"has_summary":false,"last_poster_username":"scampano","category_id":35,"op_like_count":0,"pinned_globally":false,"featured_link":null,"has_accepted_answer":false,"can_have_answer":true,"can_vote":false,"posters":[{"extras":"latest single","description":"Original Poster, Most Recent Poster","user_id":2,"primary_group_id":90,"flair_group_id":90}]}]}}