diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBConfiguration.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBConfiguration.java
index ff12a2afe731c16a824a39c86fc3a808fc2ffe62..d32cc0d7eedbbee555d62d421220da7b52bf9b54 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBConfiguration.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBConfiguration.java
@@ -13,6 +13,7 @@
 
 package eu.europa.ec.edelivery.smp.data.model;
 
+import eu.europa.ec.edelivery.smp.data.dao.utils.ColumnDescription;
 import org.hibernate.envers.Audited;
 
 import javax.persistence.*;
@@ -28,22 +29,28 @@ import java.util.Objects;
 @NamedQueries({
         @NamedQuery(name = "DBConfiguration.getAll", query = "SELECT d FROM DBConfiguration d"),
 })
+@org.hibernate.annotations.Table(appliesTo = "SMP_CONFIGURATION", comment = "SMP user certificates")
 public class DBConfiguration implements Serializable {
     private static final long serialVersionUID = 1905122041950251201L;
 
     @Id
     @Column(name = "PROPERTY", length = CommonColumnsLengths.MAX_TEXT_LENGTH_512, nullable = false, unique = true)
+    @ColumnDescription(comment = "Property name/key")
     String property;
     @Column(name = "VALUE", length = CommonColumnsLengths.MAX_FREE_TEXT_LENGTH)
+    @ColumnDescription(comment = "Property value")
     String value;
 
     @Column(name = "DESCRIPTION", length = CommonColumnsLengths.MAX_FREE_TEXT_LENGTH)
+    @ColumnDescription(comment = "Property description")
     String description;
 
 
     @Column(name = "CREATED_ON", nullable = false)
+    @ColumnDescription(comment = "Row inserted on date")
     LocalDateTime createdOn;
     @Column(name = "LAST_UPDATED_ON", nullable = false)
+    @ColumnDescription(comment = "Row modified on date")
     LocalDateTime lastUpdatedOn;
 
 
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBDomain.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBDomain.java
index 47ed881152a31be044d8ce30051e23e190b2d032..02e765e19a885b7bb8210c66ade18bb0992f7787 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBDomain.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBDomain.java
@@ -13,6 +13,7 @@
 
 package eu.europa.ec.edelivery.smp.data.model;
 
+import eu.europa.ec.edelivery.smp.data.dao.utils.ColumnDescription;
 import org.hibernate.envers.Audited;
 
 import javax.persistence.*;
@@ -44,27 +45,36 @@ import java.time.LocalDateTime;
                         @ColumnResult(name = "smlSubdomain", type = String.class),
                         @ColumnResult(name = "useCount", type = Integer.class)})
 })
+@org.hibernate.annotations.Table(appliesTo = "SMP_DOMAIN", comment = "SMP can handle multiple domains. This table contains domain specific data")
 public class DBDomain extends BaseEntity {
 
     @Id
     @SequenceGenerator(name = "domain_generator", sequenceName = "SMP_DOMAIN_SEQ", allocationSize = 1)
     @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "domain_generator")
     @Column(name = "ID")
+    @ColumnDescription(comment = "Unique domain id")
     Long id;
 
     @Column(name = "DOMAIN_CODE", length = CommonColumnsLengths.MAX_DOMAIN_CODE_LENGTH, nullable = false, unique = true)
+    @ColumnDescription(comment = "Domain code used as http parameter in rest webservices")
     String domainCode;
     @Column(name = "SML_SUBDOMAIN", length = CommonColumnsLengths.MAX_SML_SUBDOMAIN_LENGTH, unique = true)
+    @ColumnDescription(comment = "SML subdomain")
     String smlSubdomain;
     @Column(name = "SML_SMP_ID", length = CommonColumnsLengths.MAX_SML_SMP_ID_LENGTH)
+    @ColumnDescription(comment = "SMP ID used for SML integration")
     String smlSmpId;
     @Column(name = "SML_PARTC_IDENT_REGEXP", length = CommonColumnsLengths.MAX_FREE_TEXT_LENGTH)
+    @ColumnDescription(comment = "Reqular expresion for participant ids")
     String smlParticipantIdentifierRegExp;
     @Column(name = "SML_CLIENT_CERT_HEADER", length = CommonColumnsLengths.MAX_FREE_TEXT_LENGTH)
+    @ColumnDescription(comment = "Client-Cert header used behind RP - BlueCoat for SML integration")
     String smlClientCertHeader;
     @Column(name = "SML_CLIENT_KEY_ALIAS", length = CommonColumnsLengths.MAX_CERT_ALIAS_LENGTH)
+    @ColumnDescription(comment = "Client key alias used for SML integration")
     String smlClientKeyAlias;
     @Column(name = "SIGNATURE_KEY_ALIAS", length = CommonColumnsLengths.MAX_CERT_ALIAS_LENGTH)
+    @ColumnDescription(comment = "Signature key alias used for SML integration")
     String signatureKeyAlias;
 
     @Column(name = "CREATED_ON", nullable = false)
@@ -73,9 +83,11 @@ public class DBDomain extends BaseEntity {
     LocalDateTime lastUpdatedOn;
 
     @Column(name = "SML_REGISTERED", nullable = false)
+    @ColumnDescription(comment = "Flag for: Is domain registered in SML")
     private boolean smlRegistered = false;
 
     @Column(name = "SML_BLUE_COAT_AUTH", nullable = false)
+    @ColumnDescription(comment = "Flag for SML authentication type - use CLientCert header or  HTTPS ClientCertificate (key)")
     private boolean smlBlueCoatAuth = false;
 
     public DBDomain() {
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBUser.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBUser.java
index 9b58457c96e634df5c3dec3cf7f5b27fac529f2d..eb3fa1081a35e6cab1db974c713efac7a4796bc8 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBUser.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBUser.java
@@ -12,6 +12,7 @@
  */
 package eu.europa.ec.edelivery.smp.data.model;
 
+import eu.europa.ec.edelivery.smp.data.dao.utils.ColumnDescription;
 import org.apache.commons.lang3.StringUtils;
 import org.hibernate.envers.Audited;
 
@@ -22,6 +23,7 @@ import java.util.Objects;
 @Entity
 @Audited
 @Table(name = "SMP_USER")
+@org.hibernate.annotations.Table(appliesTo = "SMP_USER", comment = "SMP can handle multiple domains. This table contains domain specific data")
 @NamedQueries({
         // case insesitive search
         @NamedQuery(name = "DBUser.getUserByUsernameInsensitive", query = "SELECT u FROM DBUser u WHERE lower(u.username) = lower(:username)"),
@@ -51,22 +53,29 @@ public class DBUser extends BaseEntity {
     @SequenceGenerator(name = "usr_generator", sequenceName = "SMP_USER_SEQ",allocationSize = 1 )
     @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "usr_generator" )
     @Column(name = "ID")
+    @ColumnDescription(comment = "Unique user id")
     Long id;
 
     @Column(name = "USERNAME", length = CommonColumnsLengths.MAX_USERNAME_LENGTH, unique = true)
+    @ColumnDescription(comment = "Login username")
     private String username;
     @Column(name = "PASSWORD", length = CommonColumnsLengths.MAX_PASSWORD_LENGTH)
+    @ColumnDescription(comment = "BCrypted password for username/password login")
     private String password;
     @Column(name = "EMAIL", length = CommonColumnsLengths.MAX_PASSWORD_LENGTH)
+    @ColumnDescription(comment = "User email")
     private String emailAddress;
 
     @Column(name = "PASSWORD_CHANGED")
+    @ColumnDescription(comment = "Last date when password was changed")
     LocalDateTime passwordChanged;
 
     @Column(name = "ACTIVE", nullable = false)
+    @ColumnDescription(comment = "Is user active")
     private boolean active = true;
     // user can have only one of the role smp_admin, servicegroup_admin, system_admin
     @Column(name = "ROLE", length = CommonColumnsLengths.MAX_USER_ROLE_LENGTH)
+    @ColumnDescription(comment = "User role")
     private String role;
 
     @OneToOne(mappedBy = "dbUser", cascade = CascadeType.ALL, fetch = FetchType.EAGER, optional = true,