diff --git a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/account/Account.java b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/account/Account.java
index 08fb772787a4ca38f2c8a3406f150da4bcaaf3cd..5be7d59855b014a9858b94c188033c86d822a6a5 100644
--- a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/account/Account.java
+++ b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/account/Account.java
@@ -1,5 +1,7 @@
 package cz.muni.pa165.banking.domain.account;
 
+import java.util.Objects;
+
 public class Account {
     
     private String accountNumber;
@@ -19,4 +21,24 @@ public class Account {
     public void setAccountNumber(String accountNumber) {
         this.accountNumber = accountNumber;
     }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        Account account = (Account) o;
+        return Objects.equals(getAccountNumber(), account.getAccountNumber());
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(getAccountNumber());
+    }
+
+    @Override
+    public String toString() {
+        return "Account{" +
+                "accountNumber='" + accountNumber + '\'' +
+                '}';
+    }
 }
diff --git a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/messaging/ProcessRequest.java b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/messaging/ProcessRequest.java
index dece4563799f49937d07416f49319310d3a9adf4..f70a6996f917e6456f0c4f7ad87478139bd02037 100644
--- a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/messaging/ProcessRequest.java
+++ b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/messaging/ProcessRequest.java
@@ -2,10 +2,24 @@ package cz.muni.pa165.banking.domain.messaging;
 
 import cz.muni.pa165.banking.domain.transaction.TransactionType;
 
+import java.util.Objects;
 import java.util.UUID;
 
 public record ProcessRequest(UUID uuid, TransactionType type) {
 
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        ProcessRequest request = (ProcessRequest) o;
+        return Objects.equals(uuid, request.uuid) && type == request.type;
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(uuid, type);
+    }
+
     @Override
     public String toString() {
         return "ProcessRequest{" +
diff --git a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/money/Money.java b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/money/Money.java
index d3382ff80c9e952180b88708516f238b0f63cfdf..e6dc93e83c15d6d735beb3616e3380b1105518bb 100644
--- a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/money/Money.java
+++ b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/money/Money.java
@@ -2,6 +2,7 @@ package cz.muni.pa165.banking.domain.money;
 
 import java.math.BigDecimal;
 import java.util.Currency;
+import java.util.Objects;
 
 public class Money {
 
@@ -32,4 +33,25 @@ public class Money {
     public void setCurrency(String currencyCode) {
         this.currency = Currency.getInstance(currencyCode);
     }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        Money money = (Money) o;
+        return Objects.equals(getAmount(), money.getAmount()) && Objects.equals(getCurrency(), money.getCurrency());
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(getAmount(), getCurrency());
+    }
+
+    @Override
+    public String toString() {
+        return "Money{" +
+                "amount=" + amount +
+                ", currency=" + currency +
+                '}';
+    }
 }
diff --git a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/Process.java b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/Process.java
index b0e7aa0bb280d8b64298ee221a96afb7fae07083..c9b0b940a7bbcd52854719bf31298bbfa62733a3 100644
--- a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/Process.java
+++ b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/Process.java
@@ -5,6 +5,7 @@ import cz.muni.pa165.banking.domain.process.status.StatusInformation;
 import jakarta.persistence.Entity;
 
 import java.time.Instant;
+import java.util.Objects;
 import java.util.UUID;
 
 @Entity
@@ -52,5 +53,25 @@ public class Process {
     void setCurrentStatus(StatusInformation information) {
         currentStatus = information;
     }
-    
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        Process process = (Process) o;
+        return Objects.equals(getUuid(), process.getUuid()) && Objects.equals(getCurrentStatus(), process.getCurrentStatus());
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(getUuid(), getCurrentStatus());
+    }
+
+    @Override
+    public String toString() {
+        return "Process{" +
+                "uuid=" + uuid +
+                ", currentStatus=" + currentStatus +
+                '}';
+    }
 }
diff --git a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/ProcessTransaction.java b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/ProcessTransaction.java
index fd98d790e5c26965a11c0b6d19638520ce444ffb..44876ab7f4e390e6f33e061e35eb677cd98513cb 100644
--- a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/ProcessTransaction.java
+++ b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/process/ProcessTransaction.java
@@ -6,6 +6,7 @@ import cz.muni.pa165.banking.domain.transaction.Transaction;
 import cz.muni.pa165.banking.domain.transaction.TransactionType;
 import jakarta.persistence.Entity;
 
+import java.util.Objects;
 import java.util.UUID;
 
 @Entity
@@ -36,4 +37,23 @@ public class ProcessTransaction extends Transaction {
     public void setUuid(UUID uuid) {
         this.uuid = uuid;
     }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (!(o instanceof ProcessTransaction that)) return false;
+        return Objects.equals(getUuid(), that.getUuid());
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(getUuid());
+    }
+
+    @Override
+    public String toString() {
+        return "ProcessTransaction{" +
+                "uuid=" + uuid +
+                "} " + super.toString();
+    }
 }
diff --git a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/transaction/Transaction.java b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/transaction/Transaction.java
index 6b0ed7892a1349d1968d3737f502c36f6c54b219..e363c572df66bd3a36dd8a4939b6818c7e846381 100644
--- a/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/transaction/Transaction.java
+++ b/transaction-processor/src/main/java/cz/muni/pa165/banking/domain/transaction/Transaction.java
@@ -3,6 +3,8 @@ package cz.muni.pa165.banking.domain.transaction;
 import cz.muni.pa165.banking.domain.account.Account;
 import cz.muni.pa165.banking.domain.money.Money;
 
+import java.util.Objects;
+
 public class Transaction {
     
     private Account source;
@@ -74,4 +76,26 @@ public class Transaction {
         this.detail = detail;
     }
 
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (!(o instanceof Transaction that)) return false;
+        return Objects.equals(getSource(), that.getSource()) && Objects.equals(getTarget(), that.getTarget()) && getType() == that.getType() && Objects.equals(getMoney(), that.getMoney()) && Objects.equals(getDetail(), that.getDetail());
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(getSource(), getTarget(), getType(), getMoney(), getDetail());
+    }
+
+    @Override
+    public String toString() {
+        return "Transaction{" +
+                "source=" + source +
+                ", target=" + target +
+                ", type=" + type +
+                ", money=" + money +
+                ", detail='" + detail + '\'' +
+                '}';
+    }
 }