diff --git a/Backend/src/main/java/com/ebdapo/backend/entity/Benutzer.java b/Backend/src/main/java/com/ebdapo/backend/entity/Benutzer.java
index a5ed9a0e2012fb1d520f7352096a082ef9892ac0..4bc26a85b3b9fe9f33a841226591a2de2bd193b1 100644
--- a/Backend/src/main/java/com/ebdapo/backend/entity/Benutzer.java
+++ b/Backend/src/main/java/com/ebdapo/backend/entity/Benutzer.java
@@ -4,6 +4,7 @@ import com.ebdapo.backend.entity.enums.Rolle;
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import org.hibernate.annotations.Type;
 
 import javax.persistence.*;
 import java.util.List;
@@ -31,7 +32,8 @@ public class Benutzer {
     @Column(name="passwort", nullable = false)
     private String passwort;
 
-    @Column(name="aktiv", nullable = false)
+    @Type(type = "org.hibernate.type.NumericBooleanType")
+    @Column(name="aktiv",columnDefinition = "TINYINT", nullable = false)
     private boolean aktiv;
 
     @Enumerated(EnumType.STRING)
diff --git a/Backend/src/main/java/com/ebdapo/backend/entity/Betaeubungsmittel.java b/Backend/src/main/java/com/ebdapo/backend/entity/Betaeubungsmittel.java
index a4c11cef8ad38b7060a954b5a2033e768baca54e..05aaa20c79cfeb52e62f77551f98865e2fc9cee5 100644
--- a/Backend/src/main/java/com/ebdapo/backend/entity/Betaeubungsmittel.java
+++ b/Backend/src/main/java/com/ebdapo/backend/entity/Betaeubungsmittel.java
@@ -31,6 +31,9 @@ public class Betaeubungsmittel {
     @Column(name="einheit", nullable = false)
     private Einheit einheit;
 
+    @Column(name="menge")
+    private int menge;
+
     @ManyToOne(targetEntity = Apotheke.class)
     @JoinColumn(name="apotheke", referencedColumnName = "id")
     private Apotheke apotheke;
diff --git a/Backend/src/main/java/com/ebdapo/backend/entity/apidetails/BenutzerAPIDetails.java b/Backend/src/main/java/com/ebdapo/backend/entity/apidetails/BenutzerAPIDetails.java
index 45526e14cdfc5deda607ae60172822f6d4b5b4c4..48da38a38287f0952e562a4f6b3006686cd787e9 100644
--- a/Backend/src/main/java/com/ebdapo/backend/entity/apidetails/BenutzerAPIDetails.java
+++ b/Backend/src/main/java/com/ebdapo/backend/entity/apidetails/BenutzerAPIDetails.java
@@ -19,5 +19,6 @@ public class BenutzerAPIDetails {
     private String apotheke; //id
     private String oldPassword;
     private String newPassword;
+    private String passwort;
 
 }
diff --git a/Backend/src/main/java/com/ebdapo/backend/entity/apidetails/BetaeubungsmittelAPIDetails.java b/Backend/src/main/java/com/ebdapo/backend/entity/apidetails/BetaeubungsmittelAPIDetails.java
index 8f3f4fdb33d38a690d2c418b6cee600387a049e5..e0441e150d00d7640a21a03c9fcd68fedfd85d02 100644
--- a/Backend/src/main/java/com/ebdapo/backend/entity/apidetails/BetaeubungsmittelAPIDetails.java
+++ b/Backend/src/main/java/com/ebdapo/backend/entity/apidetails/BetaeubungsmittelAPIDetails.java
@@ -15,6 +15,7 @@ public class BetaeubungsmittelAPIDetails {
     private Darreichungsform darreichungsform;
     private Einheit einheit;
     private String apotheke; //id
+    private int menge;
 
 
 }
diff --git a/Backend/src/main/java/com/ebdapo/backend/entity/apidetails/LieferantAPIDetails.java b/Backend/src/main/java/com/ebdapo/backend/entity/apidetails/LieferantAPIDetails.java
index 22f3745716489ebebebe5b08accf07ebe0584501..ec41568a416d3e98c766bb229fc8e0848598e64c 100644
--- a/Backend/src/main/java/com/ebdapo/backend/entity/apidetails/LieferantAPIDetails.java
+++ b/Backend/src/main/java/com/ebdapo/backend/entity/apidetails/LieferantAPIDetails.java
@@ -12,7 +12,6 @@ public class LieferantAPIDetails {
     private String id;
     private String name;
     private Adresse anschrift;
-    private String apotheke; //id
 
 
 }
diff --git a/Backend/src/main/java/com/ebdapo/backend/restcontroller/ApothekenController.java b/Backend/src/main/java/com/ebdapo/backend/restcontroller/ApothekenController.java
index 010aaf1beff2098d9d134ac11db007ab5cb6db3e..dd799e87d6a2b50ee5e9bf082227c41baaec7a5f 100644
--- a/Backend/src/main/java/com/ebdapo/backend/restcontroller/ApothekenController.java
+++ b/Backend/src/main/java/com/ebdapo/backend/restcontroller/ApothekenController.java
@@ -27,6 +27,7 @@ public class ApothekenController {
 
     @PostMapping("/apotheke")
     public ResponseEntity<?> newApotheke(@RequestBody Apotheke apotheke) {
+
         if(apotheke.getName() == null || apotheke.getEmail() == null || apotheke.getAnschrift() == null) {
             throw new InvalidInputException("Ungültige oder fehlende Angaben");
         }
@@ -53,12 +54,14 @@ public class ApothekenController {
 
     @PutMapping("/apotheke/{apothekeId}")
     public ResponseEntity<?> updateApotheke(@PathVariable String apothekeId, @RequestBody Apotheke newApo) {
-        if(!authController.checkIfAuthorized(authController.getCurrentUsername(), apothekeId)) {
+        //only admin can update apotheke
+        if(!authController.isAdmin(authController.getCurrentUsername(), apothekeId)) {
             return new ResponseEntity<>(HttpStatus.FORBIDDEN);
         }
 
         Apotheke apo = apothekenRepo.findById(apothekeId).orElseThrow(InvalidInputException::new);
         apo.setName(newApo.getName());
+        apo.setEmail(newApo.getEmail());
         if(newApo.getAnschrift() != null){
             apo.getAnschrift().setNummer(newApo.getAnschrift().getNummer());
             apo.getAnschrift().setOrt(newApo.getAnschrift().getOrt());
@@ -73,9 +76,15 @@ public class ApothekenController {
 
     @DeleteMapping("/apotheke/{apothekeId}")
     public ResponseEntity<?> deleteApotheke(@PathVariable String apothekeId) {
+        //only admin can delete apotheke
+        if(!authController.isAdmin(authController.getCurrentUsername(), apothekeId)) {
+            return new ResponseEntity<>(HttpStatus.FORBIDDEN);
+        }
+
         if(!apothekenRepo.existsById(apothekeId)) {
             throw new BadRequestException();
         }
+
         apothekenRepo.deleteById(apothekeId);
         return new ResponseEntity<>(HttpStatus.OK);
     }
diff --git a/Backend/src/main/java/com/ebdapo/backend/restcontroller/ArztController.java b/Backend/src/main/java/com/ebdapo/backend/restcontroller/ArztController.java
index 595edbcd8d2b68438bd2e743c855f2ad86d7e3f7..9ef6619967e03e1da5269f4c4e17a6973e07619a 100644
--- a/Backend/src/main/java/com/ebdapo/backend/restcontroller/ArztController.java
+++ b/Backend/src/main/java/com/ebdapo/backend/restcontroller/ArztController.java
@@ -83,10 +83,6 @@ public class ArztController {
         if(found == null) {
             throw new InvalidInputException("Arzt konnte nicht gefunden werden");
         }
-
-        if(arzt.getApotheke() == null || arzt.getApotheke().isEmpty()){
-            throw new InvalidInputException("ApothekenId darf nicht leer sein");
-        }
         found.setName(arzt.getName());
 
         found.getAnschrift().setPlz(arzt.getAnschrift().getPlz());
@@ -94,7 +90,6 @@ public class ArztController {
         found.getAnschrift().setStrasse(arzt.getAnschrift().getStrasse());
         found.getAnschrift().setNummer(arzt.getAnschrift().getNummer());
 
-        found.setApotheke(apothekenRepo.findById(arzt.getApotheke()).orElseThrow(InvalidInputException::new));
         arztRepo.save(found);
         return new ResponseEntity<>(found, HttpStatus.OK);
     }
diff --git a/Backend/src/main/java/com/ebdapo/backend/restcontroller/BenutzerController.java b/Backend/src/main/java/com/ebdapo/backend/restcontroller/BenutzerController.java
index d4ff3ad1b0b801ed7282f002724722d6938b2fdd..f68bb616d2d2d8c2a759331fd1825c6fab176609 100644
--- a/Backend/src/main/java/com/ebdapo/backend/restcontroller/BenutzerController.java
+++ b/Backend/src/main/java/com/ebdapo/backend/restcontroller/BenutzerController.java
@@ -56,31 +56,34 @@ public class BenutzerController {
     }
 
     @PostMapping("/apotheke/{apothekeId}/benutzer")
-    public ResponseEntity<?> createNewBenutzer(@PathVariable String apothekeId, @RequestBody Benutzer benutzer) {
+    public ResponseEntity<?> createNewBenutzer(@PathVariable String apothekeId, @RequestBody BenutzerAPIDetails benutzerData) {
         if(!authController.checkIfAuthorized(authController.getCurrentUsername(), apothekeId)) {
             return new ResponseEntity<>(HttpStatus.FORBIDDEN);
         }
 
-        benutzer.setApotheke(apothekeRepo.findById(apothekeId).orElseThrow(InvalidInputException::new));
-
-        String nutzername = benutzer.getNutzername();
-        String name = benutzer.getName();
-        String vorname = benutzer.getVorname();
-        String passwort = benutzer.getPasswort();
-
-        if(nutzername == null || benutzer.getApotheke() == null || vorname == null || name == null ||
-                passwort == null || benutzer.getRolle() == null){
+        if(benutzerData.getPasswort() == null || benutzerData.getVorname() == null || benutzerData.getName() == null
+                || benutzerData.getRolle() == null) {
            throw new InvalidInputException("Ungültige oder fehlende Angaben");
-        }else if(nutzername.length() < 4 ||vorname.length() < 1 || name.length() < 1 || passwort.length() < 5) {
+        }else if(benutzerData.getNutzername().length() < 4 || benutzerData.getVorname().length() < 1 ||
+                benutzerData.getName().length() < 1 || benutzerData.getPasswort().length() < 5) {
             throw new InvalidInputException("Ungültige oder fehlende Angaben");
         }
 
-        if(checkIfUserExists(benutzer)) {
+        if(checkIfUserExists(benutzerData)) {
            throw new InvalidInputException("Benutzer existiert bereits");
         }
 
+        Benutzer benutzer = new Benutzer();
+
+        benutzer.setApotheke(apothekeRepo.findById(apothekeId).orElseThrow(InvalidInputException::new));
+        benutzer.setNutzername(benutzerData.getNutzername());
+        benutzer.setName(benutzerData.getName());
+        benutzer.setVorname(benutzerData.getVorname());
+        benutzer.setPasswort(benutzerData.getPasswort());
+        benutzer.setRolle(benutzerData.getRolle());
+
         benutzer.setId(UUID.randomUUID().toString());
-        benutzer.setPasswort(new BCryptPasswordEncoder().encode(benutzer.getPasswort()));
+        benutzer.setPasswort(new BCryptPasswordEncoder().encode(benutzerData.getPasswort()));
         benutzer.setAktiv(true);
         benutzerRepo.save(benutzer);
         return new ResponseEntity<>(benutzer, HttpStatus.CREATED);
@@ -96,41 +99,67 @@ public class BenutzerController {
 
     @PutMapping("/apotheke/{apothekeId}/benutzer/{benutzerId}")
     public ResponseEntity<?> updateBenutzerById(@PathVariable String apothekeId, @PathVariable String benutzerId, @RequestBody BenutzerAPIDetails newBenutzer){
-        if(!authController.checkIfAuthorizedAndSameUserOrAdmin(authController.getCurrentUsername(), apothekeId, benutzerId)) {
+        String authorized = authController.checkIfAuthorizedAndSameUserOrAdmin(authController.getCurrentUsername(), apothekeId, benutzerId);
+        if(authorized == null) {
             return new ResponseEntity<>(HttpStatus.FORBIDDEN);
         }
 
+
         if(!benutzerRepo.existsById(benutzerId)){
             throw new InvalidInputException("Falsche ID");
         }
 
         Benutzer benutzer = benutzerRepo.findById(benutzerId).orElseThrow(InvalidInputException::new);
 
+        if(usernameIsTaken(benutzer.getNutzername(), newBenutzer.getNutzername())) {
+            return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
+        }
+
+
+        boolean reqFromAdmin = authorized.equals("admin");
+
         //checks if the user is authorized to change it (entering valid password)
         String pw = newBenutzer.getOldPassword() ;
-        if(pw != null && !pw.isBlank() && !benutzer.getRolle().toString().toLowerCase().equals("admin")){
-            if(!new BCryptPasswordEncoder().matches(pw, benutzer.getPasswort())) {
-                throw new InvalidInputException("Falsches Passwort");
+
+        if(!reqFromAdmin){
+            if(pw != null && !pw.isBlank()){
+                if(!new BCryptPasswordEncoder().matches(pw, benutzer.getPasswort())) {
+                    return new ResponseEntity<>(HttpStatus.FORBIDDEN);
+                }
+            }else {
+                return new ResponseEntity<>(HttpStatus.FORBIDDEN);
             }
-        }else {
-            throw new InvalidInputException("Passwort wird benötigt");
         }
 
         Apotheke apo = apothekeRepo.findById(apothekeId).orElseThrow(InvalidInputException::new);
         benutzer.setName(newBenutzer.getName());
         benutzer.setNutzername(newBenutzer.getNutzername());
         benutzer.setVorname(newBenutzer.getVorname());
+
+        //Nur Admin kann aktiv oder inaktiv setzen
+        if(reqFromAdmin){
+            benutzer.setAktiv(newBenutzer.isAktiv());
+        }
+
+        //nur admin kann Rolle ändern
+        if(reqFromAdmin && newBenutzer.getRolle() != null){
+            benutzer.setRolle(newBenutzer.getRolle());
+        }
+
         if(newBenutzer.getNewPassword() != null){
             benutzer.setPasswort(new BCryptPasswordEncoder().encode(newBenutzer.getNewPassword()));
         }
-        benutzer.setAktiv(newBenutzer.isAktiv());
-        benutzer.setRolle(newBenutzer.getRolle());
+
         benutzer.setApotheke(apo);
 
         benutzerRepo.save(benutzer);
         return new ResponseEntity<>(benutzer, HttpStatus.OK);
     }
 
+    private boolean usernameIsTaken(String current, String newName) {
+        return !current.equals(newName) && benutzerRepo.getBenutzerByUsername(newName) != null;
+    }
+
     @DeleteMapping("/apotheke/{apothekeId}/benutzer/{benutzerId}")
     public ResponseEntity<?> deleteUser(@PathVariable String apothekeId, @PathVariable String benutzerId) {
         if(!authController.checkIfAuthorized(authController.getCurrentUsername(), apothekeId)) {
@@ -154,7 +183,7 @@ public class BenutzerController {
     }
 
 
-    private boolean checkIfUserExists(Benutzer benutzer) {
+    private boolean checkIfUserExists(BenutzerAPIDetails benutzer) {
         return benutzerRepo.getBenutzerByUsername(benutzer.getNutzername()) != null;
     }
 }
diff --git a/Backend/src/main/java/com/ebdapo/backend/restcontroller/BetaeubungsmittelBuchungController.java b/Backend/src/main/java/com/ebdapo/backend/restcontroller/BetaeubungsmittelBuchungController.java
index e480498d9ba804eeadeef03d578f39e3fc257e3b..2f5fbfa81dd952c90197670ca6b42b12768260a3 100644
--- a/Backend/src/main/java/com/ebdapo/backend/restcontroller/BetaeubungsmittelBuchungController.java
+++ b/Backend/src/main/java/com/ebdapo/backend/restcontroller/BetaeubungsmittelBuchungController.java
@@ -142,6 +142,7 @@ public class BetaeubungsmittelBuchungController {
             zugang.setPruefdatum(btDetails.getPruefdatum());
 
             Betaeubungsmittel btm = btmRepo.findById(btDetails.getBtm()).orElseThrow(InvalidInputException::new);
+            btm.setMenge(btm.getMenge()+zugang.getMenge());
             zugang.setBtm(btm);
 
             Benutzer benutzer = benutzerRepository.findById(btDetails.getBenutzer()).orElseThrow(InvalidInputException::new);
@@ -151,6 +152,9 @@ public class BetaeubungsmittelBuchungController {
             Lieferant lieferant = lieferantRepo.findById(btDetails.getLieferant()).orElseThrow(InvalidInputException::new);
             zugang.setLieferant(lieferant);
             zugang.setAnfordergungsschein(btDetails.getAnforderungsschein());
+
+
+            btmRepo.save(btm);
             zugangRepository.save(zugang);
             return new ResponseEntity<>(zugang, HttpStatus.CREATED);
 
@@ -163,6 +167,7 @@ public class BetaeubungsmittelBuchungController {
             abgang.setPruefdatum(btDetails.getPruefdatum());
 
             Betaeubungsmittel btm = btmRepo.findById(btDetails.getBtm()).orElseThrow(InvalidInputException::new);
+            btm.setMenge(btm.getMenge()-abgang.getMenge());
             abgang.setBtm(btm);
 
             Benutzer benutzer = benutzerRepository.findById(btDetails.getBenutzer()).orElseThrow(InvalidInputException::new);
@@ -174,6 +179,8 @@ public class BetaeubungsmittelBuchungController {
             Arzt arzt = arztRepository.findById(btDetails.getArzt()).orElseThrow(InvalidInputException::new);
             abgang.setArzt(arzt);
             abgang.setRezept(btDetails.getRezept());
+
+            btmRepo.save(btm);
             abgangRepository.save(abgang);
             return new ResponseEntity<>(abgang, HttpStatus.CREATED);
         }else {
@@ -206,9 +213,13 @@ public class BetaeubungsmittelBuchungController {
         }
 
         Zugang z = zugangRepository.findByIds(btmbuchungId, apothekeId);
-
         if(z != null){
+            Betaeubungsmittel btm = z.getBtm();
+            int previousMenge = z.getMenge();
             if(!pruefer){
+                //Wenn eine Buchung aktualisiert wird, muss die vorherige Mengenberechnung
+                //rückgängig gemacht werden
+                btm.setMenge(btm.getMenge()-previousMenge+newBtmBuchung.getMenge());
                 z.setBenutzer(benutzerRepository.findById(newBtmBuchung.getBenutzer()).orElseThrow(InvalidInputException::new));
                 z.setBtm(btmRepo.findById(newBtmBuchung.getBtm()).orElseThrow(InvalidInputException::new));
                 z.setMenge(newBtmBuchung.getMenge());
@@ -216,13 +227,17 @@ public class BetaeubungsmittelBuchungController {
                 z.setLieferant(lieferantRepo.findById(newBtmBuchung.getLieferant()).orElseThrow(InvalidInputException::new));
             }
             z.setPruefdatum(newBtmBuchung.getPruefdatum());
+            btmRepo.save(btm);
             zugangRepository.save(z);
             return new ResponseEntity<>(z, HttpStatus.OK);
         }
 
         Abgang a = abgangRepository.findByIds(btmbuchungId, apothekeId);
         if(a != null){
+            Betaeubungsmittel btm = a.getBtm();
+            int previousMenge = a.getMenge();
             if(!pruefer){
+                btm.setMenge(btm.getMenge()+previousMenge-newBtmBuchung.getMenge());
                 a.setBenutzer(benutzerRepository.findById(newBtmBuchung.getBenutzer()).orElseThrow(InvalidInputException::new));
                 a.setBtm(btmRepo.findById(newBtmBuchung.getBtm()).orElseThrow(InvalidInputException::new));
                 a.setMenge(newBtmBuchung.getMenge());
@@ -231,6 +246,7 @@ public class BetaeubungsmittelBuchungController {
                 a.setArzt(arztRepository.findById(newBtmBuchung.getArzt()).orElseThrow(InvalidInputException::new));
             }
             a.setPruefdatum(newBtmBuchung.getPruefdatum());
+            btmRepo.save(btm);
             abgangRepository.save(a);
             return new ResponseEntity<>(a, HttpStatus.OK);
         }else {
diff --git a/Backend/src/main/java/com/ebdapo/backend/restcontroller/BetaeubungsmittelController.java b/Backend/src/main/java/com/ebdapo/backend/restcontroller/BetaeubungsmittelController.java
index 7cfa695142606143aa8c4863d72c27c5a0439b9d..61ed10c3b11ccc8eeaae0ebadc84d2cd5e1cbe96 100644
--- a/Backend/src/main/java/com/ebdapo/backend/restcontroller/BetaeubungsmittelController.java
+++ b/Backend/src/main/java/com/ebdapo/backend/restcontroller/BetaeubungsmittelController.java
@@ -71,12 +71,13 @@ public class BetaeubungsmittelController {
             throw new InvalidInputException("Betaeubungsmittel konnte nicht gefunden werden");
         }
 
-        Apotheke apo = apothekeRepo.findById(newBtm.getApotheke()).orElseThrow(InvalidInputException::new);
+        Apotheke apo = apothekeRepo.findById(apothekeId).orElseThrow(InvalidInputException::new);
 
         btm.setName(newBtm.getName());
         btm.setDarreichungsform(newBtm.getDarreichungsform());
         btm.setEinheit(newBtm.getEinheit());
         btm.setApotheke(apo);
+        btm.setMenge(newBtm.getMenge());
 
         btmRepo.save(btm);
         return new ResponseEntity<>(btm, HttpStatus.OK);
diff --git a/Backend/src/main/java/com/ebdapo/backend/restcontroller/LieferantController.java b/Backend/src/main/java/com/ebdapo/backend/restcontroller/LieferantController.java
index 9ed868ec1e8ebc6c17f452153fc9a336523a0ae7..b640acd481452a215ce55462c5898c7e5289a053 100644
--- a/Backend/src/main/java/com/ebdapo/backend/restcontroller/LieferantController.java
+++ b/Backend/src/main/java/com/ebdapo/backend/restcontroller/LieferantController.java
@@ -80,18 +80,12 @@ public class LieferantController {
             throw new InvalidInputException("Lieferant konnte nicht gefunden werden");
         }
 
-        if(newLiefer.getApotheke() == null || newLiefer.getApotheke().isEmpty()){
-            throw new InvalidInputException("ApothekenId darf nicht leer sein");
-        }
-
         found.setName(newLiefer.getName());
         found.getAnschrift().setPlz(newLiefer.getAnschrift().getPlz());
         found.getAnschrift().setOrt(newLiefer.getAnschrift().getOrt());
         found.getAnschrift().setStrasse(newLiefer.getAnschrift().getStrasse());
         found.getAnschrift().setNummer(newLiefer.getAnschrift().getNummer());
 
-        found.setApotheke(apothekenRepo.findById(newLiefer.getApotheke()).orElseThrow(InvalidInputException::new));
-
         lieferantRepo.save(found);
         return new ResponseEntity<>(found, HttpStatus.OK);
     }
diff --git a/Backend/src/main/java/com/ebdapo/backend/security/auth/AuthenticationController.java b/Backend/src/main/java/com/ebdapo/backend/security/auth/AuthenticationController.java
index 022dce9a912a4d7215bcaa6245cd0e400f486e54..001d52dde18eb749ca012784f5ca1b055e679720 100644
--- a/Backend/src/main/java/com/ebdapo/backend/security/auth/AuthenticationController.java
+++ b/Backend/src/main/java/com/ebdapo/backend/security/auth/AuthenticationController.java
@@ -65,11 +65,25 @@ public class AuthenticationController {
         }
     }
 
-    public boolean checkIfAuthorizedAndSameUserOrAdmin(String username, String apothekeId, String benutzerId) {
+    public String checkIfAuthorizedAndSameUserOrAdmin(String username, String apothekeId, String benutzerId) {
         if(username == null || apothekeId == null){
+            return null;
+        }
+        Benutzer b  = benutzerRepo.getBenutzerWithApotheke(username, apothekeId);
+        if(b.getRolle().toString().toLowerCase().equals("admin")){
+            return "admin";
+        }else if(b.getId().equals(benutzerId)) {
+            return "user";
+        }
+        //unauthorized
+        return null ;
+    }
+
+    public boolean isAdmin(String username, String apothekeId) {
+        if(username == null ){
             return false;
         }
         Benutzer b  = benutzerRepo.getBenutzerWithApotheke(username, apothekeId);
-        return b.getRolle().toString().toLowerCase().equals("admin") || b.getId().equals(benutzerId);
+        return b.getRolle().toString().toLowerCase().equals("admin");
     }
 }
diff --git a/Datenbank/EDB-Apo_dbdata.sql b/Datenbank/EDB-Apo_dbdata.sql
index 379f33e28fab0925f541e4681f0275a1ecc47ff2..112cbde25aec3373e0e68fe0fafac5f263be977f 100644
--- a/Datenbank/EDB-Apo_dbdata.sql
+++ b/Datenbank/EDB-Apo_dbdata.sql
@@ -9,27 +9,36 @@ INSERT INTO adresse_t(id, strasse, nummer, ort, plz) values ('8', 'Honigstrasse'
 INSERT INTO adresse_t(id, strasse, nummer, ort, plz) values ('9', 'Hausstrasse', '16/1a','Reutlingen', '72764' );
 INSERT INTO adresse_t(id, strasse, nummer, ort, plz) values ('10', 'Neckartalstrasse', '153','Stuttgart', '70376' );
 INSERT INTO adresse_t(id, strasse, nummer, ort, plz) values ('11', 'Friozheimerstrasse', '7','Stuttgart', '70499' );
+INSERT INTO adresse_t(id, strasse, nummer, ort, plz) values ('12', 'Milchstrasse', '14a','Dresden', '01139' );
+INSERT INTO adresse_t(id, strasse, nummer, ort, plz) values ('13', 'Hasenbergstrasse', '8','Dresden', '01139' );
+INSERT INTO adresse_t(id, strasse, nummer, ort, plz) values ('14', 'Königstrasse', '56','Dresden', '01139' );
+INSERT INTO adresse_t(id, strasse, nummer, ort, plz) values ('15', 'Apothekerstrasse', '23','Dresden', '01126' );
+INSERT INTO adresse_t(id, strasse, nummer, ort, plz) values ('16', 'Honigstrasse', '1','Reutlingen', '72764' );
+INSERT INTO adresse_t(id, strasse, nummer, ort, plz) values ('17', 'Hausstrasse', '24','Reutlingen', '72764' );
+INSERT INTO adresse_t(id, strasse, nummer, ort, plz) values ('18', 'Echazstrasse', '65/1','Reutlingen', '54326' );
+INSERT INTO adresse_t(id, strasse, nummer, ort, plz) values ('19', 'Honigstrasse', '5','Reutlingen', '72764' );
+
 
 INSERT INTO apotheke(id, name, email, anschrift) values ('1', 'Löwen Apotheke','apo1@outlook.de', '1');
 INSERT INTO apotheke(id, name, email, anschrift) values ('2', 'Dorf Apotheke', 'apo2@outlook.de', '2');
 INSERT INTO apotheke(id, name, email, anschrift) values ('3', 'Hirsch Apotheke', 'apo3@outlook.de', '5');
 
-INSERT INTO btm(id,name, darreichungsform, einheit,apotheke) values ('1', 'Capros Akut 20 mg', 'Tbl', 'Stueck', '1');
-INSERT INTO btm(id,name, darreichungsform, einheit,apotheke) values ('2', 'Carehoxal 10mg', 'RTA', 'Stueck', '1');
-INSERT INTO btm(id,name, darreichungsform, einheit,apotheke) values ('3', 'Dipidolor', 'Ampullen', 'Stueck', '1');
-INSERT INTO btm(id,name, darreichungsform, einheit,apotheke) values ('4', 'Dronabinol 25mg/ml','Rezeptursubstanz','mg', '1');
-INSERT INTO btm(id,name, darreichungsform, einheit,apotheke) values ('5', 'Elvanse 30 mg', 'HKP', 'Stueck', '1');
-INSERT INTO btm(id,name, darreichungsform, einheit,apotheke) values ('6', 'Fentanyl-Hexal Pfl 37,5 ug/Std.', 'Pfl', 'Stueck', '2');
-INSERT INTO btm(id,name, darreichungsform, einheit,apotheke) values ('7', 'Carehoxal 10mg', 'RTA', 'Stueck', '2');
-INSERT INTO btm(id,name, darreichungsform, einheit,apotheke) values ('8', 'Dipidolor', 'Ampullen', 'Stueck', '2');
-INSERT INTO btm(id,name, darreichungsform, einheit,apotheke) values ('9', 'Equasim Ret. 20mg', 'HKP', 'Stueck', '2');
-INSERT INTO btm(id,name, darreichungsform, einheit,apotheke) values ('10','Elvanse 30 mg' ,'HKP', 'Stueck', '2');
-INSERT INTO btm(id,name, darreichungsform, einheit,apotheke) values ('11', 'Oxycodon/Nalox Beta 10/5', 'RTA', 'Stueck', '3');
-INSERT INTO btm(id,name, darreichungsform, einheit,apotheke) values ('12', 'Oxycodon/Nalox 20/10 mg Beta', 'RTA', 'Stueck', '3');
-INSERT INTO btm(id,name, darreichungsform, einheit,apotheke) values ('13', 'Oxiconoica 10 mg', 'RTA', 'Stueck', '3');
-INSERT INTO btm(id,name, darreichungsform, einheit,apotheke) values ('14', 'Dipidolor', 'Ampullen', 'Stueck', '3');
-INSERT INTO btm(id,name, darreichungsform, einheit,apotheke) values ('15', 'Palexia', 'RTA', 'Stueck', '3');
-INSERT INTO btm(id,name, darreichungsform, einheit,apotheke) values ('16','Elvanse 30 mg','HKP', 'Stueck', '3');
+INSERT INTO btm(id,name, darreichungsform, einheit,apotheke, menge) values ('1', 'Capros Akut 20 mg', 'Tbl', 'Stueck', '1', 0);
+INSERT INTO btm(id,name, darreichungsform, einheit,apotheke, menge) values ('2', 'Carehoxal 10mg', 'RTA', 'Stueck', '1', 0);
+INSERT INTO btm(id,name, darreichungsform, einheit,apotheke, menge) values ('3', 'Dipidolor', 'Ampullen', 'Stueck', '1', 0);
+INSERT INTO btm(id,name, darreichungsform, einheit,apotheke, menge) values ('4', 'Dronabinol 25mg/ml','Rezeptursubstanz','mg', '1', 0);
+INSERT INTO btm(id,name, darreichungsform, einheit,apotheke, menge) values ('5', 'Elvanse 30 mg', 'HKP', 'Stueck', '1', 0);
+INSERT INTO btm(id,name, darreichungsform, einheit,apotheke, menge) values ('6', 'Fentanyl-Hexal Pfl 37,5 ug/Std.', 'Pfl', 'Stueck', '2', 0);
+INSERT INTO btm(id,name, darreichungsform, einheit,apotheke, menge) values ('7', 'Carehoxal 10mg', 'RTA', 'Stueck', '2', 0);
+INSERT INTO btm(id,name, darreichungsform, einheit,apotheke, menge) values ('8', 'Dipidolor', 'Ampullen', 'Stueck', '2', 0);
+INSERT INTO btm(id,name, darreichungsform, einheit,apotheke, menge) values ('9', 'Equasim Ret. 20mg', 'HKP', 'Stueck', '2', 0);
+INSERT INTO btm(id,name, darreichungsform, einheit,apotheke, menge) values ('10','Elvanse 30 mg' ,'HKP', 'Stueck', '2', 0);
+INSERT INTO btm(id,name, darreichungsform, einheit,apotheke, menge) values ('11', 'Oxycodon/Nalox Beta 10/5', 'RTA', 'Stueck', '3', 0);
+INSERT INTO btm(id,name, darreichungsform, einheit,apotheke, menge) values ('12', 'Oxycodon/Nalox 20/10 mg Beta', 'RTA', 'Stueck', '3', 0);
+INSERT INTO btm(id,name, darreichungsform, einheit,apotheke, menge) values ('13', 'Oxiconoica 10 mg', 'RTA', 'Stueck', '3', 0);
+INSERT INTO btm(id,name, darreichungsform, einheit,apotheke, menge) values ('14', 'Dipidolor', 'Ampullen', 'Stueck', '3', 0);
+INSERT INTO btm(id,name, darreichungsform, einheit,apotheke, menge) values ('15', 'Palexia', 'RTA', 'Stueck', '3', 0);
+INSERT INTO btm(id,name, darreichungsform, einheit,apotheke, menge) values ('16','Elvanse 30 mg','HKP', 'Stueck', '3', 0);
 
 INSERT INTO benutzer(id , name, vorname, nutzername, passwort, rolle, aktiv, apotheke) values ('1', 'Heller', 'Helga', 'nutzername1', '123_abcd', 'ADMIN', true, '1');
 INSERT INTO benutzer(id , name, vorname, nutzername, passwort, rolle, aktiv, apotheke) values ('2', 'Kurz', 'Martin', 'benutzername2', '123_zbgvf', 'Pruefer', true, '1');
@@ -49,15 +58,15 @@ INSERT INTO benutzer(id , name, vorname, nutzername, passwort, rolle, aktiv, apo
 INSERT INTO benutzer(id , name, vorname, nutzername, passwort, rolle, aktiv, apotheke) values ('15', 'pruefer', 'pruefer', 'pruefer', '$2a$10$HkldGXpGNCKV/u1c9dT1ZuUgCEHvtFgDGcVEQjAMNzz96ERJodIyW', 'PRUEFER', true, '1');
 
 
-INSERT INTO lieferant (id, name, anschrift, apotheke) values ('1', 'GEHE', '10', '1');
-INSERT INTO lieferant (id, name, anschrift, apotheke) values ('2', 'GEHE', '10', '1');
-INSERT INTO lieferant (id, name, anschrift, apotheke) values ('3', 'GEHE', '10', '1');
-INSERT INTO lieferant (id, name, anschrift, apotheke) values ('4', 'Alliance Healthcare GmbH', '11', '2');
-INSERT INTO lieferant (id, name, anschrift, apotheke) values ('5', 'Alliance Healthcare GmbH', '11', '2');
-INSERT INTO lieferant (id, name, anschrift, apotheke) values ('6', 'Alliance Healthcare GmbH', '11', '2');
-INSERT INTO lieferant (id, name, anschrift, apotheke) values ('7', 'Noweda','1', '3');
-INSERT INTO lieferant (id, name, anschrift, apotheke) values ('8', 'Noweda','1', '3');
-INSERT INTO lieferant (id, name, anschrift, apotheke) values ('9', 'Noweda','1', '3');
+INSERT INTO lieferant (id, name, anschrift, apotheke) values ('1', 'Browsecat', '11', '1');
+INSERT INTO lieferant (id, name, anschrift, apotheke) values ('2', 'Wikivu', '12', '1');
+INSERT INTO lieferant (id, name, anschrift, apotheke) values ('3', 'Demizz', '13', '1');
+INSERT INTO lieferant (id, name, anschrift, apotheke) values ('4', 'Rhyzio', '14', '2');
+INSERT INTO lieferant (id, name, anschrift, apotheke) values ('5', 'Tagtune', '15', '2');
+INSERT INTO lieferant (id, name, anschrift, apotheke) values ('6', 'Jayo', '16', '2');
+INSERT INTO lieferant (id, name, anschrift, apotheke) values ('7', 'Mymm','17', '3');
+INSERT INTO lieferant (id, name, anschrift, apotheke) values ('8', 'Jabberbean','18', '3');
+INSERT INTO lieferant (id, name, anschrift, apotheke) values ('9', 'Topiczoom','19', '3');
 
 INSERT INTO arzt (id, name, anschrift, apotheke) value ('1', 'Dr. Krause', '6', '1');
 INSERT INTO arzt (id, name, anschrift, apotheke) value ('2', 'Dr. Michellmann', '7', '1');
diff --git a/Datenbank/EDB-Apo_dbdec.sql b/Datenbank/EDB-Apo_dbdec.sql
index c664fe2b55862bf9c55cc5385d68fd52222146bb..ef09b628a44ebf5b300100081a7f607b4b6d32ae 100644
--- a/Datenbank/EDB-Apo_dbdec.sql
+++ b/Datenbank/EDB-Apo_dbdec.sql
@@ -34,6 +34,7 @@ CREATE TABLE btm(
 	darreichungsform ENUM ('Tbl', 'Trp', 'Sup', 'RTA', 'RKA', 'Ampullen', 'Rezeptursubstanz', 'HKP', 'Pfl') NOT NULL,
 	einheit ENUM('g','mg','ml', 'Stueck') NOT NULL,
 	apotheke VARCHAR (40) NOT NULL,
+	menge INTEGER,
 	PRIMARY KEY (id),
 	FOREIGN KEY (apotheke) REFERENCES apotheke (id) ON UPDATE CASCADE ON DELETE CASCADE
 );
diff --git a/README.md b/README.md
index a9056d9ed27b5570b3ea38e935a8f399e29e8fbf..7ac582a38d224e769860c8e55e6078857677b706 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
 ## Docker Container bauen
 
 ```
-docker-compose up down #only needed if containers already exist
+docker-compose down #only needed if containers already exist
 cd Backend
 mvn package -Dmaven.test.skip=true
 cd ..