diff --git a/controller/api/subManagement.go b/controller/api/subManagement.go
index f439d2413420593e662b10cb191bf647965e7721..afba1a831c60e336e06db5a49da6fab098f2e00e 100644
--- a/controller/api/subManagement.go
+++ b/controller/api/subManagement.go
@@ -35,3 +35,49 @@ func GetAll(ctx context.Context, addr string) (*subpb.GetAllResponse, error) {
 
 	return subClient.GetAll(ctx, req)
 }
+
+// Get fetches detailed info for one specific available subscription.
+func Get(ctx context.Context, addr string, subID string) (*subpb.GetResponse, error) {
+	subClient, err := nbi.SubManagementClient(addr, dialOptions...)
+	if err != nil {
+		return nil, err
+	}
+
+	req := &subpb.GetRequest{
+		Timestamp: time.Now().UnixNano(),
+		Subid:     subID,
+	}
+
+	return subClient.Get(ctx, req)
+}
+
+// Delete stops and removes one specific running subscription is a no-op if object connected to ID does not exist.
+func Delete(ctx context.Context, addr string, subID string) (*subpb.DeleteResponse, error) {
+	subClient, err := nbi.SubManagementClient(addr, dialOptions...)
+	if err != nil {
+		return nil, err
+	}
+
+	req := &subpb.DeleteRequest{
+		Timestamp: time.Now().UnixNano(),
+		Subid:     subID,
+	}
+
+	return subClient.Delete(ctx, req)
+}
+
+// Add creates a new subscription for the network element matching the provided ID using the provided subscribe options.
+func Add(ctx context.Context, addr string, mneID string, subscribeOptions *subpb.Subscription) (*subpb.AddResponse, error) {
+	subClient, err := nbi.SubManagementClient(addr, dialOptions...)
+	if err != nil {
+		return nil, err
+	}
+
+	req := &subpb.AddRequest{
+		Timestamp:    time.Now().UnixNano(),
+		Mneid:        mneID,
+		Subscription: subscribeOptions,
+	}
+
+	return subClient.Add(ctx, req)
+}