Index: eprms-model/src/main/java/info/ajanovski/eprms/model/entities/ActivityType.java
===================================================================
--- eprms-model/src/main/java/info/ajanovski/eprms/model/entities/ActivityType.java	(revision 233f71954efb93ead4b62a2ed8c9f4e6145c0cdf)
+++ eprms-model/src/main/java/info/ajanovski/eprms/model/entities/ActivityType.java	(revision 5f7f096ff5c2155f33ce1048e3cafde589db7acf)
@@ -33,4 +33,7 @@
 	private String title;
 	private String description;
+	private String code;
+	private ActivityType superActivityType;
+	private List<ActivityType> subActivityTypes = new ArrayList<ActivityType>();
 
 
@@ -65,3 +68,31 @@
 	}
 
+	@Column(name = "code", unique = true, nullable = false)
+	public String getCode() {
+		return this.code;
+	}
+
+	public void setCode(String code) {
+		this.code=code;
+	}
+
+	@ManyToOne(fetch = FetchType.LAZY)
+	@JoinColumn(name = "activity_type_id", nullable = true, foreignKey = @ForeignKey(name = "fk_activity_type_activity_type"))
+	public ActivityType getSuperActivityType() {
+		return this.superActivityType;
+	}
+
+	public void setSuperActivityType(ActivityType superActivityType) {
+		this.superActivityType=superActivityType;
+	}
+
+	@OneToMany(fetch = FetchType.LAZY, mappedBy = "superActivityType")
+	public List<ActivityType> getSubActivityTypes() {
+		return this.subActivityTypes;
+	}
+
+	public void setSubActivityTypes(List<ActivityType> subActivityTypes) {
+		this.subActivityTypes=subActivityTypes;
+	}
+
 }
Index: eprms-model/src/main/java/info/ajanovski/eprms/model/entities/Course.java
===================================================================
--- eprms-model/src/main/java/info/ajanovski/eprms/model/entities/Course.java	(revision 233f71954efb93ead4b62a2ed8c9f4e6145c0cdf)
+++ eprms-model/src/main/java/info/ajanovski/eprms/model/entities/Course.java	(revision 5f7f096ff5c2155f33ce1048e3cafde589db7acf)
@@ -32,4 +32,6 @@
 	private long courseId;
 	private String title;
+	private String code;
+	private List<CourseActivityType> courseActivityTypes = new ArrayList<CourseActivityType>();
 
 
@@ -55,3 +57,21 @@
 	}
 
+	@Column(name = "code", unique = true, nullable = false)
+	public String getCode() {
+		return this.code;
+	}
+
+	public void setCode(String code) {
+		this.code=code;
+	}
+
+	@OneToMany(fetch = FetchType.LAZY, mappedBy = "course")
+	public List<CourseActivityType> getCourseActivityTypes() {
+		return this.courseActivityTypes;
+	}
+
+	public void setCourseActivityTypes(List<CourseActivityType> courseActivityTypes) {
+		this.courseActivityTypes=courseActivityTypes;
+	}
+
 }
Index: eprms-model/src/main/java/info/ajanovski/eprms/model/entities/CourseActivityType.java
===================================================================
--- eprms-model/src/main/java/info/ajanovski/eprms/model/entities/CourseActivityType.java	(revision 5f7f096ff5c2155f33ce1048e3cafde589db7acf)
+++ eprms-model/src/main/java/info/ajanovski/eprms/model/entities/CourseActivityType.java	(revision 5f7f096ff5c2155f33ce1048e3cafde589db7acf)
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * Copyright (C) 2021 Vangel V. Ajanovski
+ *     
+ * This file is part of the EPRMS - Educational Project and Resource Management 
+ * System (hereinafter: EPRMS).
+ *     
+ * EPRMS is free software: you can redistribute it and/or modify it under the 
+ * terms of the GNU General Public License as published by the Free Software 
+ * Foundation, either version 3 of the License, or (at your option) any later 
+ * version.
+ *     
+ * EPRMS is distributed in the hope that it will be useful, but WITHOUT ANY 
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more 
+ * details.
+ *     
+ * You should have received a copy of the GNU General Public License along 
+ * with EPRMS.  If not, see <https://www.gnu.org/licenses/>.
+ * 
+ ******************************************************************************/
+
+package info.ajanovski.eprms.model.entities;
+
+import java.util.*;
+import javax.persistence.*;
+
+/*
+*/
+@Entity
+@Table (schema="", name="course_activity_type")
+public class CourseActivityType implements java.io.Serializable {
+	private long courseActivityTypeId;
+	private int order;
+	private ActivityType activityType;
+	private Course course;
+
+
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+
+	@Column(name = "course_activity_type_id", unique = true, nullable = false)
+	public long getCourseActivityTypeId() {
+		return this.courseActivityTypeId;
+	}
+
+	public void setCourseActivityTypeId(long courseActivityTypeId) {
+		this.courseActivityTypeId=courseActivityTypeId;
+	}
+
+	@Column(name = "order", nullable = false)
+	public int getOrder() {
+		return this.order;
+	}
+
+	public void setOrder(int order) {
+		this.order=order;
+	}
+
+	@ManyToOne(fetch = FetchType.LAZY)
+	@JoinColumn(name = "activity_type_id", nullable = false, foreignKey = @ForeignKey(name = "fk_course_activity_type_activity_type"))
+	public ActivityType getActivityType() {
+		return this.activityType;
+	}
+
+	public void setActivityType(ActivityType activityType) {
+		this.activityType=activityType;
+	}
+
+	@ManyToOne(fetch = FetchType.LAZY)
+	@JoinColumn(name = "course_id", nullable = false, foreignKey = @ForeignKey(name = "fk_course_activity_type_course"))
+	public Course getCourse() {
+		return this.course;
+	}
+
+	public void setCourse(Course course) {
+		this.course=course;
+	}
+
+}
