diff --git a/core/src/main/java/de/srsoftware/umbrella/core/model/Location.java b/core/src/main/java/de/srsoftware/umbrella/core/model/Location.java
index db04e22..0dab814 100644
--- a/core/src/main/java/de/srsoftware/umbrella/core/model/Location.java
+++ b/core/src/main/java/de/srsoftware/umbrella/core/model/Location.java
@@ -1,13 +1,11 @@
 /* © SRSoftware 2025 */
 package de.srsoftware.umbrella.core.model;
 
-import de.srsoftware.tools.Mappable;
-
 import static de.srsoftware.umbrella.core.Constants.*;
 
+import de.srsoftware.tools.Mappable;
 import java.sql.ResultSet;
 import java.sql.SQLException;
-import java.util.HashMap;
 import java.util.Map;
 
 public class Location implements Mappable {
diff --git a/frontend/src/routes/stock/Locations.svelte b/frontend/src/routes/stock/Locations.svelte
index c58a815..5a8567d 100644
--- a/frontend/src/routes/stock/Locations.svelte
+++ b/frontend/src/routes/stock/Locations.svelte
@@ -1,9 +1,25 @@
 
 
 
@@ -13,7 +29,7 @@
         
     
     {#each locations as location}
-    - 
+    
 -  toggleChildren(e, location)} class={location.locations?'expanded':'collapsed'}>
         {location.name}
         {#if location.locations}
         
diff --git a/project/src/main/java/de/srsoftware/umbrella/project/ProjectModule.java b/project/src/main/java/de/srsoftware/umbrella/project/ProjectModule.java
index dcb7f1c..db03487 100644
--- a/project/src/main/java/de/srsoftware/umbrella/project/ProjectModule.java
+++ b/project/src/main/java/de/srsoftware/umbrella/project/ProjectModule.java
@@ -9,12 +9,13 @@ import static de.srsoftware.umbrella.core.Paths.SEARCH;
 import static de.srsoftware.umbrella.core.Util.mapValues;
 import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.*;
 import static de.srsoftware.umbrella.core.model.Permission.*;
+import static de.srsoftware.umbrella.core.model.Permission.OWNER;
 import static de.srsoftware.umbrella.core.model.Status.OPEN;
 import static de.srsoftware.umbrella.core.model.Status.PREDEFINED;
 import static de.srsoftware.umbrella.project.Constants.CONFIG_DATABASE;
 import static java.lang.Boolean.TRUE;
 import static java.net.HttpURLConnection.HTTP_BAD_REQUEST;
-import static de.srsoftware.umbrella.core.model.Permission.OWNER;
+
 import com.sun.net.httpserver.HttpExchange;
 import de.srsoftware.configuration.Configuration;
 import de.srsoftware.tools.Path;
diff --git a/stock/src/main/java/de/srsoftware/umbrella/stock/Constants.java b/stock/src/main/java/de/srsoftware/umbrella/stock/Constants.java
index 873b436..d2e126c 100644
--- a/stock/src/main/java/de/srsoftware/umbrella/stock/Constants.java
+++ b/stock/src/main/java/de/srsoftware/umbrella/stock/Constants.java
@@ -5,6 +5,7 @@ public class Constants {
 
 	private Constants(){}
 
+	public static final String BELOW = "below";
 	public static final String CONFIG_DATABASE = "umbrella.modules.stock.database";
 	public static final String ITEM_ID = "item_id";
 	public static final String LOCATIONS = "locations";
diff --git a/stock/src/main/java/de/srsoftware/umbrella/stock/SqliteDb.java b/stock/src/main/java/de/srsoftware/umbrella/stock/SqliteDb.java
index ac67ff6..f677f7b 100644
--- a/stock/src/main/java/de/srsoftware/umbrella/stock/SqliteDb.java
+++ b/stock/src/main/java/de/srsoftware/umbrella/stock/SqliteDb.java
@@ -19,7 +19,6 @@ import de.srsoftware.umbrella.core.model.Company;
 import de.srsoftware.umbrella.core.model.Item;
 import de.srsoftware.umbrella.core.model.Location;
 import de.srsoftware.umbrella.core.model.UmbrellaUser;
-
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.SQLException;
@@ -145,6 +144,19 @@ public class SqliteDb extends BaseDb implements StockDb {
 		return List.of();
 	}
 
+	@Override
+	public Collection listChildLocations(long parentId) {
+		try {
+			var rs = select(ALL).from(TABLE_LOCATIONS).where(PARENT_LOCATION_ID,equal(parentId)).exec(db);
+			var list = new ArrayList();
+			while (rs.next()) list.add(Location.of(rs));
+			rs.close();
+			return list;
+		} catch (SQLException e){
+			throw databaseException("Failed to load child locations for {0}",parentId);
+		}
+	}
+
 	@Override
 	public Collection listCompanyLocations(Company company) {
 		try {
diff --git a/stock/src/main/java/de/srsoftware/umbrella/stock/StockApi.java b/stock/src/main/java/de/srsoftware/umbrella/stock/StockApi.java
index c39e110..5121d1f 100644
--- a/stock/src/main/java/de/srsoftware/umbrella/stock/StockApi.java
+++ b/stock/src/main/java/de/srsoftware/umbrella/stock/StockApi.java
@@ -8,6 +8,8 @@ import static de.srsoftware.umbrella.core.ModuleRegistry.companyService;
 import static de.srsoftware.umbrella.core.ModuleRegistry.userService;
 import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.missingFieldException;
 import static de.srsoftware.umbrella.stock.Constants.*;
+import static java.lang.System.Logger.Level.WARNING;
+import static java.util.Comparator.comparing;
 
 import com.sun.net.httpserver.HttpExchange;
 import de.srsoftware.configuration.Configuration;
@@ -20,7 +22,6 @@ import de.srsoftware.umbrella.core.exceptions.UmbrellaException;
 import de.srsoftware.umbrella.core.model.Location;
 import de.srsoftware.umbrella.core.model.Token;
 import de.srsoftware.umbrella.core.model.UmbrellaUser;
-
 import java.io.IOException;
 import java.util.*;
 
@@ -55,11 +56,26 @@ public class StockApi extends BaseHandler implements StockService {
 	private boolean getLocations(Path path, UmbrellaUser user, HttpExchange ex) throws IOException {
 		var head = path.pop();
 		return switch (head){
+			case BELOW -> {
+				try {
+					var id = Long.parseLong(path.pop());
+					yield getChildLocations(user, id, ex);
+				} catch (Exception e){
+					yield super.doGet(path,ex);
+				}
+
+			}
 			case OF_USER -> getUserLocations(user,ex);
 			case null, default -> super.doGet(path,ex);
 		};
 	}
 
+	private boolean getChildLocations(UmbrellaUser user, long parentId, HttpExchange ex) throws IOException {
+		LOG.log(WARNING,"No security check implemented for {0}.getChildLocations(user, parentId, ex)!",getClass().getSimpleName()); // TODO check, that user is allowed to request that location
+		return sendContent(ex, stockDb.listChildLocations(parentId).stream().sorted(comparing(l -> l.name().toLowerCase())).map(Location::toMap));
+
+	}
+
 	private boolean getUserLocations(UmbrellaUser user, HttpExchange ex) throws IOException {
 		var result = new ArrayList