diff --git a/controller/nucleus/deviceServiceMock.go b/controller/nucleus/deviceServiceMock.go
new file mode 100644
index 0000000000000000000000000000000000000000..0cd887fb4f077ba94c963ec7a6828e32042efc67
--- /dev/null
+++ b/controller/nucleus/deviceServiceMock.go
@@ -0,0 +1,91 @@
+package nucleus
+
+import (
+	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/device"
+	"code.fbi.h-da.de/danet/gosdn/controller/store"
+	"github.com/google/uuid"
+)
+
+// DeviceServiceMock provides a in-memory implementation for multiple stores.
+type DeviceServiceMock struct {
+	Store           map[uuid.UUID]device.Device
+	nameLookupTable map[string]uuid.UUID
+}
+
+// NewDeviceServiceMock returns a specific in-memory store for device service.
+func NewDeviceServiceMock() device.Service {
+	return &DeviceServiceMock{
+		Store:           make(map[uuid.UUID]device.Device),
+		nameLookupTable: make(map[string]uuid.UUID),
+	}
+}
+
+// Add adds a item device.Device
+func (t *DeviceServiceMock) Add(item device.Device) error {
+	_, ok := t.Store[item.ID()]
+	if ok {
+		return nil
+	}
+
+	t.Store[item.ID()] = item
+	t.nameLookupTable[item.Name()] = item.ID()
+
+	return nil
+}
+
+// Update updates a item device.Device
+func (t *DeviceServiceMock) Update(item device.Device) error {
+	_, ok := t.Store[item.ID()]
+	if ok {
+		return nil
+	}
+
+	t.Store[item.ID()] = item
+	t.nameLookupTable[item.Name()] = item.ID()
+
+	return nil
+}
+
+// Delete deletes a item device.Device
+func (t *DeviceServiceMock) Delete(item device.Device) error {
+	delete(t.Store, item.ID())
+
+	return nil
+}
+
+// Get gets a item device.Device
+func (t *DeviceServiceMock) Get(query store.Query) (device.Device, error) {
+	// First search for direct hit on UUID.
+	item, ok := t.Store[query.ID]
+	if !ok {
+		// Second search for name
+		id, ok := t.nameLookupTable[query.Name]
+		if !ok {
+			return nil, nil
+		}
+
+		item, ok := t.Store[id]
+		if !ok {
+			return nil, nil
+		}
+
+		return item, nil
+	}
+
+	return item, nil
+}
+
+// GetAll gets all items
+func (t *DeviceServiceMock) GetAll() ([]device.LoadedDevice, error) {
+	var allItems []device.LoadedDevice
+
+	for _, item := range t.Store {
+		allItems = append(allItems, device.LoadedDevice{
+			ID:   item.ID().String(),
+			Name: item.Name(),
+			SBI:  item.SBI().ID().String(),
+		})
+	}
+
+	return allItems, nil
+}