diff --git a/modules/portal/src/com/haulmont/cuba/portal/sys/remoting/LocalServiceProxy.java b/modules/portal/src/com/haulmont/cuba/portal/sys/remoting/LocalServiceProxy.java
index 063f49e9df..db19318ef5 100644
--- a/modules/portal/src/com/haulmont/cuba/portal/sys/remoting/LocalServiceProxy.java
+++ b/modules/portal/src/com/haulmont/cuba/portal/sys/remoting/LocalServiceProxy.java
@@ -34,6 +34,12 @@ import java.lang.reflect.Parameter;
import java.lang.reflect.Proxy;
import java.util.UUID;
+/**
+ * INTERNAL.
+ *
+ * Bean of the web block that creates a proxy object to invoke middleware services directly
+ * using {@link LocalServiceInvoker}.
+ */
public class LocalServiceProxy extends RemoteAccessor implements FactoryBean, InitializingBean {
private Object serviceProxy;
@@ -146,7 +152,7 @@ public class LocalServiceProxy extends RemoteAccessor implements FactoryBean
+ * This class holds a collection of {@link LocalServiceInvoker} instances. It must be loaded to a classloader shared
+ * between the client tier and middleware.
+ */
public class LocalServiceDirectory {
private static Map invokers = new ConcurrentHashMap<>();
diff --git a/modules/shared-lib/src/com/haulmont/cuba/core/sys/remoting/LocalServiceInvocation.java b/modules/shared-lib/src/com/haulmont/cuba/core/sys/remoting/LocalServiceInvocation.java
index 5e82ddfcd5..5cf1d7365d 100644
--- a/modules/shared-lib/src/com/haulmont/cuba/core/sys/remoting/LocalServiceInvocation.java
+++ b/modules/shared-lib/src/com/haulmont/cuba/core/sys/remoting/LocalServiceInvocation.java
@@ -20,6 +20,11 @@ package com.haulmont.cuba.core.sys.remoting;
import java.util.TimeZone;
import java.util.UUID;
+/**
+ * INTERNAL.
+ *
+ * An object that is passed when invoking middleware services using {@link LocalServiceInvoker}.
+ */
public class LocalServiceInvocation {
private String methodName;
private String[] parameterTypeNames;
diff --git a/modules/shared-lib/src/com/haulmont/cuba/core/sys/remoting/LocalServiceInvocationResult.java b/modules/shared-lib/src/com/haulmont/cuba/core/sys/remoting/LocalServiceInvocationResult.java
index 87d83b8a62..6d53dbd9e6 100644
--- a/modules/shared-lib/src/com/haulmont/cuba/core/sys/remoting/LocalServiceInvocationResult.java
+++ b/modules/shared-lib/src/com/haulmont/cuba/core/sys/remoting/LocalServiceInvocationResult.java
@@ -17,6 +17,11 @@
package com.haulmont.cuba.core.sys.remoting;
+/**
+ * INTERNAL.
+ *
+ * A result object that is returned to the client when invoking middleware services using {@link LocalServiceInvoker}.
+ */
public class LocalServiceInvocationResult {
private byte[] data;
diff --git a/modules/shared-lib/src/com/haulmont/cuba/core/sys/remoting/LocalServiceInvoker.java b/modules/shared-lib/src/com/haulmont/cuba/core/sys/remoting/LocalServiceInvoker.java
index ee690a0735..dca7ed982f 100644
--- a/modules/shared-lib/src/com/haulmont/cuba/core/sys/remoting/LocalServiceInvoker.java
+++ b/modules/shared-lib/src/com/haulmont/cuba/core/sys/remoting/LocalServiceInvoker.java
@@ -17,6 +17,13 @@
package com.haulmont.cuba.core.sys.remoting;
+/**
+ * INTERNAL.
+ *
+ * Enables direct invocation of middleware services from the client tier.
+ * Implementation objects are created on the middleware side and registered in {@link LocalServiceDirectory},
+ * which is available both to the client and middle tier.
+ */
public interface LocalServiceInvoker {
LocalServiceInvocationResult invoke(LocalServiceInvocation invocation);
diff --git a/modules/web/src/com/haulmont/cuba/web/sys/remoting/LocalServiceProxy.java b/modules/web/src/com/haulmont/cuba/web/sys/remoting/LocalServiceProxy.java
index 38c57fad94..9a179d482a 100644
--- a/modules/web/src/com/haulmont/cuba/web/sys/remoting/LocalServiceProxy.java
+++ b/modules/web/src/com/haulmont/cuba/web/sys/remoting/LocalServiceProxy.java
@@ -34,6 +34,12 @@ import java.lang.reflect.Parameter;
import java.lang.reflect.Proxy;
import java.util.UUID;
+/**
+ * INTERNAL.
+ *
+ * Bean of the web block that creates a proxy object to invoke middleware services directly
+ * using {@link LocalServiceInvoker}.
+ */
public class LocalServiceProxy extends RemoteAccessor implements FactoryBean, InitializingBean {
private Object serviceProxy;
@@ -146,7 +152,7 @@ public class LocalServiceProxy extends RemoteAccessor implements FactoryBean