diff --git a/openbis_ng_ui/src/js/components/tools/form/plugin/PluginForm.jsx b/openbis_ng_ui/src/js/components/tools/form/plugin/PluginForm.jsx
index 9468b6ea7caf197836398b8647f8e3446cb364d7..9ecbede7d4ee1795196bcfd24d64282f68e9e6cd 100644
--- a/openbis_ng_ui/src/js/components/tools/form/plugin/PluginForm.jsx
+++ b/openbis_ng_ui/src/js/components/tools/form/plugin/PluginForm.jsx
@@ -10,6 +10,7 @@ import PluginFormFacade from '@src/js/components/tools/form/plugin/PluginFormFac
 import PluginFormScript from '@src/js/components/tools/form/plugin/PluginFormScript.jsx'
 import PluginFormParameters from '@src/js/components/tools/form/plugin/PluginFormParameters.jsx'
 import PluginFormButtons from '@src/js/components/tools/form/plugin/PluginFormButtons.jsx'
+import openbis from '@src/js/services/openbis.js'
 import logger from '@src/js/common/logger.js'
 
 const styles = () => ({})
@@ -55,16 +56,20 @@ class PluginForm extends React.PureComponent {
     const { controller } = this
     const { plugin, selection, mode } = this.state
 
-    return (
-      <PluginFormScript
-        plugin={plugin}
-        selection={selection}
-        mode={mode}
-        onChange={controller.handleChange}
-        onSelectionChange={controller.handleSelectionChange}
-        onBlur={controller.handleBlur}
-      />
-    )
+    if (plugin.pluginKind === openbis.PluginKind.JYTHON) {
+      return (
+        <PluginFormScript
+          plugin={plugin}
+          selection={selection}
+          mode={mode}
+          onChange={controller.handleChange}
+          onSelectionChange={controller.handleSelectionChange}
+          onBlur={controller.handleBlur}
+        />
+      )
+    } else {
+      return <div></div>
+    }
   }
 
   renderAdditionalPanel() {
diff --git a/openbis_ng_ui/src/js/components/tools/form/plugin/PluginFormButtons.jsx b/openbis_ng_ui/src/js/components/tools/form/plugin/PluginFormButtons.jsx
index fcfb016997361f45dacf6f93df4952515685394f..0552368188b77e590ea4c45fd2d3bdd90a02002d 100644
--- a/openbis_ng_ui/src/js/components/tools/form/plugin/PluginFormButtons.jsx
+++ b/openbis_ng_ui/src/js/components/tools/form/plugin/PluginFormButtons.jsx
@@ -1,5 +1,6 @@
 import React from 'react'
 import PageButtons from '@src/js/components/common/page/PageButtons.jsx'
+import openbis from '@src/js/services/openbis.js'
 import logger from '@src/js/common/logger.js'
 
 class PluginFormButtons extends React.PureComponent {
@@ -12,7 +13,7 @@ class PluginFormButtons extends React.PureComponent {
       <PageButtons
         mode={mode}
         changed={changed}
-        onEdit={onEdit}
+        onEdit={plugin.pluginKind === openbis.PluginKind.JYTHON ? onEdit : null}
         onSave={onSave}
         onCancel={plugin.id ? onCancel : null}
       />
diff --git a/openbis_ng_ui/src/js/components/tools/form/plugin/PluginFormControllerLoad.js b/openbis_ng_ui/src/js/components/tools/form/plugin/PluginFormControllerLoad.js
index 7009284b7e36b8f6e9e8a6f0b5e8d53958671805..c6609a04d51df1035165095f528754d794a9f662 100644
--- a/openbis_ng_ui/src/js/components/tools/form/plugin/PluginFormControllerLoad.js
+++ b/openbis_ng_ui/src/js/components/tools/form/plugin/PluginFormControllerLoad.js
@@ -59,6 +59,9 @@ export default class PluginFormControllerLoad extends PageControllerLoad {
       }),
       script: FormUtil.createField({
         value: _.get(loadedPlugin, 'script', null)
+      }),
+      available: FormUtil.createField({
+        value: _.get(loadedPlugin, 'available', true)
       })
     }
     if (loadedPlugin) {
diff --git a/openbis_ng_ui/src/js/components/tools/form/plugin/PluginFormParameters.jsx b/openbis_ng_ui/src/js/components/tools/form/plugin/PluginFormParameters.jsx
index e388a406c413c714f52522b2a5e35cd542550774..f8da7b61b8355cf08598976d67a99ebee1f6a3c8 100644
--- a/openbis_ng_ui/src/js/components/tools/form/plugin/PluginFormParameters.jsx
+++ b/openbis_ng_ui/src/js/components/tools/form/plugin/PluginFormParameters.jsx
@@ -2,6 +2,7 @@ import React from 'react'
 import { withStyles } from '@material-ui/core/styles'
 import Container from '@src/js/components/common/form/Container.jsx'
 import Header from '@src/js/components/common/form/Header.jsx'
+import Message from '@src/js/components/common/form/Message.jsx'
 import TextField from '@src/js/components/common/form/TextField.jsx'
 import SelectField from '@src/js/components/common/form/SelectField.jsx'
 import PluginFormSelectionType from '@src/js/components/tools/form/plugin/PluginFormSelectionType.js'
@@ -78,6 +79,8 @@ class PluginFormParameters extends React.PureComponent {
     return (
       <Container>
         <Header>Plugin</Header>
+        {this.renderMessageDisabled(plugin)}
+        {this.renderMessagePredeployed(plugin)}
         {this.renderName(plugin)}
         {this.renderEntityKind(plugin)}
         {this.renderDescription(plugin)}
@@ -85,6 +88,38 @@ class PluginFormParameters extends React.PureComponent {
     )
   }
 
+  renderMessageDisabled(plugin) {
+    const { classes } = this.props
+
+    if (!plugin.available.value) {
+      return (
+        <div className={classes.field}>
+          <Message type='warning'>The plugin is disabled.</Message>
+        </div>
+      )
+    } else {
+      return null
+    }
+  }
+
+  renderMessagePredeployed(plugin) {
+    const { classes } = this.props
+
+    if (plugin.pluginKind === openbis.PluginKind.PREDEPLOYED) {
+      return (
+        <div className={classes.field}>
+          <Message type='info'>
+            This is a predeployed Java plugin. Its parameters and logic are
+            defined in the plugin Java class and therefore cannot be changed
+            from the UI.
+          </Message>
+        </div>
+      )
+    } else {
+      return null
+    }
+  }
+
   renderName(plugin) {
     const { visible, enabled, error, value } = { ...plugin.name }