diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/UserGroupAssoController.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/UserGroupAssoController.java
index e5af6f113f8f2b96df3e0919a846276e130061d6..4500f8be0bdc62265cb9d6545c158c7fac351370 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/UserGroupAssoController.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/UserGroupAssoController.java
@@ -5,10 +5,7 @@ import lombok.AllArgsConstructor;
 import ntnu.idatt2016.v233.SmartMat.entity.group.UserGroupAsso;
 import ntnu.idatt2016.v233.SmartMat.service.group.UserGroupAssoService;
 import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
@@ -35,4 +32,10 @@ public class UserGroupAssoController {
         return userGroupAssoService.getInformationByGroupId(groupId).map(ResponseEntity::ok).orElseGet(() -> ResponseEntity.notFound().build());
     }
 
+    @PutMapping("/markNewPrimary/{username}/{oldId}/{newId}")
+    public ResponseEntity<?> markNewPrimaryGroup(@PathVariable("username") String username,
+                                                 @PathVariable("newId") long newId,
+                                                 @PathVariable("oldId") long oldId){
+        return userGroupAssoService.changePrimaryGroup(oldId,newId,username).map(ResponseEntity::ok).orElseGet(() -> ResponseEntity.notFound().build());
+    }
 }
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/group/UserGroupAsso.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/group/UserGroupAsso.java
index 169031a859ffa1b46b7b252cdbb80933b8e0c747..663fa1f0d60ae5587adcbcf33216ce58561d43af 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/group/UserGroupAsso.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/group/UserGroupAsso.java
@@ -33,7 +33,7 @@ public class UserGroupAsso {
     @ManyToOne
     @MapsId("group_id")
     @JoinColumn(name = "group_id")
-    @JsonIgnoreProperties("user")
+    @JsonIgnoreProperties({"group", "user"})
     private Group group;
 
     @Column(name = "primary_group")
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/group/UserGroupAssoRepository.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/group/UserGroupAssoRepository.java
index e05736af7c6670bedbd8c864c79045fceaeccfc8..3d3905d5bd01fdc362a35ed10b0127b590711a62 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/group/UserGroupAssoRepository.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/group/UserGroupAssoRepository.java
@@ -3,6 +3,7 @@ package ntnu.idatt2016.v233.SmartMat.repository.group;
 import ntnu.idatt2016.v233.SmartMat.entity.group.Group;
 import ntnu.idatt2016.v233.SmartMat.entity.group.UserGroupId;
 import ntnu.idatt2016.v233.SmartMat.entity.group.UserGroupAsso;
+import ntnu.idatt2016.v233.SmartMat.entity.user.User;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Query;
 
@@ -30,4 +31,5 @@ public interface UserGroupAssoRepository extends JpaRepository<UserGroupAsso, Us
      */
     List<UserGroupAsso> findAllByGroup(Group group);
 
+    Optional<UserGroupAsso> findAllByGroupAndUser(Group group, User user);
 }
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/group/UserGroupAssoService.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/group/UserGroupAssoService.java
index 2704cedcc91bf20582886c7a3beaac41f01e187f..463dd5d6fa53895855b2cb0df30f0c972bc0ec39 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/group/UserGroupAssoService.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/group/UserGroupAssoService.java
@@ -22,11 +22,12 @@ public class UserGroupAssoService {
     private GroupRepository groupRepository;
     private final UserRepository userRepository;
 
-    public void save(User user, Group group, boolean primaryGroup) {
+    public void save(User user, Group group, String userAuthority) {
         UserGroupAsso userGroupTable1 = new UserGroupAsso();
         userGroupTable1.setGroup(group);
         userGroupTable1.setUser(user);
-        userGroupTable1.setPrimaryGroup(primaryGroup);
+        userGroupTable1.setPrimaryGroup(true);
+        userGroupTable1.setGroupAuthority(userAuthority);
         userGroupTable1.setId(UserGroupId.builder()
                         .groupId(group.getGroupId())
                         .username(user.getUsername())
@@ -56,4 +57,29 @@ public class UserGroupAssoService {
         return Optional.empty();
     }
 
+    /**
+     * Changes the primary group of a user by unmarking the current primary group and marking a new primary group.
+     *
+     * @param newId The ID of the new primary group.
+     * @param username The username of the user whose primary group is being changed.
+     */
+    public Optional<Object> changePrimaryGroup(long oldId, long newId, String username){
+        Optional<Group> oldGroup = groupRepository.findByGroupId(oldId);
+        Optional<Group> newGroup = groupRepository.findByGroupId(newId);
+        Optional<User> user =  userRepository.findByUsername(username);
+
+        if (oldGroup.isEmpty()) return Optional.empty();
+        if (newGroup.isEmpty()) return Optional.empty();
+        if (user.isEmpty()) return Optional.empty();
+
+        UserGroupAsso userGroupAsso = userGroupAssoRepository.findAllByGroupAndUser(oldGroup.get(),user.get()).get();
+        userGroupAsso.setPrimaryGroup(false);
+
+        userGroupAssoRepository.save(userGroupAsso);
+        userGroupAsso = userGroupAssoRepository.findAllByGroupAndUser(newGroup.get(),user.get()).get();
+        userGroupAsso.setPrimaryGroup(true);
+        userGroupAssoRepository.save(userGroupAsso);
+
+        return Optional.of(userGroupAsso);
+    }
 }
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/service/group/UserGroupAssoServiceTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/service/group/UserGroupAssoServiceTest.java
index 57d207c850fbdefa78023197afb42e163ef72853..726b64cb8d5f1d4bd2d187ac3449f6f9d8218d24 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/service/group/UserGroupAssoServiceTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/service/group/UserGroupAssoServiceTest.java
@@ -55,7 +55,7 @@ public class UserGroupAssoServiceTest {
 
     @Test
     public void testSave() {
-        userGroupAssoService.save(user, group, true);
+        userGroupAssoService.save(user, group, "ADMIN");
 
         verify(userGroupAssoRepository, times(1)).save(userGroupAsso);
         verify(userRepository, times(1)).save(user);