diff --git a/fineract-core/src/main/java/org/apache/fineract/commands/domain/CommandWrapper.java b/fineract-core/src/main/java/org/apache/fineract/commands/domain/CommandWrapper.java
index 99a340a..135c1bc 100644
--- a/fineract-core/src/main/java/org/apache/fineract/commands/domain/CommandWrapper.java
+++ b/fineract-core/src/main/java/org/apache/fineract/commands/domain/CommandWrapper.java
@@ -18,8 +18,10 @@
  */
 package org.apache.fineract.commands.domain;
 
+import lombok.Getter;
 import org.apache.fineract.useradministration.api.PasswordPreferencesApiConstants;
 
+@Getter
 public class CommandWrapper {
 
     private final Long commandId;
@@ -140,26 +142,6 @@
         this.idempotencyKey = idempotencyKey;
     }
 
-    public Long getCreditBureauId() {
-        return this.creditBureauId;
-    }
-
-    public Long getOrganisationCreditBureauId() {
-        return this.organisationCreditBureauId;
-    }
-
-    public String getIdempotencyKey() {
-        return idempotencyKey;
-    }
-
-    public String getHref() {
-        return this.href;
-    }
-
-    public String getJson() {
-        return this.json;
-    }
-
     public boolean isCreate() {
         return this.actionName.equalsIgnoreCase("CREATE");
     }
@@ -226,22 +208,6 @@
         return this.entityName.equalsIgnoreCase("CACHE");
     }
 
-    public Long getSubentityId() {
-        return this.subentityId;
-    }
-
-    public String getTransactionId() {
-        return this.transactionId;
-    }
-
-    public String getEntityName() {
-        return this.entityName;
-    }
-
-    public Long getEntityId() {
-        return this.entityId;
-    }
-
     public boolean isUpdateOperation() {
         return this.actionName.equalsIgnoreCase("UPDATE");
     }
@@ -298,34 +264,6 @@
         return this.actionName + "_" + this.entityName;
     }
 
-    public String getTaskPermissionName() {
-        return this.taskPermissionName;
-    }
-
-    public Long getOfficeId() {
-        return officeId;
-    }
-
-    public Long getGroupId() {
-        return this.groupId;
-    }
-
-    public Long getClientId() {
-        return this.clientId;
-    }
-
-    public Long getLoanId() {
-        return this.loanId;
-    }
-
-    public Long getSavingsId() {
-        return this.savingsId;
-    }
-
-    public Long getProductId() {
-        return this.productId;
-    }
-
     public boolean isPermissionResource() {
         return this.entityName.equalsIgnoreCase("PERMISSION");
     }
@@ -355,8 +293,4 @@
         return this.actionName.equalsIgnoreCase("UPDATE") && this.entityName.equalsIgnoreCase("DISBURSEMENTDETAIL")
                 && this.entityId == null;
     }
-
-    public String getJobName() {
-        return jobName;
-    }
 }
