Index: src/main/java/edu/gjoko/schedlr/entity/Appointment.java
===================================================================
--- src/main/java/edu/gjoko/schedlr/entity/Appointment.java	(revision 950fa0d7a6b439770e79c885947e9b7d6058b424)
+++ src/main/java/edu/gjoko/schedlr/entity/Appointment.java	(revision 77205be723c8b2ffd1ee5618a05e1d12b1cee44a)
@@ -1,8 +1,6 @@
 package edu.gjoko.schedlr.entity;
 
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
+import com.fasterxml.jackson.annotation.JsonBackReference;
+import lombok.*;
 import org.springframework.data.annotation.LastModifiedDate;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
@@ -14,6 +12,5 @@
 @EntityListeners(AuditingEntityListener.class)
 @Table(name = "appointment")
-@Getter
-@Setter
+@Data
 @NoArgsConstructor
 @AllArgsConstructor
@@ -30,15 +27,17 @@
     private LocalDateTime endTime;
 
-    @OneToOne
-    @JoinColumn(name = "customer_id", referencedColumnName = "id")
+    @ManyToOne
+    @JoinColumn(name = "stakeholder_id")
+    @JsonBackReference(value = "customerAppointments")
     private Stakeholder customer;
 
     @ManyToOne
-    @JoinColumn(name = "business_id")
-    private Business business;
+    @JoinColumn(name = "service_id")
+    @JsonBackReference(value = "serviceAppointments")
+    private Service service;
 
-    @ManyToOne
-    @JoinColumn(name = "service_id")
-    private Service service;
+    @Column(name = "appointment_status", length = 32, columnDefinition = "varchar(32) default 'NEW'")
+    @Enumerated(EnumType.STRING)
+    private AppointmentStatus appointmentStatus = AppointmentStatus.NEW;
 
     @Column(name = "created")
@@ -49,3 +48,8 @@
     @LastModifiedDate
     private LocalDateTime modified;
+
+    public String getTimePeriod() {
+        return startTime + " - " + endTime;
+    }
+
 }
Index: src/main/java/edu/gjoko/schedlr/entity/AppointmentStatus.java
===================================================================
--- src/main/java/edu/gjoko/schedlr/entity/AppointmentStatus.java	(revision 77205be723c8b2ffd1ee5618a05e1d12b1cee44a)
+++ src/main/java/edu/gjoko/schedlr/entity/AppointmentStatus.java	(revision 77205be723c8b2ffd1ee5618a05e1d12b1cee44a)
@@ -0,0 +1,8 @@
+package edu.gjoko.schedlr.entity;
+
+public enum AppointmentStatus {
+    NEW,
+    CANCELLED_BY_CUSTOMER,
+    CANCELLED_BY_BUSINESS_OWNER,
+    FINISHED_AND_REVIEWED_BY_USER;
+}
Index: src/main/java/edu/gjoko/schedlr/entity/Business.java
===================================================================
--- src/main/java/edu/gjoko/schedlr/entity/Business.java	(revision 950fa0d7a6b439770e79c885947e9b7d6058b424)
+++ src/main/java/edu/gjoko/schedlr/entity/Business.java	(revision 77205be723c8b2ffd1ee5618a05e1d12b1cee44a)
@@ -37,5 +37,5 @@
     private BusinessType businessType;
 
-    @ManyToOne()
+    @OneToOne(cascade = CascadeType.PERSIST)
     @JoinColumn(name = "owner_id", referencedColumnName = "id", nullable = false)
     @JsonProperty("owner")
@@ -43,5 +43,5 @@
 
     @OneToMany(mappedBy = "business", cascade = CascadeType.PERSIST)
-    @JsonManagedReference
+    @JsonManagedReference(value = "services")
     private List<Service> services;
 
Index: src/main/java/edu/gjoko/schedlr/entity/Review.java
===================================================================
--- src/main/java/edu/gjoko/schedlr/entity/Review.java	(revision 77205be723c8b2ffd1ee5618a05e1d12b1cee44a)
+++ src/main/java/edu/gjoko/schedlr/entity/Review.java	(revision 77205be723c8b2ffd1ee5618a05e1d12b1cee44a)
@@ -0,0 +1,46 @@
+package edu.gjoko.schedlr.entity;
+
+import com.fasterxml.jackson.annotation.JsonBackReference;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.springframework.data.annotation.LastModifiedDate;
+import org.springframework.data.jpa.domain.support.AuditingEntityListener;
+
+import javax.persistence.*;
+import java.time.LocalDateTime;
+
+@Entity
+@EntityListeners(AuditingEntityListener.class)
+@Table(name = "review")
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class Review {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.SEQUENCE)
+    private Long id;
+
+    @Column(name = "rating")
+    private Integer rating;
+
+    @Column(name = "comment")
+    private String comment;
+
+    @OneToOne
+    @JoinColumn(name = "appointment_id", referencedColumnName = "id")
+    @JsonProperty("appointment")
+    private Appointment appointment;
+
+    @Column(name = "created")
+    @LastModifiedDate
+    private LocalDateTime created;
+
+    @Column(name = "modified")
+    @LastModifiedDate
+    private LocalDateTime modified;
+}
Index: src/main/java/edu/gjoko/schedlr/entity/Service.java
===================================================================
--- src/main/java/edu/gjoko/schedlr/entity/Service.java	(revision 950fa0d7a6b439770e79c885947e9b7d6058b424)
+++ src/main/java/edu/gjoko/schedlr/entity/Service.java	(revision 77205be723c8b2ffd1ee5618a05e1d12b1cee44a)
@@ -3,4 +3,5 @@
 import com.fasterxml.jackson.annotation.JsonBackReference;
 import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonManagedReference;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
@@ -13,4 +14,5 @@
 import javax.persistence.*;
 import java.time.LocalDateTime;
+import java.util.List;
 
 @Entity
@@ -33,5 +35,11 @@
     private Integer price;
 
-    @OneToOne(cascade = CascadeType.PERSIST)
+    @Column(name = "cumulated_rating")
+    private Float rating = 0.0f;
+
+    @Column(name = "reviews_count")
+    private Integer reviewsCount = 0;
+
+    @OneToOne(cascade = CascadeType.MERGE)
     @JoinColumn(name = "service_type_id", referencedColumnName = "id")
     private ServiceType serviceType;
@@ -39,6 +47,10 @@
     @ManyToOne
     @JoinColumn(name = "business_id")
-    @JsonBackReference
+    @JsonBackReference(value = "services")
     private Business business;
+
+    @OneToMany(mappedBy="service")
+    @JsonManagedReference(value = "serviceAppointments")
+    private List<Appointment> appointments;
 
     @Column(name = "created")
Index: src/main/java/edu/gjoko/schedlr/entity/Stakeholder.java
===================================================================
--- src/main/java/edu/gjoko/schedlr/entity/Stakeholder.java	(revision 950fa0d7a6b439770e79c885947e9b7d6058b424)
+++ src/main/java/edu/gjoko/schedlr/entity/Stakeholder.java	(revision 77205be723c8b2ffd1ee5618a05e1d12b1cee44a)
@@ -2,4 +2,5 @@
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonManagedReference;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
@@ -12,4 +13,5 @@
 import javax.persistence.*;
 import java.time.LocalDateTime;
+import java.util.List;
 
 @Entity
@@ -39,4 +41,7 @@
     private String email;
 
+    @Column(name = "phone_number")
+    private String phoneNumber;
+
     @Column(name = "username")
     private String username;
@@ -44,4 +49,8 @@
     @Column(name = "password")
     private String password;
+
+    @OneToMany(mappedBy = "customer")
+    @JsonManagedReference(value = "customerAppointments")
+    private List<Appointment> appointments;
 
     @Column(name = "created")
@@ -54,3 +63,7 @@
     @JsonIgnore
     private LocalDateTime modified;
+
+    public String getFullName() {
+        return firstName + " " + lastName;
+    }
 }
