diff --git a/sth-backend/src/main/java/hdm/mi/sthbackend/service/TournamentService.java b/sth-backend/src/main/java/hdm/mi/sthbackend/service/TournamentService.java
new file mode 100644
index 0000000000000000000000000000000000000000..0d290434d7cc5e6cd646e618347d4d178972c67b
--- /dev/null
+++ b/sth-backend/src/main/java/hdm/mi/sthbackend/service/TournamentService.java
@@ -0,0 +1,101 @@
+package hdm.mi.sthbackend.service;
+
+import hdm.mi.sthbackend.exeptions.PlayerIdNotFoundException;
+import hdm.mi.sthbackend.exeptions.TournamentIdNotFoundException;
+import hdm.mi.sthbackend.model.Player;
+import hdm.mi.sthbackend.model.Team;
+import hdm.mi.sthbackend.model.Tournament;
+import hdm.mi.sthbackend.repository.ITournamentRepository;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.UUID;
+
+@Service
+@AllArgsConstructor
+public class TournamentService {
+
+    ITournamentRepository tournamentRepository;
+
+    public Player addPlayerToTeam(UUID tournamentId, UUID teamId, String playerName) throws Exception {
+        Tournament tournament = tournamentRepository.findById(tournamentId)
+                .orElseThrow(() -> new Exception("TournamentId " + tournamentId + " not found"));
+        Player newPlayer = new Player(UUID.randomUUID(), playerName);
+        tournament
+                .getTeams()
+                .get(teamId)
+                .getTeamMembers()
+                .add(newPlayer);
+        tournamentRepository.save(tournament);
+        return newPlayer;
+    }
+
+    public Player removePlayerFromTeam(UUID tournamentId,
+                                       UUID teamId,
+                                       UUID playerId) throws TournamentIdNotFoundException, PlayerIdNotFoundException {
+        Tournament tournament = tournamentRepository.findById(tournamentId)
+                .orElseThrow(() -> new TournamentIdNotFoundException(tournamentId));
+
+        List<Player> teamMembers = tournament.getTeams()
+                .get(teamId)
+                .getTeamMembers();
+
+        Player playerToRemove = teamMembers.stream()
+                .filter(player -> player.getPlayerId()
+                        .equals(playerId))
+                .findFirst()
+                .orElseThrow(() -> new PlayerIdNotFoundException(playerId));
+
+        tournament.getTeams()
+                .get(teamId)
+                .getTeamMembers()
+                .remove(playerToRemove);
+        tournamentRepository.save(tournament);
+        return playerToRemove;
+    }
+
+    public UUID updatePlayerName(UUID tournamentId,
+                                 UUID teamId,
+                                 UUID playerId,
+                                 String newPlayerName) throws Exception {
+        Tournament tournament = tournamentRepository.findById(tournamentId)
+                .orElseThrow(() -> new TournamentIdNotFoundException(tournamentId));
+
+        tournament.getTeams()
+                .get(teamId)
+                .getTeamMembers()
+                .stream()
+                .filter(player -> player.getPlayerId()
+                        .equals(playerId))
+                .findFirst()
+                .orElseThrow(() -> new PlayerIdNotFoundException(playerId))
+                .setName(newPlayerName);
+        tournamentRepository.save(tournament);
+        return playerId;
+    }
+
+    public Team createTeam(UUID tournamentId, String teamName) throws TournamentIdNotFoundException {
+        Tournament tournament = tournamentRepository.findById(tournamentId)
+                .orElseThrow(() -> new TournamentIdNotFoundException(tournamentId));
+
+        Team team = new Team(UUID.randomUUID(), teamName, new ArrayList<>() {
+        });
+
+        tournament.getTeams()
+                .put(team.getId(), team);
+
+        tournamentRepository.save(tournament);
+        return team;
+    }
+
+    public Tournament createTournament(String tournamentName) {
+        Tournament tournament = new Tournament(UUID.randomUUID(), tournamentName, new ArrayList<>(), new HashMap<>());
+        tournamentRepository.insert(tournament);
+        return tournament;
+    }
+
+
+}