diff --git a/Gemfile.lock b/Gemfile.lock
index 888c9387d49b8e03d0073e7b089904d4cb0715c1..cd985fdaf5630a184069f03ad40116d8c2385b3e 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,6 +1,6 @@
 GIT
   remote: https://github.com/noesya/summernote-rails.git
-  revision: 48b08102ad6cd9f425c116cfc7e14ea7a9c4d238
+  revision: d5a27a426351ef4c73ae7bd5ee3335fdd38b51a0
   branch: activestorage
   specs:
     summernote-rails (0.8.20.1)
diff --git a/app/assets/javascripts/admin.js b/app/assets/javascripts/admin.js
index 914b70533a704d565e1a77912e2d287af9619411..16a6c71d5528f085161790a40e7a60e9b471bfa7 100644
--- a/app/assets/javascripts/admin.js
+++ b/app/assets/javascripts/admin.js
@@ -10,7 +10,6 @@
 //= require appstack/app
 //= require gdpr/cookie_consent
 //= require trix
-//= require summernote/summernote-bs5.min
 //= require sortablejs/Sortable
 //= require popper
 //= require summernote/summernote-lite
diff --git a/app/assets/javascripts/admin/plugins/summernote.js b/app/assets/javascripts/admin/plugins/summernote.js
index 4a6ea6b529562a79f7fea56b96c76da15af1118d..b68e746b8616a1fba15198214c059647ba80d3dd 100644
--- a/app/assets/javascripts/admin/plugins/summernote.js
+++ b/app/assets/javascripts/admin/plugins/summernote.js
@@ -1,31 +1,5 @@
 /* eslint no-alert: 'off' */
-/*global $, SummernoteAttachment, SummernoteAttachmentUpload */
-// window.osuny.summernote.sendFile = function (file, toSummernote) {
-//     'use strict';
-//     var data = new FormData();
-//     data.append('file', file);
-//     $.ajax({
-//         data: data,
-//         type: 'POST',
-//         headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') },
-//         url: '/admin/summernote_blobs',
-//         cache: false,
-//         contentType: false,
-//         processData: false,
-//         success: function (successData) {
-//             if (typeof successData.errors !== 'undefined' && successData.errors !== null) {
-//                 return $.each(successData.errors, function (errorKey, messages) {
-//                     return $.each(messages, function (messageKey, message) {
-//                         return window.alert(message);
-//                     });
-//                 });
-//             }
-//             return toSummernote.summernote('pasteHTML', successData.node);
-//         }
-//     });
-// };
-//
-
+/*global $, SummernoteAttachmentUpload */
 $(function () {
     'use strict';
 
@@ -34,6 +8,21 @@ $(function () {
         dropImage: 'Drop file'
     });
 
+    $.summernote.dom.isAttachment = function (node) {
+        return node && (/^ACTION-TEXT-ATTACHMENT/).test(node.nodeName.toUpperCase());
+    };
+
+    $.summernote.dom.isInline = function (node) {
+        return !this.isBodyContainer(node) &&
+         !this.isList(node) &&
+         !this.makePredByNodeName('HR')(node) &&
+         !this.isPara(node) &&
+         !this.makePredByNodeName('TABLE')(node) &&
+         !this.makePredByNodeName('BLOCKQUOTE')(node) &&
+         !this.makePredByNodeName('DATA')(node) &&
+         !this.isAttachment(node);
+    };
+
     $('[data-provider="summernote"]').each(function () {
         $(this).summernote({
             popover: {
@@ -61,13 +50,6 @@ $(function () {
                 onImageUpload: function (files) {
                     var attachmentUpload = new SummernoteAttachmentUpload(this, files[0]);
                     attachmentUpload.start();
-                },
-                onInit: function (event) {
-                    var attachmentElements = event.editable[0].querySelectorAll('[data-trix-attachment]'),
-                        i;
-                    for (i = 0; i < attachmentElements.length; i += 1) {
-                        new SummernoteAttachment(attachmentElements[i]);
-                    }
                 }
             }
         });
diff --git a/app/assets/javascripts/admin/plugins/summernote_attachment.js b/app/assets/javascripts/admin/plugins/summernote_attachment.js
deleted file mode 100644
index 08f229334c666530740a76cebe06a6abc7adb6fc..0000000000000000000000000000000000000000
--- a/app/assets/javascripts/admin/plugins/summernote_attachment.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/*global $ */
-var SummernoteAttachment = function (element) {
-    'use strict';
-    this.element = element;
-    this.trixAttributes = JSON.parse(element.getAttribute('data-trix-attachment'));
-    this.setContent();
-};
-
-SummernoteAttachment.prototype.setContent = function () {
-    'use strict';
-    var imageElement;
-    if (this.trixAttributes.previewable) {
-        imageElement = document.createElement('img');
-        imageElement.src = this.trixAttributes.url;
-        imageElement.width = this.trixAttributes.width;
-        imageElement.height = this.trixAttributes.height;
-        this.element.appendChild(imageElement);
-    } else {
-        this.element.textContent = this.trixAttributes.filename;
-    }
-};
diff --git a/app/assets/javascripts/admin/plugins/summernote_attachment_upload.js b/app/assets/javascripts/admin/plugins/summernote_attachment_upload.js
index e4860ab36bc313a33f91c22c51d4b52756bab200..d86f231916e2a9f06086e2368ab6ca57a823974e 100644
--- a/app/assets/javascripts/admin/plugins/summernote_attachment_upload.js
+++ b/app/assets/javascripts/admin/plugins/summernote_attachment_upload.js
@@ -1,4 +1,4 @@
-/*global $, ActiveStorage, SummernoteAttachment */
+/*global $, ActiveStorage */
 var SummernoteAttachmentUpload = function (element, file) {
     'use strict';
     this.element = element;
@@ -22,12 +22,12 @@ SummernoteAttachmentUpload.prototype.directUploadDidComplete = function (error,
 
     this.blobAttributes = attributes;
     this.trixAttributes = {
-        contentType: attributes.content_type,
-        filename: attributes.filename,
-        filesize: attributes.byte_size,
-        previewable: this.isPreviewable(),
-        sgid: attributes.attachable_sgid,
-        url: this.createBlobUrl(attributes.signed_id, attributes.filename)
+        'content-type': attributes.content_type,
+        'filename': attributes.filename,
+        'filesize': attributes.byte_size,
+        'previewable': this.isPreviewable(),
+        'sgid': attributes.attachable_sgid,
+        'url': this.createBlobUrl(attributes.signed_id, attributes.filename)
     };
 
     if (this.trixAttributes.previewable) {
@@ -54,15 +54,26 @@ SummernoteAttachmentUpload.prototype.preloadAndInsertAttachment = function () {
 
 SummernoteAttachmentUpload.prototype.insertAttachment = function () {
     'use strict';
-    var attachmentElement = document.createElement('figure'),
-        attachment;
+    var attachmentElement = document.createElement('action-text-attachment'),
+        imageElement,
+        keys = Object.keys(this.trixAttributes),
+        i;
 
-    attachmentElement.className = this.getClassName();
-    attachmentElement.setAttribute('data-trix-attachment', JSON.stringify(this.trixAttributes));
+    for (i = 0; i < keys.length; i += 1) {
+        attachmentElement.setAttribute(keys[i], this.trixAttributes[keys[i]]);
+    }
 
-    attachment = new SummernoteAttachment(attachmentElement);
+    if (this.trixAttributes.previewable) {
+        imageElement = document.createElement('img');
+        imageElement.src = this.trixAttributes.url;
+        imageElement.width = this.trixAttributes.width;
+        imageElement.height = this.trixAttributes.height;
+        attachmentElement.appendChild(imageElement);
+    } else {
+        attachmentElement.textContent = this.trixAttributes.filename;
+    }
 
-    $(this.element).summernote('insertNode', attachment.element);
+    $(this.element).summernote('insertNode', attachmentElement);
 };
 
 SummernoteAttachmentUpload.prototype.createBlobUrl = function (signedId, filename) {