diff --git a/flyteadmin/pkg/manager/interfaces/signal.go b/flyteadmin/pkg/manager/interfaces/signal.go
index 31a5c9c803..0b507d68aa 100644
--- a/flyteadmin/pkg/manager/interfaces/signal.go
+++ b/flyteadmin/pkg/manager/interfaces/signal.go
@@ -6,7 +6,7 @@ import (
 	"github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin"
 )
 
-//go:generate mockery -name=SignalInterface -output=../mocks -case=underscore
+//go:generate mockery-v2 --name=SignalInterface --output=../mocks --case=underscore --with-expecter
 
 // Interface for managing Flyte Signals
 type SignalInterface interface {
diff --git a/flyteadmin/pkg/manager/mocks/signal_interface.go b/flyteadmin/pkg/manager/mocks/signal_interface.go
index eed53b7ec6..bbbf103531 100644
--- a/flyteadmin/pkg/manager/mocks/signal_interface.go
+++ b/flyteadmin/pkg/manager/mocks/signal_interface.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v1.0.1. DO NOT EDIT.
+// Code generated by mockery v2.40.3. DO NOT EDIT.
 
 package mocks
 
@@ -15,29 +15,27 @@ type SignalInterface struct {
 	mock.Mock
 }
 
-type SignalInterface_GetOrCreateSignal struct {
-	*mock.Call
-}
-
-func (_m SignalInterface_GetOrCreateSignal) Return(_a0 *admin.Signal, _a1 error) *SignalInterface_GetOrCreateSignal {
-	return &SignalInterface_GetOrCreateSignal{Call: _m.Call.Return(_a0, _a1)}
-}
-
-func (_m *SignalInterface) OnGetOrCreateSignal(ctx context.Context, request admin.SignalGetOrCreateRequest) *SignalInterface_GetOrCreateSignal {
-	c_call := _m.On("GetOrCreateSignal", ctx, request)
-	return &SignalInterface_GetOrCreateSignal{Call: c_call}
+type SignalInterface_Expecter struct {
+	mock *mock.Mock
 }
 
-func (_m *SignalInterface) OnGetOrCreateSignalMatch(matchers ...interface{}) *SignalInterface_GetOrCreateSignal {
-	c_call := _m.On("GetOrCreateSignal", matchers...)
-	return &SignalInterface_GetOrCreateSignal{Call: c_call}
+func (_m *SignalInterface) EXPECT() *SignalInterface_Expecter {
+	return &SignalInterface_Expecter{mock: &_m.Mock}
 }
 
 // GetOrCreateSignal provides a mock function with given fields: ctx, request
 func (_m *SignalInterface) GetOrCreateSignal(ctx context.Context, request admin.SignalGetOrCreateRequest) (*admin.Signal, error) {
 	ret := _m.Called(ctx, request)
 
+	if len(ret) == 0 {
+		panic("no return value specified for GetOrCreateSignal")
+	}
+
 	var r0 *admin.Signal
+	var r1 error
+	if rf, ok := ret.Get(0).(func(context.Context, admin.SignalGetOrCreateRequest) (*admin.Signal, error)); ok {
+		return rf(ctx, request)
+	}
 	if rf, ok := ret.Get(0).(func(context.Context, admin.SignalGetOrCreateRequest) *admin.Signal); ok {
 		r0 = rf(ctx, request)
 	} else {
@@ -46,7 +44,6 @@ func (_m *SignalInterface) GetOrCreateSignal(ctx context.Context, request admin.
 		}
 	}
 
-	var r1 error
 	if rf, ok := ret.Get(1).(func(context.Context, admin.SignalGetOrCreateRequest) error); ok {
 		r1 = rf(ctx, request)
 	} else {
@@ -56,29 +53,48 @@ func (_m *SignalInterface) GetOrCreateSignal(ctx context.Context, request admin.
 	return r0, r1
 }
 
-type SignalInterface_ListSignals struct {
+// SignalInterface_GetOrCreateSignal_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetOrCreateSignal'
+type SignalInterface_GetOrCreateSignal_Call struct {
 	*mock.Call
 }
 
-func (_m SignalInterface_ListSignals) Return(_a0 *admin.SignalList, _a1 error) *SignalInterface_ListSignals {
-	return &SignalInterface_ListSignals{Call: _m.Call.Return(_a0, _a1)}
+// GetOrCreateSignal is a helper method to define mock.On call
+//   - ctx context.Context
+//   - request admin.SignalGetOrCreateRequest
+func (_e *SignalInterface_Expecter) GetOrCreateSignal(ctx interface{}, request interface{}) *SignalInterface_GetOrCreateSignal_Call {
+	return &SignalInterface_GetOrCreateSignal_Call{Call: _e.mock.On("GetOrCreateSignal", ctx, request)}
 }
 
-func (_m *SignalInterface) OnListSignals(ctx context.Context, request admin.SignalListRequest) *SignalInterface_ListSignals {
-	c_call := _m.On("ListSignals", ctx, request)
-	return &SignalInterface_ListSignals{Call: c_call}
+func (_c *SignalInterface_GetOrCreateSignal_Call) Run(run func(ctx context.Context, request admin.SignalGetOrCreateRequest)) *SignalInterface_GetOrCreateSignal_Call {
+	_c.Call.Run(func(args mock.Arguments) {
+		run(args[0].(context.Context), args[1].(admin.SignalGetOrCreateRequest))
+	})
+	return _c
 }
 
-func (_m *SignalInterface) OnListSignalsMatch(matchers ...interface{}) *SignalInterface_ListSignals {
-	c_call := _m.On("ListSignals", matchers...)
-	return &SignalInterface_ListSignals{Call: c_call}
+func (_c *SignalInterface_GetOrCreateSignal_Call) Return(_a0 *admin.Signal, _a1 error) *SignalInterface_GetOrCreateSignal_Call {
+	_c.Call.Return(_a0, _a1)
+	return _c
+}
+
+func (_c *SignalInterface_GetOrCreateSignal_Call) RunAndReturn(run func(context.Context, admin.SignalGetOrCreateRequest) (*admin.Signal, error)) *SignalInterface_GetOrCreateSignal_Call {
+	_c.Call.Return(run)
+	return _c
 }
 
 // ListSignals provides a mock function with given fields: ctx, request
 func (_m *SignalInterface) ListSignals(ctx context.Context, request admin.SignalListRequest) (*admin.SignalList, error) {
 	ret := _m.Called(ctx, request)
 
+	if len(ret) == 0 {
+		panic("no return value specified for ListSignals")
+	}
+
 	var r0 *admin.SignalList
+	var r1 error
+	if rf, ok := ret.Get(0).(func(context.Context, admin.SignalListRequest) (*admin.SignalList, error)); ok {
+		return rf(ctx, request)
+	}
 	if rf, ok := ret.Get(0).(func(context.Context, admin.SignalListRequest) *admin.SignalList); ok {
 		r0 = rf(ctx, request)
 	} else {
@@ -87,7 +103,6 @@ func (_m *SignalInterface) ListSignals(ctx context.Context, request admin.Signal
 		}
 	}
 
-	var r1 error
 	if rf, ok := ret.Get(1).(func(context.Context, admin.SignalListRequest) error); ok {
 		r1 = rf(ctx, request)
 	} else {
@@ -97,29 +112,48 @@ func (_m *SignalInterface) ListSignals(ctx context.Context, request admin.Signal
 	return r0, r1
 }
 
-type SignalInterface_SetSignal struct {
+// SignalInterface_ListSignals_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ListSignals'
+type SignalInterface_ListSignals_Call struct {
 	*mock.Call
 }
 
-func (_m SignalInterface_SetSignal) Return(_a0 *admin.SignalSetResponse, _a1 error) *SignalInterface_SetSignal {
-	return &SignalInterface_SetSignal{Call: _m.Call.Return(_a0, _a1)}
+// ListSignals is a helper method to define mock.On call
+//   - ctx context.Context
+//   - request admin.SignalListRequest
+func (_e *SignalInterface_Expecter) ListSignals(ctx interface{}, request interface{}) *SignalInterface_ListSignals_Call {
+	return &SignalInterface_ListSignals_Call{Call: _e.mock.On("ListSignals", ctx, request)}
 }
 
-func (_m *SignalInterface) OnSetSignal(ctx context.Context, request admin.SignalSetRequest) *SignalInterface_SetSignal {
-	c_call := _m.On("SetSignal", ctx, request)
-	return &SignalInterface_SetSignal{Call: c_call}
+func (_c *SignalInterface_ListSignals_Call) Run(run func(ctx context.Context, request admin.SignalListRequest)) *SignalInterface_ListSignals_Call {
+	_c.Call.Run(func(args mock.Arguments) {
+		run(args[0].(context.Context), args[1].(admin.SignalListRequest))
+	})
+	return _c
 }
 
-func (_m *SignalInterface) OnSetSignalMatch(matchers ...interface{}) *SignalInterface_SetSignal {
-	c_call := _m.On("SetSignal", matchers...)
-	return &SignalInterface_SetSignal{Call: c_call}
+func (_c *SignalInterface_ListSignals_Call) Return(_a0 *admin.SignalList, _a1 error) *SignalInterface_ListSignals_Call {
+	_c.Call.Return(_a0, _a1)
+	return _c
+}
+
+func (_c *SignalInterface_ListSignals_Call) RunAndReturn(run func(context.Context, admin.SignalListRequest) (*admin.SignalList, error)) *SignalInterface_ListSignals_Call {
+	_c.Call.Return(run)
+	return _c
 }
 
 // SetSignal provides a mock function with given fields: ctx, request
 func (_m *SignalInterface) SetSignal(ctx context.Context, request admin.SignalSetRequest) (*admin.SignalSetResponse, error) {
 	ret := _m.Called(ctx, request)
 
+	if len(ret) == 0 {
+		panic("no return value specified for SetSignal")
+	}
+
 	var r0 *admin.SignalSetResponse
+	var r1 error
+	if rf, ok := ret.Get(0).(func(context.Context, admin.SignalSetRequest) (*admin.SignalSetResponse, error)); ok {
+		return rf(ctx, request)
+	}
 	if rf, ok := ret.Get(0).(func(context.Context, admin.SignalSetRequest) *admin.SignalSetResponse); ok {
 		r0 = rf(ctx, request)
 	} else {
@@ -128,7 +162,6 @@ func (_m *SignalInterface) SetSignal(ctx context.Context, request admin.SignalSe
 		}
 	}
 
-	var r1 error
 	if rf, ok := ret.Get(1).(func(context.Context, admin.SignalSetRequest) error); ok {
 		r1 = rf(ctx, request)
 	} else {
@@ -137,3 +170,46 @@ func (_m *SignalInterface) SetSignal(ctx context.Context, request admin.SignalSe
 
 	return r0, r1
 }
+
+// SignalInterface_SetSignal_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SetSignal'
+type SignalInterface_SetSignal_Call struct {
+	*mock.Call
+}
+
+// SetSignal is a helper method to define mock.On call
+//   - ctx context.Context
+//   - request admin.SignalSetRequest
+func (_e *SignalInterface_Expecter) SetSignal(ctx interface{}, request interface{}) *SignalInterface_SetSignal_Call {
+	return &SignalInterface_SetSignal_Call{Call: _e.mock.On("SetSignal", ctx, request)}
+}
+
+func (_c *SignalInterface_SetSignal_Call) Run(run func(ctx context.Context, request admin.SignalSetRequest)) *SignalInterface_SetSignal_Call {
+	_c.Call.Run(func(args mock.Arguments) {
+		run(args[0].(context.Context), args[1].(admin.SignalSetRequest))
+	})
+	return _c
+}
+
+func (_c *SignalInterface_SetSignal_Call) Return(_a0 *admin.SignalSetResponse, _a1 error) *SignalInterface_SetSignal_Call {
+	_c.Call.Return(_a0, _a1)
+	return _c
+}
+
+func (_c *SignalInterface_SetSignal_Call) RunAndReturn(run func(context.Context, admin.SignalSetRequest) (*admin.SignalSetResponse, error)) *SignalInterface_SetSignal_Call {
+	_c.Call.Return(run)
+	return _c
+}
+
+// NewSignalInterface creates a new instance of SignalInterface. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+// The first argument is typically a *testing.T value.
+func NewSignalInterface(t interface {
+	mock.TestingT
+	Cleanup(func())
+}) *SignalInterface {
+	mock := &SignalInterface{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
diff --git a/flyteadmin/pkg/rpc/signal_service_test.go b/flyteadmin/pkg/rpc/signal_service_test.go
index d1360f73cc..d791ae324f 100644
--- a/flyteadmin/pkg/rpc/signal_service_test.go
+++ b/flyteadmin/pkg/rpc/signal_service_test.go
@@ -18,7 +18,7 @@ func TestGetOrCreateSignal(t *testing.T) {
 
 	t.Run("Happy", func(t *testing.T) {
 		signalManager := mocks.SignalInterface{}
-		signalManager.OnGetOrCreateSignalMatch(mock.Anything, mock.Anything).Return(&admin.Signal{}, nil)
+		signalManager.EXPECT().GetOrCreateSignal(mock.Anything, mock.Anything).Return(&admin.Signal{}, nil)
 
 		testScope := mockScope.NewTestScope()
 		mockServer := &SignalService{
@@ -44,7 +44,7 @@ func TestGetOrCreateSignal(t *testing.T) {
 
 	t.Run("ManagerError", func(t *testing.T) {
 		signalManager := mocks.SignalInterface{}
-		signalManager.OnGetOrCreateSignalMatch(mock.Anything, mock.Anything).Return(nil, errors.New("foo"))
+		signalManager.EXPECT().GetOrCreateSignal(mock.Anything, mock.Anything).Return(nil, errors.New("foo"))
 
 		testScope := mockScope.NewTestScope()
 		mockServer := &SignalService{
@@ -62,7 +62,7 @@ func TestListSignals(t *testing.T) {
 
 	t.Run("Happy", func(t *testing.T) {
 		signalManager := mocks.SignalInterface{}
-		signalManager.OnListSignalsMatch(mock.Anything, mock.Anything).Return(&admin.SignalList{}, nil)
+		signalManager.EXPECT().ListSignals(mock.Anything, mock.Anything).Return(&admin.SignalList{}, nil)
 
 		testScope := mockScope.NewTestScope()
 		mockServer := &SignalService{
@@ -88,7 +88,7 @@ func TestListSignals(t *testing.T) {
 
 	t.Run("ManagerError", func(t *testing.T) {
 		signalManager := mocks.SignalInterface{}
-		signalManager.OnListSignalsMatch(mock.Anything, mock.Anything).Return(nil, errors.New("foo"))
+		signalManager.EXPECT().ListSignals(mock.Anything, mock.Anything).Return(nil, errors.New("foo"))
 
 		testScope := mockScope.NewTestScope()
 		mockServer := &SignalService{
@@ -106,7 +106,7 @@ func TestSetSignal(t *testing.T) {
 
 	t.Run("Happy", func(t *testing.T) {
 		signalManager := mocks.SignalInterface{}
-		signalManager.OnSetSignalMatch(mock.Anything, mock.Anything).Return(&admin.SignalSetResponse{}, nil)
+		signalManager.EXPECT().SetSignal(mock.Anything, mock.Anything).Return(&admin.SignalSetResponse{}, nil)
 
 		testScope := mockScope.NewTestScope()
 		mockServer := &SignalService{
@@ -132,7 +132,7 @@ func TestSetSignal(t *testing.T) {
 
 	t.Run("ManagerError", func(t *testing.T) {
 		signalManager := mocks.SignalInterface{}
-		signalManager.OnSetSignalMatch(mock.Anything, mock.Anything).Return(nil, errors.New("foo"))
+		signalManager.EXPECT().SetSignal(mock.Anything, mock.Anything).Return(nil, errors.New("foo"))
 
 		testScope := mockScope.NewTestScope()
 		mockServer := &SignalService{