diff --git a/geant_service_orchestrator/services/ipam.py b/geant_service_orchestrator/services/ipam.py
new file mode 100644
index 0000000000000000000000000000000000000000..24999bd45ad72f9c73449fdb4cec04c0932f809a
--- /dev/null
+++ b/geant_service_orchestrator/services/ipam.py
@@ -0,0 +1,30 @@
+import ipaddress
+from pydantic import BaseSettings
+from geant_service_orchestrator import settings
+
+
+class ServiceNetworks(BaseSettings)
+    v4: ipaddress.IPv4Network
+    v6: ipaddress.IPv6Network
+
+
+class HostAddresses(BaseSettings):
+    v4: ipaddress.IPv4Address
+    v6: ipaddress.IPv6Address
+
+
+def new_service_networks(
+        ipam: settings.IPAMParams,
+        service_params: settings.ServiceNetworkParams) -> ServiceNetworks:
+    # TODO: load from ipam
+    # cf. https://gitlab.geant.org/goat/gap-jenkins/-/blob/development/service-editor/gap_service_editor/ipam.py#L35-66  # noqa: E501
+    return ServiceNetworks(
+        v4=ipaddress.IPv4Network('10.0.0.0/24'),
+        v6=ipaddress.IPv6Network('dead:beef::/120'))
+
+
+def new_host_address(fqdn: str, networks: ServiceNetworks) -> HostAddress:
+    # TODO: load from ipam
+    return HostAddresses(
+        v4=ipaddress.IPv4Address('10.0.0.1'),
+        v6=ipaddress.IPv6Address('dead:beef::1'))