diff --git a/rest/index.php b/rest/index.php
index 8952c064b54f12107c6be83844795a430ed90859..624ddc075d2dec5537ae7a8761a0a7597a5f9126 100755
--- a/rest/index.php
+++ b/rest/index.php
@@ -133,7 +133,7 @@ $app->post('/convertedFile', \Convert\controllers\ConvertPdfController::class .
 $app->get('/convertedFile/{filename}', \Convert\controllers\ConvertPdfController::class . ':getConvertedFileByFilename');
 
 //ContentManagement
-$app->get('/test', \ContentManagement\controllers\JnlpController::class . ':test'); //TODO
+$app->post('/test', \ContentManagement\controllers\JnlpController::class . ':test'); //TODO
 $app->post('/jnlp', \ContentManagement\controllers\JnlpController::class . ':generateJnlp');
 $app->get('/jnlp/{jnlpUniqueId}', \ContentManagement\controllers\JnlpController::class . ':renderJnlp');
 $app->post('/jnlp/{jnlpUniqueId}', \ContentManagement\controllers\JnlpController::class . ':processJnlp');
diff --git a/src/frontend/app/viewer/document-viewer.component.ts b/src/frontend/app/viewer/document-viewer.component.ts
index 178da9aec97e497e13e0a68204a7c26bd806d1f3..fad34dabfcb5e27e42eacc73a82c4433db1ee748 100644
--- a/src/frontend/app/viewer/document-viewer.component.ts
+++ b/src/frontend/app/viewer/document-viewer.component.ts
@@ -106,6 +106,8 @@ export class DocumentViewerComponent implements OnInit {
     }
 
     ngOnInit() {
+        this.setEditor();
+
         this.http.get('../../rest/indexing/fileInformations').pipe(
             tap((data: any) => {
                 this.allowedExtensions = data.informations.allowedFiles.map((ext: any) => {
@@ -750,4 +752,14 @@ export class DocumentViewerComponent implements OnInit {
         this.templateListForm.reset();
         this.editInProgress = false;
     }
+
+    setEditor() {
+        if (this.headerService.user.preferences.documentEdition === 'java') {
+            this.editor.mode = 'java';
+            this.editor.async = true; 
+        } else if (this.headerService.user.preferences.documentEdition === 'onlyoffice') {
+            this.editor.mode = 'onlyoffice';
+            this.editor.async = false;   
+        }
+    }
 }
diff --git a/src/frontend/plugins/onlyoffice-api-js/onlyoffice-api.js b/src/frontend/plugins/onlyoffice-api-js/onlyoffice-api.js
index 0d72a4dd2b5a391f60be8ba5dcef0262930e0fea..69734068ab95f835a11b2605f9c799f0d9728d5a 100644
--- a/src/frontend/plugins/onlyoffice-api-js/onlyoffice-api.js
+++ b/src/frontend/plugins/onlyoffice-api-js/onlyoffice-api.js
@@ -187,7 +187,7 @@ var onlyofficetesturl = '';
 
     // TODO: allow several instances on one page simultaneously
 
-    DocsAPI.DocEditor = function(placeholderId, config) {
+    DocsAPI.DocEditor = function(placeholderId, config, onlyOfficeIp) {
         var _self = this,
             _config = config || {};
 
@@ -207,6 +207,7 @@ var onlyofficetesturl = '';
         _config.editorConfig.canRequestInsertImage = _config.events && !!_config.events.onRequestInsertImage;
         _config.editorConfig.canRequestMailMergeRecipients = _config.events && !!_config.events.onRequestMailMergeRecipients;
         _config.frameEditorId = placeholderId;
+        _config.onlyOfficeIp = onlyOfficeIp;
 
         var onMouseUp = function (evt) {
             _processMouse(evt);
@@ -687,9 +688,11 @@ var onlyofficetesturl = '';
         }
     };
 
-    function getBasePath() {
-        return `http://192.168.1.20:8765/web-apps/apps/`;
-        var scripts = document.getElementsByTagName('script'),
+    function getBasePath(config) {
+        return `http://10.2.95.76:8765/web-apps/apps/`;
+        return `http://${config.onlyOfficeIp}/web-apps/apps/`;
+        
+        /*var scripts = document.getElementsByTagName('script'),
             match;
 
         for (var i = scripts.length - 1; i >= 0; i--) {
@@ -699,7 +702,7 @@ var onlyofficetesturl = '';
             }
         }
 
-        return "";
+        return "";*/
     }
 
     function getExtensionPath() {
@@ -710,7 +713,7 @@ var onlyofficetesturl = '';
 
     function getAppPath(config) {
         var extensionPath = getExtensionPath(),
-            path = extensionPath ? extensionPath : getBasePath(),
+            path = extensionPath ? extensionPath : getBasePath(config),
             appMap = {
                 'text': 'documenteditor',
                 'text-pdf': 'documenteditor',
diff --git a/src/frontend/plugins/onlyoffice-api-js/onlyoffice-viewer.component.ts b/src/frontend/plugins/onlyoffice-api-js/onlyoffice-viewer.component.ts
index c91f662bbf823001319504e54474e1a20b26b0ed..3bafb5bfb6955eb13062475098381558619df49e 100644
--- a/src/frontend/plugins/onlyoffice-api-js/onlyoffice-viewer.component.ts
+++ b/src/frontend/plugins/onlyoffice-api-js/onlyoffice-viewer.component.ts
@@ -11,7 +11,7 @@ import {
 import './onlyoffice-api.js';
 import { HttpClient, HttpHeaders } from '@angular/common/http';
 import { Subject, Observable, of } from 'rxjs';
-import { catchError, tap } from 'rxjs/operators';
+import { catchError, tap, filter, exhaustMap } from 'rxjs/operators';
 
 declare var DocsAPI: any;
 
@@ -39,6 +39,9 @@ export class EcplOnlyofficeViewerComponent implements OnInit, AfterViewInit {
 
     tmpFilename: string = '';
 
+    appUrl: string = '';
+    onlyfficeUrl: string = '';
+
     private eventAction = new Subject<any>();
 
 
@@ -50,7 +53,6 @@ export class EcplOnlyofficeViewerComponent implements OnInit, AfterViewInit {
         // EVENT TO CONSTANTLY UPDATE CURRENT DOCUMENT
         if (response.event === 'onDownloadAs') {
             this.getEncodedDocument(response.data);
-            // EVENT TO AVOID INFINITE LOOP WITH MODIFIED EVENT + UPDATE DOC
         }
     }
     constructor(public http: HttpClient) { }
@@ -68,7 +70,6 @@ export class EcplOnlyofficeViewerComponent implements OnInit, AfterViewInit {
     getEncodedDocument(data: any) {
         this.http.get('../../rest/onlyOffice/encodedFile', { params: { url: data } }).pipe(
             tap((data: any) => {
-                //console.log(data.encodedFile);
                 this.file.content = data.encodedFile;
                 this.isSaving = false;
                 this.triggerAfterUpdatedDoc.emit();
@@ -91,7 +92,17 @@ export class EcplOnlyofficeViewerComponent implements OnInit, AfterViewInit {
 
     ngOnInit() {
         this.key = this.generateUniqueId();
-        this.http.post(`../../${this.params.docUrl}`, { objectId: this.params.objectId, objectType: this.params.objectType, onlyOfficeKey: this.key, data : this.params.dataToMerge }).pipe(
+        this.http.get(`../../rest/onlyOffice/configuration`,).pipe(
+            tap((data: any) => {
+                if (data.enabled) {
+                    this.onlyfficeUrl = data.serverUri;
+                    this.appUrl =  data.coreUrl;
+                } else {
+                    this.triggerCloseEditor.emit();
+                }
+            }),
+            filter((data: any) => data.enabled),
+            exhaustMap(() => this.http.post(`../../${this.params.docUrl}`, { objectId: this.params.objectId, objectType: this.params.objectType, onlyOfficeKey: this.key, data : this.params.dataToMerge })),
             tap((data: any) => {
                 this.tmpFilename = data.filename;
 
@@ -130,7 +141,7 @@ export class EcplOnlyofficeViewerComponent implements OnInit, AfterViewInit {
                 fileType: this.file.format,
                 key: this.key,
                 title: 'Edition',
-                url: `http://cchaplin:maarch@192.168.1.20/maarch_courrier_develop/${this.params.docUrl}?filename=${this.tmpFilename}`,
+                url: `${this.appUrl}${this.params.docUrl}?filename=${this.tmpFilename}`,
                 permissions: {
                     comment: false,
                     download: true,
@@ -140,7 +151,7 @@ export class EcplOnlyofficeViewerComponent implements OnInit, AfterViewInit {
                 }
             },
             editorConfig: {
-                callbackUrl: 'http://cchaplin:maarch@192.168.1.20/maarch_courrier_develop/rest/test',
+                callbackUrl: 'http://cchaplin:maarch@10.2.95.76/maarch_courrier_develop/rest/test',
                 lang: 'fr',
                 region: 'fr-FR',
                 mode: 'edit',
@@ -163,7 +174,7 @@ export class EcplOnlyofficeViewerComponent implements OnInit, AfterViewInit {
                },
             },
         };
-        this.docEditor = new DocsAPI.DocEditor('placeholder', this.editorConfig);
+        this.docEditor = new DocsAPI.DocEditor('placeholder', this.editorConfig, this.onlyfficeUrl);
     }
 
     isLocked() {
diff --git a/src/frontend/service/app.guard.ts b/src/frontend/service/app.guard.ts
index b058196a481c0cf946ce2fb60fa971499303d4b5..53ecce73c6dd8427538e910b2910ebe279f4890b 100644
--- a/src/frontend/service/app.guard.ts
+++ b/src/frontend/service/app.guard.ts
@@ -34,6 +34,7 @@ export class AppGuard implements CanActivate {
                             lastname: data.lastname,
                             entities: data.entities,
                             groups: data.groups,
+                            preferences: data.preferences,
                             privileges: data.privileges[0] === 'ALL_PRIVILEGES' ? this.privilegeService.getAllPrivileges() : data.privileges
                         }
                         return true;
diff --git a/src/frontend/service/header.service.ts b/src/frontend/service/header.service.ts
index 28253631441f37137390b1ae9f30ad50c984573a..c643efdf801557981eef583d433b35119a284362 100755
--- a/src/frontend/service/header.service.ts
+++ b/src/frontend/service/header.service.ts
@@ -35,6 +35,7 @@ export class HeaderService {
                         lastname: data.lastname,
                         entities: data.entities,
                         groups: data.groups,
+                        preferences: data.preferences,
                         privileges: data.privileges[0] === 'ALL_PRIVILEGES' ? this.user.privileges : data.privileges
                     }
                 })