From 9647793404ec0c2fd1e11cbf36eda422316ad09a Mon Sep 17 00:00:00 2001
From: Diego Sampaio <chinello@gmail.com>
Date: Mon, 26 Dec 2022 18:14:43 -0800
Subject: [PATCH] Chore: Move service definitions to core services package
 (#27546)

---
 _templates/package/new/tsconfig.json.ejs.t    |   2 +-
 _templates/service/new/package.json.ejs.t     |   1 +
 _templates/service/new/service.ejs.t          |   2 +-
 _templates/service/new/servicesClass.ejs.t    |   2 +-
 .../app/api/server/lib/getUploadFormData.ts   |   3 +-
 apps/meteor/app/api/server/v1/banners.ts      |   2 +-
 apps/meteor/app/api/server/v1/channels.js     |   2 +-
 apps/meteor/app/api/server/v1/channels.ts     |   2 +-
 apps/meteor/app/api/server/v1/emoji-custom.ts |   2 +-
 apps/meteor/app/api/server/v1/groups.js       |   2 +-
 apps/meteor/app/api/server/v1/ldap.ts         |   2 +-
 apps/meteor/app/api/server/v1/roles.ts        |   2 +-
 apps/meteor/app/api/server/v1/rooms.js        |   2 +-
 apps/meteor/app/api/server/v1/teams.ts        |   2 +-
 apps/meteor/app/api/server/v1/users.ts        |   3 +-
 .../app/api/server/v1/videoConference.ts      |   2 +-
 apps/meteor/app/api/server/v1/voip/events.ts  |   2 +-
 .../app/api/server/v1/voip/extensions.ts      |   2 +-
 .../app/api/server/v1/voip/omnichannel.ts     |   2 +-
 apps/meteor/app/api/server/v1/voip/queues.ts  |   2 +-
 apps/meteor/app/api/server/v1/voip/rooms.ts   |   2 +-
 .../api/server/v1/voip/server-connection.ts   |   2 +-
 .../app/apple/server/AppleCustomOAuth.ts      |   2 +-
 .../app/apps/server/bridges/messages.ts       |   2 +-
 .../app/apps/server/bridges/uiInteraction.ts  |   2 +-
 .../apps/server/bridges/videoConferences.ts   |   2 +-
 .../app/apps/server/communication/uikit.ts    |   2 +-
 .../server/converters/videoConferences.ts     |   3 +-
 .../server/functions/canAccessRoom.ts         |   4 +-
 .../server/functions/hasPermission.ts         |   3 +-
 .../server/methods/addUserToRole.ts           |   2 +-
 .../server/methods/removeUserFromRole.ts      |   2 +-
 .../server/methods/saveRoomSettings.js        |   2 +-
 .../cloud/server/functions/syncWorkspace.ts   |   2 +-
 .../server/methods/deleteCustomSound.js       |   2 +-
 .../server/methods/insertOrUpdateSound.js     |   2 +-
 .../server/methods/uploadCustomSound.js       |   2 +-
 apps/meteor/app/e2e/server/index.js           |   3 +-
 .../server/methods/requestSubscriptionKeys.js |   2 +-
 .../server/methods/deleteEmojiCustom.js       |   2 +-
 .../server/methods/insertOrUpdateEmoji.js     |   2 +-
 .../server/methods/uploadEmojiCustom.js       |   3 +-
 .../rocket-chat/adapters/Notification.ts      |   2 +-
 .../federation/server/endpoints/dispatch.js   |   2 +-
 .../server/functions/findOrCreateInvite.js    |   2 +-
 .../app/lib/server/functions/addUserToRoom.ts |   2 +-
 .../functions/checkUsernameAvailability.ts    |   2 +-
 .../lib/server/functions/cleanRoomHistory.ts  |   2 +-
 .../lib/server/functions/createDirectRoom.ts  |   2 +-
 .../app/lib/server/functions/createRoom.ts    |   4 +-
 .../app/lib/server/functions/deleteMessage.ts |   2 +-
 .../app/lib/server/functions/deleteUser.ts    |   2 +-
 .../server/functions/notifications/desktop.js |   3 +-
 .../server/functions/removeUserFromRoom.ts    |   2 +-
 .../app/lib/server/functions/setRealName.ts   |   2 +-
 .../app/lib/server/functions/setRoomAvatar.ts |   2 +-
 .../app/lib/server/functions/setStatusText.ts |   2 +-
 .../app/lib/server/functions/setUserAvatar.ts |   2 +-
 .../app/lib/server/functions/setUsername.ts   |   2 +-
 .../app/lib/server/methods/addUsersToRoom.js  |   2 +-
 .../app/lib/server/methods/filterATAllTag.js  |   2 +-
 .../app/lib/server/methods/filterATHereTag.js |   2 +-
 .../app/lib/server/methods/getUserRoles.js    |   3 +-
 .../app/lib/server/methods/sendMessage.js     |   2 +-
 apps/meteor/app/livechat/server/lib/Helper.js |   2 +-
 .../app/livechat/server/lib/Livechat.js       |   3 +-
 .../roomAccessValidator.internalService.ts    |   4 +-
 apps/meteor/app/mentions/server/server.js     |   2 +-
 .../notifications/server/lib/Notifications.ts |   2 +-
 .../app/reactions/server/setReaction.js       |   2 +-
 .../search/server/search.internalService.ts   |   4 +-
 .../server/server.ts                          |   2 +-
 .../app/slashcommands-create/server/server.ts |   2 +-
 .../app/slashcommands-help/server/server.ts   |   2 +-
 .../app/slashcommands-hide/server/hide.ts     |   2 +-
 .../app/slashcommands-invite/server/server.ts |   2 +-
 .../slashcommands-inviteall/server/server.ts  |   2 +-
 .../app/slashcommands-join/server/server.ts   |   2 +-
 .../app/slashcommands-kick/server/server.ts   |   2 +-
 .../app/slashcommands-leave/server/leave.ts   |   2 +-
 .../app/slashcommands-msg/server/server.ts    |   2 +-
 .../app/slashcommands-mute/server/mute.ts     |   2 +-
 .../app/slashcommands-mute/server/unmute.ts   |   2 +-
 .../app/slashcommands-status/client/status.ts |   2 +-
 .../app/slashcommands-status/server/status.ts |   2 +-
 .../server/server.ts                          |   2 +-
 apps/meteor/app/sms/server/services/twilio.js |   2 +-
 .../app/sms/server/services/voxtelesys.js     |   2 +-
 .../app/statistics/server/lib/statistics.ts   |   2 +-
 .../statistics/server/lib/telemetryEvents.ts  |   2 +-
 .../server/methods/deleteCustomUserStatus.js  |   2 +-
 .../methods/insertOrUpdateUserStatus.js       |   2 +-
 apps/meteor/app/voip/server/startup.ts        |   3 +-
 .../webdav/server/methods/addWebdavAccount.ts |   2 +-
 .../server/methods/removeWebdavAccount.ts     |   2 +-
 .../server/methods/uploadFileToWebdav.ts      |   2 +-
 .../ee/app/license/server/getStatistics.ts    |   2 +-
 .../license/server/license.internalService.ts |   5 +-
 .../ee/app/license/server/maxSeatsBanners.ts  |   3 +-
 .../livechat-enterprise/server/lib/Helper.js  |   2 +-
 .../server/settings.internalService.ts        |   4 +-
 .../teams-mention/server/EEMentionQueries.js  |   2 +-
 .../app/teams-mention/server/EESpotlight.js   |   2 +-
 .../ee/app/teams-mention/server/index.ts      |   2 +-
 apps/meteor/ee/server/NetworkBroker.ts        |  16 ++-
 .../server/configuration/videoConference.ts   |   2 +-
 apps/meteor/ee/server/lib/ldap/Manager.ts     |   2 +-
 apps/meteor/ee/server/lib/syncUserRoles.ts    |   2 +-
 .../ee/server/local-services/ldap/service.ts  |   5 +-
 apps/meteor/ee/server/requestSeatsRoute.ts    |   2 +-
 apps/meteor/ee/server/sdk/index.ts            |   3 +-
 apps/meteor/ee/server/services/Dockerfile     |   4 +
 .../server/services/ecdh-proxy/ECDHProxy.ts   |   2 +-
 .../ee/server/services/ecdh-proxy/service.ts  |   3 +-
 apps/meteor/ee/server/services/package.json   |   1 +
 apps/meteor/ee/server/startup/broker.ts       |   2 +-
 apps/meteor/ee/server/startup/index.ts        |   3 +-
 apps/meteor/ee/server/startup/services.ts     |   3 +-
 apps/meteor/package.json                      |   1 +
 apps/meteor/server/configuration/ldap.ts      |   2 +-
 apps/meteor/server/cron/nps.js                |   3 +-
 apps/meteor/server/cron/videoConferences.ts   |   3 +-
 apps/meteor/server/lib/roles/addUserRoles.ts  |   2 +-
 apps/meteor/server/lib/roles/insertRole.ts    |   5 +-
 .../server/lib/roles/removeUserFromRoles.ts   |   2 +-
 apps/meteor/server/lib/roles/updateRole.ts    |   3 +-
 apps/meteor/server/methods/addRoomLeader.js   |   3 +-
 .../meteor/server/methods/addRoomModerator.js |   3 +-
 apps/meteor/server/methods/addRoomOwner.js    |   3 +-
 apps/meteor/server/methods/browseChannels.js  |   2 +-
 apps/meteor/server/methods/eraseRoom.ts       |   2 +-
 .../meteor/server/methods/removeRoomLeader.js |   3 +-
 .../server/methods/removeRoomModerator.js     |   3 +-
 apps/meteor/server/methods/removeRoomOwner.ts |   3 +-
 .../server/methods/removeUserFromRoom.ts      |   2 +-
 apps/meteor/server/methods/resetAvatar.js     |   2 +-
 apps/meteor/server/methods/userPresence.ts    |   3 +-
 .../server/modules/core-apps/banner.module.ts |   4 +-
 .../server/modules/core-apps/nps.module.ts    |   5 +-
 .../modules/core-apps/videoconf.module.ts     |   5 +-
 .../modules/listeners/listeners.module.ts     |   5 +-
 .../notifications/notifications.module.ts     |   2 +-
 .../modules/streamer/streamer.module.ts       |   2 +-
 .../modules/watchers/watchers.module.ts       |   2 +-
 apps/meteor/server/sdk/api.ts                 |  10 --
 apps/meteor/server/sdk/index.ts               |  50 -------
 .../server/services/analytics/service.ts      |   5 +-
 .../server/services/apps-engine/service.ts    |   5 +-
 .../services/authorization/canAccessRoom.ts   |   4 +-
 .../authorization/canAccessRoomLivechat.ts    |   6 +-
 .../authorization/canAccessRoomVoip.ts        |   6 +-
 .../server/services/authorization/service.ts  |   5 +-
 apps/meteor/server/services/banner/service.ts |   6 +-
 .../services/device-management/service.ts     |   5 +-
 .../server/services/federation/service.ts     |   5 +-
 apps/meteor/server/services/image/service.ts  |   5 +-
 apps/meteor/server/services/ldap/service.ts   |   4 +-
 apps/meteor/server/services/meteor/service.ts |  14 +-
 .../services/nps/getAndCreateNpsSurvey.ts     |   2 +-
 apps/meteor/server/services/nps/service.ts    |   5 +-
 .../omnichannel-voip/internalTypes.ts         |  21 +--
 .../services/omnichannel-voip/service.ts      |   8 +-
 .../server/services/omnichannel/service.ts    |   5 +-
 apps/meteor/server/services/push/service.ts   |   5 +-
 apps/meteor/server/services/room/service.ts   |   5 +-
 .../server/services/sauMonitor/service.ts     |   5 +-
 apps/meteor/server/services/startup.ts        |   2 +-
 apps/meteor/server/services/team/service.ts   |  17 ++-
 .../server/services/uikit-core-app/service.ts |   4 +-
 apps/meteor/server/services/upload/service.ts |  11 +-
 .../services/video-conference/service.ts      |   5 +-
 .../asterisk/ami/ContinuousMonitor.ts         |   2 +-
 apps/meteor/server/services/voip/service.ts   |   9 +-
 apps/meteor/server/startup/index.ts           |   1 +
 apps/meteor/server/startup/localServices.ts   |  12 ++
 apps/meteor/server/startup/presence.ts        |   3 +-
 .../server/startup/presenceTroubleshoot.ts    |   3 +-
 apps/meteor/server/startup/watchDb.ts         |   2 +-
 .../tests/unit/server/sdk/errors.tests.ts     |   3 +-
 ee/apps/account-service/Dockerfile            |   6 +
 ee/apps/account-service/package.json          |   1 +
 ee/apps/account-service/src/Account.ts        |   4 +-
 .../account-service/src/lib/loginViaResume.ts |   4 +-
 .../src/lib/loginViaUsername.ts               |   2 +-
 ee/apps/account-service/src/service.ts        |   2 +-
 ee/apps/authorization-service/Dockerfile      |   6 +
 ee/apps/authorization-service/package.json    |   1 +
 ee/apps/authorization-service/src/service.ts  |   2 +-
 ee/apps/ddp-streamer/Dockerfile               |   6 +
 ee/apps/ddp-streamer/package.json             |   1 +
 ee/apps/ddp-streamer/src/DDPStreamer.ts       |  13 +-
 ee/apps/ddp-streamer/src/Server.ts            |   3 +-
 ee/apps/ddp-streamer/src/Streamer.ts          |   2 +-
 ee/apps/ddp-streamer/src/configureServer.ts   |   3 +-
 ee/apps/ddp-streamer/src/lib/Autoupdate.ts    |   2 +-
 ee/apps/ddp-streamer/src/service.ts           |   2 +-
 ee/apps/presence-service/Dockerfile           |   8 ++
 ee/apps/presence-service/package.json         |   1 +
 ee/apps/presence-service/src/service.ts       |   2 +-
 ee/apps/stream-hub-service/Dockerfile         |   6 +
 ee/apps/stream-hub-service/package.json       |   1 +
 ee/apps/stream-hub-service/src/StreamHub.ts   |   8 +-
 ee/apps/stream-hub-service/src/service.ts     |   2 +-
 packages/core-services/.eslintrc.json         |  12 ++
 packages/core-services/package.json           |  35 +++++
 .../core-services/src}/Events.ts              |   2 +-
 .../core-services/src}/LocalBroker.ts         |  13 +-
 .../core-services/src/MeteorError.ts          |   0
 packages/core-services/src/api.ts             |   4 +
 packages/core-services/src/index.ts           | 126 ++++++++++++++++++
 .../core-services/src}/lib/Api.ts             |  19 +--
 .../core-services/src}/lib/ContextStore.ts    |   0
 .../src/lib/asyncLocalStorage.ts              |   5 +
 .../core-services/src}/lib/proxify.ts         |   0
 .../core-services/src}/types/IAccount.ts      |   0
 .../src}/types/IAnalyticsService.ts           |   0
 .../core-services/src}/types/IApiService.ts   |   2 +-
 .../src}/types/IAppsEngineService.ts          |   0
 .../src}/types/IAuthorization.ts              |   0
 .../src}/types/IAuthorizationLivechat.ts      |   0
 .../src}/types/IAuthorizationVoip.ts          |   0
 .../src}/types/IBannerService.ts              |   0
 .../core-services/src}/types/IBroker.ts       |   2 +-
 .../src}/types/IDeviceManagementService.ts    |   0
 .../src}/types/IEnterpriseSettings.ts         |   0
 .../src}/types/IFederationService.ts          |   0
 .../core-services/src}/types/ILDAPService.ts  |   0
 .../core-services/src}/types/ILicense.ts      |   0
 .../core-services/src}/types/IMediaService.ts |   0
 .../core-services/src}/types/IMeteor.ts       |   2 -
 .../core-services/src}/types/INPSService.ts   |   0
 .../src}/types/IOmnichannelService.ts         |   0
 .../src}/types/IOmnichannelVoipService.ts     |  20 ++-
 .../core-services/src}/types/IPresence.ts     |   0
 .../core-services/src}/types/IPushService.ts  |   0
 .../core-services/src}/types/IRoomService.ts  |   0
 .../src}/types/ISAUMonitorService.ts          |   0
 .../core-services/src}/types/ITeamService.ts  |   0
 .../src}/types/ITelemetryEvent.ts             |   0
 .../core-services/src}/types/IUiKitCoreApp.ts |   0
 .../src}/types/IUploadService.ts              |   0
 .../src}/types/IVideoConfService.ts           |   0
 .../core-services/src}/types/IVoipService.ts  |   3 -
 .../core-services/src}/types/ServiceClass.ts  |  12 +-
 packages/core-services/tsconfig.json          |   9 ++
 packages/presence/package.json                |   5 +-
 packages/presence/src/Presence.ts             |   9 +-
 packages/presence/tsconfig.json               |   7 +-
 yarn.lock                                     |  29 ++++
 249 files changed, 600 insertions(+), 420 deletions(-)
 delete mode 100644 apps/meteor/server/sdk/api.ts
 delete mode 100644 apps/meteor/server/sdk/index.ts
 create mode 100644 apps/meteor/server/startup/localServices.ts
 create mode 100644 packages/core-services/.eslintrc.json
 create mode 100644 packages/core-services/package.json
 rename {apps/meteor/server/sdk/lib => packages/core-services/src}/Events.ts (99%)
 rename {apps/meteor/server/sdk/lib => packages/core-services/src}/LocalBroker.ts (89%)
 rename apps/meteor/server/sdk/errors.ts => packages/core-services/src/MeteorError.ts (100%)
 create mode 100644 packages/core-services/src/api.ts
 create mode 100644 packages/core-services/src/index.ts
 rename {apps/meteor/server/sdk => packages/core-services/src}/lib/Api.ts (76%)
 rename {apps/meteor/server/sdk => packages/core-services/src}/lib/ContextStore.ts (100%)
 create mode 100644 packages/core-services/src/lib/asyncLocalStorage.ts
 rename {apps/meteor/server/sdk => packages/core-services/src}/lib/proxify.ts (100%)
 rename {apps/meteor/server/sdk => packages/core-services/src}/types/IAccount.ts (100%)
 rename {apps/meteor/server/sdk => packages/core-services/src}/types/IAnalyticsService.ts (100%)
 rename {apps/meteor/server/sdk => packages/core-services/src}/types/IApiService.ts (93%)
 rename {apps/meteor/server/sdk => packages/core-services/src}/types/IAppsEngineService.ts (100%)
 rename {apps/meteor/server/sdk => packages/core-services/src}/types/IAuthorization.ts (100%)
 rename {apps/meteor/server/sdk => packages/core-services/src}/types/IAuthorizationLivechat.ts (100%)
 rename {apps/meteor/server/sdk => packages/core-services/src}/types/IAuthorizationVoip.ts (100%)
 rename {apps/meteor/server/sdk => packages/core-services/src}/types/IBannerService.ts (100%)
 rename {apps/meteor/server/sdk => packages/core-services/src}/types/IBroker.ts (97%)
 rename {apps/meteor/server/sdk => packages/core-services/src}/types/IDeviceManagementService.ts (100%)
 rename {apps/meteor/server/sdk => packages/core-services/src}/types/IEnterpriseSettings.ts (100%)
 rename {apps/meteor/server/sdk => packages/core-services/src}/types/IFederationService.ts (100%)
 rename {apps/meteor/server/sdk => packages/core-services/src}/types/ILDAPService.ts (100%)
 rename {apps/meteor/server/sdk => packages/core-services/src}/types/ILicense.ts (100%)
 rename {apps/meteor/server/sdk => packages/core-services/src}/types/IMediaService.ts (100%)
 rename {apps/meteor/server/sdk => packages/core-services/src}/types/IMeteor.ts (81%)
 rename {apps/meteor/server/sdk => packages/core-services/src}/types/INPSService.ts (100%)
 rename {apps/meteor/server/sdk => packages/core-services/src}/types/IOmnichannelService.ts (100%)
 rename {apps/meteor/server/sdk => packages/core-services/src}/types/IOmnichannelVoipService.ts (78%)
 rename {apps/meteor/server/sdk => packages/core-services/src}/types/IPresence.ts (100%)
 rename {apps/meteor/server/sdk => packages/core-services/src}/types/IPushService.ts (100%)
 rename {apps/meteor/server/sdk => packages/core-services/src}/types/IRoomService.ts (100%)
 rename {apps/meteor/server/sdk => packages/core-services/src}/types/ISAUMonitorService.ts (100%)
 rename {apps/meteor/server/sdk => packages/core-services/src}/types/ITeamService.ts (100%)
 rename {apps/meteor/server/sdk => packages/core-services/src}/types/ITelemetryEvent.ts (100%)
 rename {apps/meteor/server/sdk => packages/core-services/src}/types/IUiKitCoreApp.ts (100%)
 rename {apps/meteor/server/sdk => packages/core-services/src}/types/IUploadService.ts (100%)
 rename {apps/meteor/server/sdk => packages/core-services/src}/types/IVideoConfService.ts (100%)
 rename {apps/meteor/server/sdk => packages/core-services/src}/types/IVoipService.ts (90%)
 rename {apps/meteor/server/sdk => packages/core-services/src}/types/ServiceClass.ts (92%)
 create mode 100644 packages/core-services/tsconfig.json

diff --git a/_templates/package/new/tsconfig.json.ejs.t b/_templates/package/new/tsconfig.json.ejs.t
index 1b5cbc20b8e..3e192c674d1 100644
--- a/_templates/package/new/tsconfig.json.ejs.t
+++ b/_templates/package/new/tsconfig.json.ejs.t
@@ -2,7 +2,7 @@
 to: packages/<%= name %>/tsconfig.json
 ---
 {
-	"extends": "../../tsconfig.base.json",
+	"extends": "../../tsconfig.base.client.json",
 	"compilerOptions": {
 		"rootDir": "./src",
 		"outDir": "./dist"
diff --git a/_templates/service/new/package.json.ejs.t b/_templates/service/new/package.json.ejs.t
index 0b83e0d9b59..a985eb3c73f 100644
--- a/_templates/service/new/package.json.ejs.t
+++ b/_templates/service/new/package.json.ejs.t
@@ -18,6 +18,7 @@ to: ee/apps/<%= name %>/package.json
 	],
 	"author": "Rocket.Chat",
 	"dependencies": {
+		"@rocket.chat/core-services": "workspace:^",
 		"@rocket.chat/core-typings": "workspace:^",
 		"@rocket.chat/emitter": "0.31.22",
 		"@rocket.chat/model-typings": "workspace:^",
diff --git a/_templates/service/new/service.ejs.t b/_templates/service/new/service.ejs.t
index 546151f65ea..5e8c7b769da 100644
--- a/_templates/service/new/service.ejs.t
+++ b/_templates/service/new/service.ejs.t
@@ -3,8 +3,8 @@ to: ee/apps/<%= name %>/src/service.ts
 ---
 import type { Document } from 'mongodb';
 import polka from 'polka';
+import { api } from '@rocket.chat/core-services';
 
-import { api } from '../../../../apps/meteor/server/sdk/api';
 import { broker } from '../../../../apps/meteor/ee/server/startup/broker';
 import { Collections, getCollection, getConnection } from '../../../../apps/meteor/ee/server/services/mongo';
 import { registerServiceModels } from '../../../../apps/meteor/ee/server/lib/registerServiceModels';
diff --git a/_templates/service/new/servicesClass.ejs.t b/_templates/service/new/servicesClass.ejs.t
index 951207486f8..bd55d7032cc 100644
--- a/_templates/service/new/servicesClass.ejs.t
+++ b/_templates/service/new/servicesClass.ejs.t
@@ -1,7 +1,7 @@
 ---
 to: ee/apps/<%= name %>/src/<%= h.changeCase.pascalCase(name) %>.ts
 ---
-import { ServiceClass } from '../../../../apps/meteor/server/sdk/types/ServiceClass';
+import { ServiceClass } from '@rocket.chat/core-services';
 
 export class <%= h.changeCase.pascalCase(name) %> extends ServiceClass {
 	protected name = '<%= name %>';
diff --git a/apps/meteor/app/api/server/lib/getUploadFormData.ts b/apps/meteor/app/api/server/lib/getUploadFormData.ts
index 1ac0c4a5b08..5df41638b90 100644
--- a/apps/meteor/app/api/server/lib/getUploadFormData.ts
+++ b/apps/meteor/app/api/server/lib/getUploadFormData.ts
@@ -3,8 +3,7 @@ import type { Readable } from 'stream';
 import type { Request } from 'express';
 import busboy from 'busboy';
 import type { ValidateFunction } from 'ajv';
-
-import { MeteorError } from '../../../../server/sdk/errors';
+import { MeteorError } from '@rocket.chat/core-services';
 
 type UploadResult<K> = {
 	file: Readable & { truncated: boolean };
diff --git a/apps/meteor/app/api/server/v1/banners.ts b/apps/meteor/app/api/server/v1/banners.ts
index 4b979b376d9..deea03bccca 100644
--- a/apps/meteor/app/api/server/v1/banners.ts
+++ b/apps/meteor/app/api/server/v1/banners.ts
@@ -1,8 +1,8 @@
 import { Match, check } from 'meteor/check';
 import { BannerPlatform } from '@rocket.chat/core-typings';
+import { Banner } from '@rocket.chat/core-services';
 
 import { API } from '../api';
-import { Banner } from '../../../../server/sdk';
 
 /**
  * @deprecated
diff --git a/apps/meteor/app/api/server/v1/channels.js b/apps/meteor/app/api/server/v1/channels.js
index 6b5fb82a6e2..7497ed66cef 100644
--- a/apps/meteor/app/api/server/v1/channels.js
+++ b/apps/meteor/app/api/server/v1/channels.js
@@ -2,6 +2,7 @@ import { Meteor } from 'meteor/meteor';
 import { Match, check } from 'meteor/check';
 import _ from 'underscore';
 import { Integrations, Uploads, Messages as MessagesRaw, Rooms as RoomsRaw, Subscriptions as SubscriptionsRaw } from '@rocket.chat/models';
+import { Team } from '@rocket.chat/core-services';
 
 import { Rooms, Subscriptions, Messages, Users } from '../../../models/server';
 import { canAccessRoom, hasPermission, hasAtLeastOnePermission } from '../../../authorization/server';
@@ -9,7 +10,6 @@ import { mountIntegrationQueryBasedOnPermissions } from '../../../integrations/s
 import { normalizeMessagesForUser } from '../../../utils/server/lib/normalizeMessagesForUser';
 import { API } from '../api';
 import { settings } from '../../../settings/server';
-import { Team } from '../../../../server/sdk';
 import { findUsersOfRoom } from '../../../../server/lib/findUsersOfRoom';
 import { addUserToFileObj } from '../helpers/addUserToFileObj';
 
diff --git a/apps/meteor/app/api/server/v1/channels.ts b/apps/meteor/app/api/server/v1/channels.ts
index e55bb31e078..f727b7b501d 100644
--- a/apps/meteor/app/api/server/v1/channels.ts
+++ b/apps/meteor/app/api/server/v1/channels.ts
@@ -19,12 +19,12 @@ import {
 	isChannelsDeleteProps,
 } from '@rocket.chat/rest-typings';
 import { Messages } from '@rocket.chat/models';
+import { Team } from '@rocket.chat/core-services';
 
 import { Rooms, Subscriptions } from '../../../models/server';
 import { hasPermission } from '../../../authorization/server';
 import { normalizeMessagesForUser } from '../../../utils/server/lib/normalizeMessagesForUser';
 import { API } from '../api';
-import { Team } from '../../../../server/sdk';
 
 // Returns the channel IF found otherwise it will return the failure of why it didn't. Check the `statusCode` property
 function findChannelByIdOrName({
diff --git a/apps/meteor/app/api/server/v1/emoji-custom.ts b/apps/meteor/app/api/server/v1/emoji-custom.ts
index 1be07e459a5..c56ccb6169c 100644
--- a/apps/meteor/app/api/server/v1/emoji-custom.ts
+++ b/apps/meteor/app/api/server/v1/emoji-custom.ts
@@ -1,10 +1,10 @@
 import { Meteor } from 'meteor/meteor';
 import { EmojiCustom } from '@rocket.chat/models';
+import { Media } from '@rocket.chat/core-services';
 
 import { API } from '../api';
 import { getUploadFormData } from '../lib/getUploadFormData';
 import { findEmojisCustom } from '../lib/emoji-custom';
-import { Media } from '../../../../server/sdk';
 import { SystemLogger } from '../../../../server/lib/logger/system';
 import { settings } from '../../../settings/server';
 
diff --git a/apps/meteor/app/api/server/v1/groups.js b/apps/meteor/app/api/server/v1/groups.js
index db2745df587..652e5dbeb52 100644
--- a/apps/meteor/app/api/server/v1/groups.js
+++ b/apps/meteor/app/api/server/v1/groups.js
@@ -2,6 +2,7 @@ import _ from 'underscore';
 import { Meteor } from 'meteor/meteor';
 import { Match, check } from 'meteor/check';
 import { Integrations, Messages as MessagesRaw, Uploads, Rooms as RoomsRaw, Subscriptions as SubscriptionsRaw } from '@rocket.chat/models';
+import { Team } from '@rocket.chat/core-services';
 
 import { mountIntegrationQueryBasedOnPermissions } from '../../../integrations/server/lib/mountQueriesBasedOnPermission';
 import { Subscriptions, Rooms, Messages, Users } from '../../../models/server';
@@ -14,7 +15,6 @@ import {
 } from '../../../authorization/server';
 import { normalizeMessagesForUser } from '../../../utils/server/lib/normalizeMessagesForUser';
 import { API } from '../api';
-import { Team } from '../../../../server/sdk';
 import { findUsersOfRoom } from '../../../../server/lib/findUsersOfRoom';
 import { addUserToFileObj } from '../helpers/addUserToFileObj';
 
diff --git a/apps/meteor/app/api/server/v1/ldap.ts b/apps/meteor/app/api/server/v1/ldap.ts
index aa4db389d84..8d8bd3a2f3e 100644
--- a/apps/meteor/app/api/server/v1/ldap.ts
+++ b/apps/meteor/app/api/server/v1/ldap.ts
@@ -1,10 +1,10 @@
 import { Match, check } from 'meteor/check';
+import { LDAP } from '@rocket.chat/core-services';
 
 import { hasPermission } from '../../../authorization/server';
 import { settings } from '../../../settings/server';
 import { API } from '../api';
 import { SystemLogger } from '../../../../server/lib/logger/system';
-import { LDAP } from '../../../../server/sdk';
 
 API.v1.addRoute(
 	'ldap.testConnection',
diff --git a/apps/meteor/app/api/server/v1/roles.ts b/apps/meteor/app/api/server/v1/roles.ts
index 252421d1a9b..2c33af9297a 100644
--- a/apps/meteor/app/api/server/v1/roles.ts
+++ b/apps/meteor/app/api/server/v1/roles.ts
@@ -9,13 +9,13 @@ import {
 } from '@rocket.chat/rest-typings';
 import type { IRole } from '@rocket.chat/core-typings';
 import { Roles } from '@rocket.chat/models';
+import { api } from '@rocket.chat/core-services';
 
 import { Users } from '../../../models/server';
 import { API } from '../api';
 import { hasRole } from '../../../authorization/server';
 import { getUsersInRolePaginated } from '../../../authorization/server/functions/getUsersInRole';
 import { settings } from '../../../settings/server/index';
-import { api } from '../../../../server/sdk/api';
 import { apiDeprecationLogger } from '../../../lib/server/lib/deprecationWarningLogger';
 import { hasAnyRoleAsync } from '../../../authorization/server/functions/hasRole';
 import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission';
diff --git a/apps/meteor/app/api/server/v1/rooms.js b/apps/meteor/app/api/server/v1/rooms.js
index 76bf1e9267c..fe4ccd088ca 100644
--- a/apps/meteor/app/api/server/v1/rooms.js
+++ b/apps/meteor/app/api/server/v1/rooms.js
@@ -1,5 +1,6 @@
 import { Meteor } from 'meteor/meteor';
 import { Rooms as RoomsRaw } from '@rocket.chat/models';
+import { Media } from '@rocket.chat/core-services';
 
 import { FileUpload } from '../../../file-upload';
 import { Rooms, Messages } from '../../../models/server';
@@ -14,7 +15,6 @@ import {
 } from '../lib/rooms';
 import * as dataExport from '../../../../server/lib/dataExport';
 import { canAccessRoom, canAccessRoomId, hasPermission } from '../../../authorization/server';
-import { Media } from '../../../../server/sdk';
 import { settings } from '../../../settings/server/index';
 import { getUploadFormData } from '../lib/getUploadFormData';
 
diff --git a/apps/meteor/app/api/server/v1/teams.ts b/apps/meteor/app/api/server/v1/teams.ts
index 6d570ae49b0..0c1689c630e 100644
--- a/apps/meteor/app/api/server/v1/teams.ts
+++ b/apps/meteor/app/api/server/v1/teams.ts
@@ -13,11 +13,11 @@ import {
 } from '@rocket.chat/rest-typings';
 import type { ITeam } from '@rocket.chat/core-typings';
 import { TEAM_TYPE } from '@rocket.chat/core-typings';
+import { Team } from '@rocket.chat/core-services';
 
 import { removeUserFromRoom } from '../../../lib/server/functions/removeUserFromRoom';
 import { Rooms, Users } from '../../../models/server';
 import { canAccessRoom, hasAtLeastOnePermission, hasPermission } from '../../../authorization/server';
-import { Team } from '../../../../server/sdk';
 import { API } from '../api';
 
 API.v1.addRoute(
diff --git a/apps/meteor/app/api/server/v1/users.ts b/apps/meteor/app/api/server/v1/users.ts
index af74049434f..dd3b69e8498 100644
--- a/apps/meteor/app/api/server/v1/users.ts
+++ b/apps/meteor/app/api/server/v1/users.ts
@@ -21,6 +21,7 @@ import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
 import type { IExportOperation, IPersonalAccessToken, IUser } from '@rocket.chat/core-typings';
 import { Users as UsersRaw } from '@rocket.chat/models';
 import type { Filter } from 'mongodb';
+import { Team, api } from '@rocket.chat/core-services';
 
 import { Users, Subscriptions } from '../../../models/server';
 import { hasPermission } from '../../../authorization/server';
@@ -40,11 +41,9 @@ import { findUsersToAutocomplete, getInclusiveFields, getNonEmptyFields, getNonE
 import { getUserForCheck, emailCheck } from '../../../2fa/server/code';
 import { resetUserE2EEncriptionKey } from '../../../../server/lib/resetUserE2EKey';
 import { resetTOTP } from '../../../2fa/server/functions/resetTOTP';
-import { Team } from '../../../../server/sdk';
 import { isValidQuery } from '../lib/isValidQuery';
 import { getURL } from '../../../utils/server';
 import { getUploadFormData } from '../lib/getUploadFormData';
-import { api } from '../../../../server/sdk/api';
 
 API.v1.addRoute(
 	'users.getAvatar',
diff --git a/apps/meteor/app/api/server/v1/videoConference.ts b/apps/meteor/app/api/server/v1/videoConference.ts
index cefa7ffd85d..f945a49b497 100644
--- a/apps/meteor/app/api/server/v1/videoConference.ts
+++ b/apps/meteor/app/api/server/v1/videoConference.ts
@@ -6,11 +6,11 @@ import {
 	isVideoConfInfoProps,
 	isVideoConfListProps,
 } from '@rocket.chat/rest-typings';
+import { VideoConf } from '@rocket.chat/core-services';
 
 import { API } from '../api';
 import { canAccessRoomIdAsync } from '../../../authorization/server/functions/canAccessRoom';
 import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission';
-import { VideoConf } from '../../../../server/sdk';
 import { videoConfProviders } from '../../../../server/lib/videoConfProviders';
 import { availabilityErrors } from '../../../../lib/videoConference/constants';
 
diff --git a/apps/meteor/app/api/server/v1/voip/events.ts b/apps/meteor/app/api/server/v1/voip/events.ts
index 426a1495a5e..5482d62041b 100644
--- a/apps/meteor/app/api/server/v1/voip/events.ts
+++ b/apps/meteor/app/api/server/v1/voip/events.ts
@@ -1,9 +1,9 @@
 import { Match, check } from 'meteor/check';
 import { VoipClientEvents } from '@rocket.chat/core-typings';
 import { VoipRoom } from '@rocket.chat/models';
+import { LivechatVoip } from '@rocket.chat/core-services';
 
 import { API } from '../../api';
-import { LivechatVoip } from '../../../../../server/sdk';
 import { canAccessRoom } from '../../../../authorization/server';
 
 API.v1.addRoute(
diff --git a/apps/meteor/app/api/server/v1/voip/extensions.ts b/apps/meteor/app/api/server/v1/voip/extensions.ts
index 598a8bce662..a3c29e99d1f 100644
--- a/apps/meteor/app/api/server/v1/voip/extensions.ts
+++ b/apps/meteor/app/api/server/v1/voip/extensions.ts
@@ -1,9 +1,9 @@
 import { Match, check } from 'meteor/check';
 import type { IVoipExtensionBase } from '@rocket.chat/core-typings';
 import { Users } from '@rocket.chat/models';
+import { Voip } from '@rocket.chat/core-services';
 
 import { API } from '../../api';
-import { Voip } from '../../../../../server/sdk';
 import { generateJWT } from '../../../../utils/server/lib/JWTHelper';
 import { settings } from '../../../../settings/server';
 import { logger } from './logger';
diff --git a/apps/meteor/app/api/server/v1/voip/omnichannel.ts b/apps/meteor/app/api/server/v1/voip/omnichannel.ts
index 06bcdfd6ee6..16e90f7be61 100644
--- a/apps/meteor/app/api/server/v1/voip/omnichannel.ts
+++ b/apps/meteor/app/api/server/v1/voip/omnichannel.ts
@@ -1,9 +1,9 @@
 import { Match, check } from 'meteor/check';
 import type { IUser, IVoipExtensionWithAgentInfo } from '@rocket.chat/core-typings';
 import { Users } from '@rocket.chat/models';
+import { LivechatVoip } from '@rocket.chat/core-services';
 
 import { API } from '../../api';
-import { LivechatVoip } from '../../../../../server/sdk';
 import { logger } from './logger';
 
 function filter(
diff --git a/apps/meteor/app/api/server/v1/voip/queues.ts b/apps/meteor/app/api/server/v1/voip/queues.ts
index 845b448b3fa..ce82150228f 100644
--- a/apps/meteor/app/api/server/v1/voip/queues.ts
+++ b/apps/meteor/app/api/server/v1/voip/queues.ts
@@ -1,7 +1,7 @@
 import { Match, check } from 'meteor/check';
 import type { IVoipConnectorResult, IQueueSummary, IQueueMembershipDetails, IQueueMembershipSubscription } from '@rocket.chat/core-typings';
+import { Voip } from '@rocket.chat/core-services';
 
-import { Voip } from '../../../../../server/sdk';
 import { API } from '../../api';
 
 API.v1.addRoute(
diff --git a/apps/meteor/app/api/server/v1/voip/rooms.ts b/apps/meteor/app/api/server/v1/voip/rooms.ts
index 1798591f57d..9feb74ead33 100644
--- a/apps/meteor/app/api/server/v1/voip/rooms.ts
+++ b/apps/meteor/app/api/server/v1/voip/rooms.ts
@@ -2,9 +2,9 @@ import { Random } from 'meteor/random';
 import type { ILivechatAgent, IVoipRoom } from '@rocket.chat/core-typings';
 import { isVoipRoomProps, isVoipRoomsProps, isVoipRoomCloseProps } from '@rocket.chat/rest-typings';
 import { VoipRoom, LivechatVisitors, Users } from '@rocket.chat/models';
+import { LivechatVoip } from '@rocket.chat/core-services';
 
 import { API } from '../../api';
-import { LivechatVoip } from '../../../../../server/sdk';
 import { hasPermission } from '../../../../authorization/server';
 import { typedJsonParse } from '../../../../../lib/typedJSONParse';
 
diff --git a/apps/meteor/app/api/server/v1/voip/server-connection.ts b/apps/meteor/app/api/server/v1/voip/server-connection.ts
index d784a87e95f..e19e897b491 100644
--- a/apps/meteor/app/api/server/v1/voip/server-connection.ts
+++ b/apps/meteor/app/api/server/v1/voip/server-connection.ts
@@ -1,7 +1,7 @@
 import { Match, check } from 'meteor/check';
+import { Voip } from '@rocket.chat/core-services';
 
 import { API } from '../../api';
-import { Voip } from '../../../../../server/sdk';
 
 API.v1.addRoute(
 	'voip/managementServer/checkConnection',
diff --git a/apps/meteor/app/apple/server/AppleCustomOAuth.ts b/apps/meteor/app/apple/server/AppleCustomOAuth.ts
index 7779f4f814c..70632236881 100644
--- a/apps/meteor/app/apple/server/AppleCustomOAuth.ts
+++ b/apps/meteor/app/apple/server/AppleCustomOAuth.ts
@@ -1,7 +1,7 @@
 import { Accounts } from 'meteor/accounts-base';
+import { MeteorError } from '@rocket.chat/core-services';
 
 import { CustomOAuth } from '../../custom-oauth/server/custom_oauth_server';
-import { MeteorError } from '../../../server/sdk/errors';
 import { handleIdentityToken } from '../lib/handleIdentityToken';
 
 export class AppleCustomOAuth extends CustomOAuth {
diff --git a/apps/meteor/app/apps/server/bridges/messages.ts b/apps/meteor/app/apps/server/bridges/messages.ts
index 935a10efbc1..4f905044b65 100644
--- a/apps/meteor/app/apps/server/bridges/messages.ts
+++ b/apps/meteor/app/apps/server/bridges/messages.ts
@@ -4,11 +4,11 @@ import type { IMessage } from '@rocket.chat/apps-engine/definition/messages';
 import type { IUser } from '@rocket.chat/apps-engine/definition/users';
 import type { IRoom } from '@rocket.chat/apps-engine/definition/rooms';
 import type { ISubscription } from '@rocket.chat/core-typings';
+import { api } from '@rocket.chat/core-services';
 
 import { Messages, Users, Subscriptions } from '../../../models/server';
 import { updateMessage } from '../../../lib/server/functions/updateMessage';
 import { executeSendMessage } from '../../../lib/server/methods/sendMessage';
-import { api } from '../../../../server/sdk/api';
 import notifications from '../../../notifications/server/lib/Notifications';
 import type { AppServerOrchestrator } from '../orchestrator';
 
diff --git a/apps/meteor/app/apps/server/bridges/uiInteraction.ts b/apps/meteor/app/apps/server/bridges/uiInteraction.ts
index 15788ce4684..ad30dc57582 100644
--- a/apps/meteor/app/apps/server/bridges/uiInteraction.ts
+++ b/apps/meteor/app/apps/server/bridges/uiInteraction.ts
@@ -1,8 +1,8 @@
 import { UiInteractionBridge as UiIntBridge } from '@rocket.chat/apps-engine/server/bridges/UiInteractionBridge';
 import type { IUIKitInteraction } from '@rocket.chat/apps-engine/definition/uikit';
 import type { IUser } from '@rocket.chat/apps-engine/definition/users';
+import { api } from '@rocket.chat/core-services';
 
-import { api } from '../../../../server/sdk/api';
 import type { AppServerOrchestrator } from '../orchestrator';
 
 export class UiInteractionBridge extends UiIntBridge {
diff --git a/apps/meteor/app/apps/server/bridges/videoConferences.ts b/apps/meteor/app/apps/server/bridges/videoConferences.ts
index d6ac7b62fb2..f022662566c 100644
--- a/apps/meteor/app/apps/server/bridges/videoConferences.ts
+++ b/apps/meteor/app/apps/server/bridges/videoConferences.ts
@@ -1,8 +1,8 @@
 import { VideoConferenceBridge } from '@rocket.chat/apps-engine/server/bridges/VideoConferenceBridge';
 import type { AppVideoConference, VideoConference } from '@rocket.chat/apps-engine/definition/videoConferences';
 import type { IVideoConfProvider } from '@rocket.chat/apps-engine/definition/videoConfProviders';
+import { VideoConf } from '@rocket.chat/core-services';
 
-import { VideoConf } from '../../../../server/sdk';
 import type { AppServerOrchestrator } from '../orchestrator';
 import { videoConfProviders } from '../../../../server/lib/videoConfProviders';
 import type { AppVideoConferencesConverter } from '../converters/videoConferences';
diff --git a/apps/meteor/app/apps/server/communication/uikit.ts b/apps/meteor/app/apps/server/communication/uikit.ts
index 46bae99c81c..d3fe99349da 100644
--- a/apps/meteor/app/apps/server/communication/uikit.ts
+++ b/apps/meteor/app/apps/server/communication/uikit.ts
@@ -6,11 +6,11 @@ import { Meteor } from 'meteor/meteor';
 import { WebApp } from 'meteor/webapp';
 import { UIKitIncomingInteractionType } from '@rocket.chat/apps-engine/definition/uikit';
 import { AppInterface } from '@rocket.chat/apps-engine/definition/metadata';
+import { UiKitCoreApp } from '@rocket.chat/core-services';
 
 import { settings } from '../../../settings/server';
 import type { AppServerOrchestrator } from '../orchestrator';
 import { Apps } from '../orchestrator';
-import { UiKitCoreApp } from '../../../../server/sdk';
 import { authenticationMiddleware } from '../../../api/server/middlewares/authentication';
 
 const apiServer = express();
diff --git a/apps/meteor/app/apps/server/converters/videoConferences.ts b/apps/meteor/app/apps/server/converters/videoConferences.ts
index 77bc25e4cbe..0b0c0a573b7 100644
--- a/apps/meteor/app/apps/server/converters/videoConferences.ts
+++ b/apps/meteor/app/apps/server/converters/videoConferences.ts
@@ -1,7 +1,6 @@
 import type { VideoConference } from '@rocket.chat/apps-engine/definition/videoConferences';
 import type { IVideoConference } from '@rocket.chat/core-typings';
-
-import { VideoConf } from '../../../../server/sdk';
+import { VideoConf } from '@rocket.chat/core-services';
 
 export class AppVideoConferencesConverter {
 	async convertById(callId: string): Promise<VideoConference | undefined> {
diff --git a/apps/meteor/app/authorization/server/functions/canAccessRoom.ts b/apps/meteor/app/authorization/server/functions/canAccessRoom.ts
index d82bed560d1..cd264e0ec7b 100644
--- a/apps/meteor/app/authorization/server/functions/canAccessRoom.ts
+++ b/apps/meteor/app/authorization/server/functions/canAccessRoom.ts
@@ -1,5 +1,5 @@
-import { Authorization } from '../../../../server/sdk';
-import type { IAuthorization } from '../../../../server/sdk/types/IAuthorization';
+import { Authorization } from '@rocket.chat/core-services';
+import type { IAuthorization } from '@rocket.chat/core-services';
 
 export const canAccessRoomAsync = Authorization.canAccessRoom;
 export const canAccessRoomIdAsync = Authorization.canAccessRoomId;
diff --git a/apps/meteor/app/authorization/server/functions/hasPermission.ts b/apps/meteor/app/authorization/server/functions/hasPermission.ts
index ae7edd333e9..41b5fb051ca 100644
--- a/apps/meteor/app/authorization/server/functions/hasPermission.ts
+++ b/apps/meteor/app/authorization/server/functions/hasPermission.ts
@@ -1,6 +1,5 @@
 import type { IUser, IPermission, IRoom } from '@rocket.chat/core-typings';
-
-import { Authorization } from '../../../../server/sdk';
+import { Authorization } from '@rocket.chat/core-services';
 
 export const hasAllPermissionAsync = async (
 	userId: IUser['_id'],
diff --git a/apps/meteor/app/authorization/server/methods/addUserToRole.ts b/apps/meteor/app/authorization/server/methods/addUserToRole.ts
index c33f950e0db..23f8f3993ef 100644
--- a/apps/meteor/app/authorization/server/methods/addUserToRole.ts
+++ b/apps/meteor/app/authorization/server/methods/addUserToRole.ts
@@ -2,11 +2,11 @@ import { Meteor } from 'meteor/meteor';
 import _ from 'underscore';
 import type { IRole, IUser, IRoom } from '@rocket.chat/core-typings';
 import { Roles } from '@rocket.chat/models';
+import { api } from '@rocket.chat/core-services';
 
 import { Users } from '../../../models/server';
 import { settings } from '../../../settings/server';
 import { hasPermission } from '../functions/hasPermission';
-import { api } from '../../../../server/sdk/api';
 import { apiDeprecationLogger } from '../../../lib/server/lib/deprecationWarningLogger';
 
 Meteor.methods({
diff --git a/apps/meteor/app/authorization/server/methods/removeUserFromRole.ts b/apps/meteor/app/authorization/server/methods/removeUserFromRole.ts
index 3eeda9c2c84..db69108b0b1 100644
--- a/apps/meteor/app/authorization/server/methods/removeUserFromRole.ts
+++ b/apps/meteor/app/authorization/server/methods/removeUserFromRole.ts
@@ -2,11 +2,11 @@ import { Meteor } from 'meteor/meteor';
 import _ from 'underscore';
 import type { IRole, IUser } from '@rocket.chat/core-typings';
 import { Roles } from '@rocket.chat/models';
+import { api } from '@rocket.chat/core-services';
 
 import { Users } from '../../../models/server';
 import { settings } from '../../../settings/server';
 import { hasPermission } from '../functions/hasPermission';
-import { api } from '../../../../server/sdk/api';
 import { apiDeprecationLogger } from '../../../lib/server/lib/deprecationWarningLogger';
 
 Meteor.methods({
diff --git a/apps/meteor/app/channel-settings/server/methods/saveRoomSettings.js b/apps/meteor/app/channel-settings/server/methods/saveRoomSettings.js
index 7fc53109e3f..ed324d7b64c 100644
--- a/apps/meteor/app/channel-settings/server/methods/saveRoomSettings.js
+++ b/apps/meteor/app/channel-settings/server/methods/saveRoomSettings.js
@@ -1,6 +1,7 @@
 import { Meteor } from 'meteor/meteor';
 import { Match } from 'meteor/check';
 import { TEAM_TYPE } from '@rocket.chat/core-typings';
+import { Team } from '@rocket.chat/core-services';
 
 import { setRoomAvatar } from '../../../lib/server/functions/setRoomAvatar';
 import { hasPermission } from '../../../authorization';
@@ -17,7 +18,6 @@ import { saveReactWhenReadOnly } from '../functions/saveReactWhenReadOnly';
 import { saveRoomSystemMessages } from '../functions/saveRoomSystemMessages';
 import { saveRoomEncrypted } from '../functions/saveRoomEncrypted';
 import { saveStreamingOptions } from '../functions/saveStreamingOptions';
-import { Team } from '../../../../server/sdk';
 import { roomCoordinator } from '../../../../server/lib/rooms/roomCoordinator';
 import { RoomSettingsEnum } from '../../../../definition/IRoomTypeConfig';
 
diff --git a/apps/meteor/app/cloud/server/functions/syncWorkspace.ts b/apps/meteor/app/cloud/server/functions/syncWorkspace.ts
index 5cc439a723c..01462542ebf 100644
--- a/apps/meteor/app/cloud/server/functions/syncWorkspace.ts
+++ b/apps/meteor/app/cloud/server/functions/syncWorkspace.ts
@@ -1,5 +1,6 @@
 import { HTTP } from 'meteor/http';
 import { Settings } from '@rocket.chat/models';
+import { NPS, Banner } from '@rocket.chat/core-services';
 
 import { buildWorkspaceRegistrationData } from './buildRegistrationData';
 import { retrieveRegistrationStatus } from './retrieveRegistrationStatus';
@@ -7,7 +8,6 @@ import { getWorkspaceAccessToken } from './getWorkspaceAccessToken';
 import { getWorkspaceLicense } from './getWorkspaceLicense';
 import { settings } from '../../../settings/server';
 import { getAndCreateNpsSurvey } from '../../../../server/services/nps/getAndCreateNpsSurvey';
-import { NPS, Banner } from '../../../../server/sdk';
 import { SystemLogger } from '../../../../server/lib/logger/system';
 
 export async function syncWorkspace(reconnectCheck = false) {
diff --git a/apps/meteor/app/custom-sounds/server/methods/deleteCustomSound.js b/apps/meteor/app/custom-sounds/server/methods/deleteCustomSound.js
index 1a51820ec6e..3c21c4d89b9 100644
--- a/apps/meteor/app/custom-sounds/server/methods/deleteCustomSound.js
+++ b/apps/meteor/app/custom-sounds/server/methods/deleteCustomSound.js
@@ -1,8 +1,8 @@
 import { Meteor } from 'meteor/meteor';
 import { CustomSounds } from '@rocket.chat/models';
+import { api } from '@rocket.chat/core-services';
 
 import { hasPermission } from '../../../authorization/server';
-import { api } from '../../../../server/sdk/api';
 import { RocketChatFileCustomSoundsInstance } from '../startup/custom-sounds';
 
 Meteor.methods({
diff --git a/apps/meteor/app/custom-sounds/server/methods/insertOrUpdateSound.js b/apps/meteor/app/custom-sounds/server/methods/insertOrUpdateSound.js
index d5cf8ae377b..d633202ede1 100644
--- a/apps/meteor/app/custom-sounds/server/methods/insertOrUpdateSound.js
+++ b/apps/meteor/app/custom-sounds/server/methods/insertOrUpdateSound.js
@@ -2,9 +2,9 @@ import { Meteor } from 'meteor/meteor';
 import s from 'underscore.string';
 import { check } from 'meteor/check';
 import { CustomSounds } from '@rocket.chat/models';
+import { api } from '@rocket.chat/core-services';
 
 import { hasPermission } from '../../../authorization/server';
-import { api } from '../../../../server/sdk/api';
 import { RocketChatFileCustomSoundsInstance } from '../startup/custom-sounds';
 
 Meteor.methods({
diff --git a/apps/meteor/app/custom-sounds/server/methods/uploadCustomSound.js b/apps/meteor/app/custom-sounds/server/methods/uploadCustomSound.js
index e87449c79c1..2d9dff22cdf 100644
--- a/apps/meteor/app/custom-sounds/server/methods/uploadCustomSound.js
+++ b/apps/meteor/app/custom-sounds/server/methods/uploadCustomSound.js
@@ -1,7 +1,7 @@
 import { Meteor } from 'meteor/meteor';
+import { api } from '@rocket.chat/core-services';
 
 import { hasPermission } from '../../../authorization/server';
-import { api } from '../../../../server/sdk/api';
 import { RocketChatFile } from '../../../file/server';
 import { RocketChatFileCustomSoundsInstance } from '../startup/custom-sounds';
 
diff --git a/apps/meteor/app/e2e/server/index.js b/apps/meteor/app/e2e/server/index.js
index ad982fd196a..080a32d8119 100644
--- a/apps/meteor/app/e2e/server/index.js
+++ b/apps/meteor/app/e2e/server/index.js
@@ -1,5 +1,6 @@
+import { api } from '@rocket.chat/core-services';
+
 import { callbacks } from '../../../lib/callbacks';
-import { api } from '../../../server/sdk/api';
 
 import './settings';
 import './beforeCreateRoom';
diff --git a/apps/meteor/app/e2e/server/methods/requestSubscriptionKeys.js b/apps/meteor/app/e2e/server/methods/requestSubscriptionKeys.js
index 76d28b27c59..2dea12b1e0c 100644
--- a/apps/meteor/app/e2e/server/methods/requestSubscriptionKeys.js
+++ b/apps/meteor/app/e2e/server/methods/requestSubscriptionKeys.js
@@ -1,7 +1,7 @@
 import { Meteor } from 'meteor/meteor';
+import { api } from '@rocket.chat/core-services';
 
 import { Subscriptions, Rooms } from '../../../models/server';
-import { api } from '../../../../server/sdk/api';
 
 Meteor.methods({
 	'e2e.requestSubscriptionKeys'() {
diff --git a/apps/meteor/app/emoji-custom/server/methods/deleteEmojiCustom.js b/apps/meteor/app/emoji-custom/server/methods/deleteEmojiCustom.js
index 4d26d9ca065..49732eed2b0 100644
--- a/apps/meteor/app/emoji-custom/server/methods/deleteEmojiCustom.js
+++ b/apps/meteor/app/emoji-custom/server/methods/deleteEmojiCustom.js
@@ -1,7 +1,7 @@
 import { Meteor } from 'meteor/meteor';
 import { EmojiCustom } from '@rocket.chat/models';
+import { api } from '@rocket.chat/core-services';
 
-import { api } from '../../../../server/sdk/api';
 import { hasPermission } from '../../../authorization';
 import { RocketChatFileEmojiCustomInstance } from '../startup/emoji-custom';
 
diff --git a/apps/meteor/app/emoji-custom/server/methods/insertOrUpdateEmoji.js b/apps/meteor/app/emoji-custom/server/methods/insertOrUpdateEmoji.js
index 96b95f3fbc6..5a22b2f6635 100644
--- a/apps/meteor/app/emoji-custom/server/methods/insertOrUpdateEmoji.js
+++ b/apps/meteor/app/emoji-custom/server/methods/insertOrUpdateEmoji.js
@@ -3,10 +3,10 @@ import _ from 'underscore';
 import s from 'underscore.string';
 import limax from 'limax';
 import { EmojiCustom } from '@rocket.chat/models';
+import { api } from '@rocket.chat/core-services';
 
 import { hasPermission } from '../../../authorization';
 import { RocketChatFileEmojiCustomInstance } from '../startup/emoji-custom';
-import { api } from '../../../../server/sdk/api';
 
 Meteor.methods({
 	async insertOrUpdateEmoji(emojiData) {
diff --git a/apps/meteor/app/emoji-custom/server/methods/uploadEmojiCustom.js b/apps/meteor/app/emoji-custom/server/methods/uploadEmojiCustom.js
index 7269a36330f..51a2ef3c84d 100644
--- a/apps/meteor/app/emoji-custom/server/methods/uploadEmojiCustom.js
+++ b/apps/meteor/app/emoji-custom/server/methods/uploadEmojiCustom.js
@@ -1,12 +1,11 @@
 import { Meteor } from 'meteor/meteor';
 import limax from 'limax';
 import sharp from 'sharp';
+import { api, Media } from '@rocket.chat/core-services';
 
 import { hasPermission } from '../../../authorization';
 import { RocketChatFile } from '../../../file';
 import { RocketChatFileEmojiCustomInstance } from '../startup/emoji-custom';
-import { api } from '../../../../server/sdk/api';
-import { Media } from '../../../../server/sdk';
 
 const getFile = async (file, extension) => {
 	if (extension !== 'svg+xml') {
diff --git a/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/adapters/Notification.ts b/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/adapters/Notification.ts
index 43e712c46c4..e7eb8e5a816 100644
--- a/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/adapters/Notification.ts
+++ b/apps/meteor/app/federation-v2/server/infrastructure/rocket-chat/adapters/Notification.ts
@@ -1,7 +1,7 @@
 import { Rooms } from '@rocket.chat/models';
 import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
+import { api } from '@rocket.chat/core-services';
 
-import { api } from '../../../../../../server/sdk/api';
 import notifications from '../../../../../notifications/server/lib/Notifications';
 
 export class RocketChatNotificationAdapter {
diff --git a/apps/meteor/app/federation/server/endpoints/dispatch.js b/apps/meteor/app/federation/server/endpoints/dispatch.js
index 05179c53144..60880c51fba 100644
--- a/apps/meteor/app/federation/server/endpoints/dispatch.js
+++ b/apps/meteor/app/federation/server/endpoints/dispatch.js
@@ -1,5 +1,6 @@
 import { EJSON } from 'meteor/ejson';
 import { FederationServers } from '@rocket.chat/models';
+import { api } from '@rocket.chat/core-services';
 
 import { API } from '../../../api/server';
 import { serverLogger } from '../lib/logger';
@@ -7,7 +8,6 @@ import { contextDefinitions, eventTypes } from '../../../models/server/models/Fe
 import { FederationRoomEvents, Messages, Rooms, Subscriptions, Users } from '../../../models/server';
 import { normalizers } from '../normalizers';
 import { deleteRoom } from '../../../lib/server/functions';
-import { api } from '../../../../server/sdk/api';
 import { FileUpload } from '../../../file-upload';
 import { getFederationDomain } from '../lib/getFederationDomain';
 import { decryptIfNeeded } from '../lib/crypt';
diff --git a/apps/meteor/app/invites/server/functions/findOrCreateInvite.js b/apps/meteor/app/invites/server/functions/findOrCreateInvite.js
index 7d17dfae9c2..438f8c8a932 100644
--- a/apps/meteor/app/invites/server/functions/findOrCreateInvite.js
+++ b/apps/meteor/app/invites/server/functions/findOrCreateInvite.js
@@ -1,9 +1,9 @@
 import { Meteor } from 'meteor/meteor';
 import { Random } from 'meteor/random';
 import { Invites } from '@rocket.chat/models';
+import { api } from '@rocket.chat/core-services';
 
 import { hasPermission } from '../../../authorization/server';
-import { api } from '../../../../server/sdk/api';
 import { Subscriptions, Rooms } from '../../../models/server';
 import { settings } from '../../../settings/server';
 import { getURL } from '../../../utils/lib/getURL';
diff --git a/apps/meteor/app/lib/server/functions/addUserToRoom.ts b/apps/meteor/app/lib/server/functions/addUserToRoom.ts
index b0086de4b3f..fd5d29447fd 100644
--- a/apps/meteor/app/lib/server/functions/addUserToRoom.ts
+++ b/apps/meteor/app/lib/server/functions/addUserToRoom.ts
@@ -1,11 +1,11 @@
 import { AppsEngineException } from '@rocket.chat/apps-engine/definition/exceptions';
 import { Meteor } from 'meteor/meteor';
 import type { IUser, IRoom } from '@rocket.chat/core-typings';
+import { Team } from '@rocket.chat/core-services';
 
 import { AppEvents, Apps } from '../../../apps/server';
 import { callbacks } from '../../../../lib/callbacks';
 import { Messages, Rooms, Subscriptions, Users } from '../../../models/server';
-import { Team } from '../../../../server/sdk';
 import { roomCoordinator } from '../../../../server/lib/rooms/roomCoordinator';
 import { RoomMemberActions } from '../../../../definition/IRoomTypeConfig';
 
diff --git a/apps/meteor/app/lib/server/functions/checkUsernameAvailability.ts b/apps/meteor/app/lib/server/functions/checkUsernameAvailability.ts
index f98414ea23e..7894566c527 100644
--- a/apps/meteor/app/lib/server/functions/checkUsernameAvailability.ts
+++ b/apps/meteor/app/lib/server/functions/checkUsernameAvailability.ts
@@ -2,9 +2,9 @@ import { Meteor } from 'meteor/meteor';
 import s from 'underscore.string';
 import _ from 'underscore';
 import { escapeRegExp } from '@rocket.chat/string-helpers';
+import { Team } from '@rocket.chat/core-services';
 
 import { settings } from '../../../settings/server';
-import { Team } from '../../../../server/sdk';
 import { validateName } from './validateName';
 
 let usernameBlackList: RegExp[] = [];
diff --git a/apps/meteor/app/lib/server/functions/cleanRoomHistory.ts b/apps/meteor/app/lib/server/functions/cleanRoomHistory.ts
index fa119c0f16f..c9280d06bd8 100644
--- a/apps/meteor/app/lib/server/functions/cleanRoomHistory.ts
+++ b/apps/meteor/app/lib/server/functions/cleanRoomHistory.ts
@@ -1,11 +1,11 @@
 import type { FindCursor } from 'mongodb';
 import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
 import type { IMessage, IMessageDiscussion } from '@rocket.chat/core-typings';
+import { api } from '@rocket.chat/core-services';
 
 import { deleteRoom } from './deleteRoom';
 import { FileUpload } from '../../../file-upload/server';
 import { Messages, Rooms, Subscriptions } from '../../../models/server';
-import { api } from '../../../../server/sdk/api';
 
 export const cleanRoomHistory = function ({
 	rid = '',
diff --git a/apps/meteor/app/lib/server/functions/createDirectRoom.ts b/apps/meteor/app/lib/server/functions/createDirectRoom.ts
index 78bcfb780a6..ac1ad5c75d5 100644
--- a/apps/meteor/app/lib/server/functions/createDirectRoom.ts
+++ b/apps/meteor/app/lib/server/functions/createDirectRoom.ts
@@ -4,13 +4,13 @@ import { Random } from 'meteor/random';
 import type { ICreatedRoom, ISubscription, IUser } from '@rocket.chat/core-typings';
 import { Subscriptions } from '@rocket.chat/models';
 import type { MatchKeysAndValues } from 'mongodb';
+import type { ICreateRoomParams } from '@rocket.chat/core-services';
 
 import { Users, Rooms } from '../../../models/server';
 import { Apps } from '../../../apps/server';
 import { callbacks } from '../../../../lib/callbacks';
 import { settings } from '../../../settings/server';
 import { getDefaultSubscriptionPref } from '../../../utils/server';
-import type { ICreateRoomParams } from '../../../../server/sdk/types/IRoomService';
 
 const generateSubscription = (
 	fname: string,
diff --git a/apps/meteor/app/lib/server/functions/createRoom.ts b/apps/meteor/app/lib/server/functions/createRoom.ts
index b0a228decd3..dce476a877d 100644
--- a/apps/meteor/app/lib/server/functions/createRoom.ts
+++ b/apps/meteor/app/lib/server/functions/createRoom.ts
@@ -3,6 +3,8 @@ import { Meteor } from 'meteor/meteor';
 import _ from 'underscore';
 import s from 'underscore.string';
 import type { ICreatedRoom, IUser, IRoom, RoomType } from '@rocket.chat/core-typings';
+import { Team } from '@rocket.chat/core-services';
+import type { ICreateRoomParams, ISubscriptionExtraData } from '@rocket.chat/core-services';
 
 import { Apps } from '../../../apps/server';
 import { addUserRoles } from '../../../../server/lib/roles/addUserRoles';
@@ -10,8 +12,6 @@ import { callbacks } from '../../../../lib/callbacks';
 import { Messages, Rooms, Subscriptions, Users } from '../../../models/server';
 import { getValidRoomName } from '../../../utils/server';
 import { createDirectRoom } from './createDirectRoom';
-import { Team } from '../../../../server/sdk';
-import type { ICreateRoomParams, ISubscriptionExtraData } from '../../../../server/sdk/types/IRoomService';
 
 const isValidName = (name: unknown): name is string => {
 	return typeof name === 'string' && s.trim(name).length > 0;
diff --git a/apps/meteor/app/lib/server/functions/deleteMessage.ts b/apps/meteor/app/lib/server/functions/deleteMessage.ts
index bdc3fb2c49f..7ec2b736388 100644
--- a/apps/meteor/app/lib/server/functions/deleteMessage.ts
+++ b/apps/meteor/app/lib/server/functions/deleteMessage.ts
@@ -1,11 +1,11 @@
 import { Meteor } from 'meteor/meteor';
 import type { IMessage, IUser } from '@rocket.chat/core-typings';
 import { Uploads } from '@rocket.chat/models';
+import { api } from '@rocket.chat/core-services';
 
 import { FileUpload } from '../../../file-upload/server';
 import { settings } from '../../../settings/server';
 import { Messages, Rooms } from '../../../models/server';
-import { api } from '../../../../server/sdk/api';
 import { callbacks } from '../../../../lib/callbacks';
 import { Apps } from '../../../apps/server';
 
diff --git a/apps/meteor/app/lib/server/functions/deleteUser.ts b/apps/meteor/app/lib/server/functions/deleteUser.ts
index ddd9aa0a819..6c3573def3d 100644
--- a/apps/meteor/app/lib/server/functions/deleteUser.ts
+++ b/apps/meteor/app/lib/server/functions/deleteUser.ts
@@ -2,6 +2,7 @@ import { Meteor } from 'meteor/meteor';
 import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
 import type { FileProp } from '@rocket.chat/core-typings';
 import { Integrations, FederationServers, LivechatVisitors } from '@rocket.chat/models';
+import { api } from '@rocket.chat/core-services';
 
 import { FileUpload } from '../../../file-upload/server';
 import { Users, Subscriptions, Messages, Rooms, LivechatDepartmentAgents } from '../../../models/server';
@@ -10,7 +11,6 @@ import { updateGroupDMsName } from './updateGroupDMsName';
 import { relinquishRoomOwnerships } from './relinquishRoomOwnerships';
 import { getSubscribedRoomsForUserWithDetails, shouldRemoveOrChangeOwner } from './getRoomsWithSingleOwner';
 import { getUserSingleOwnedRooms } from './getUserSingleOwnedRooms';
-import { api } from '../../../../server/sdk/api';
 import { LivechatUnitMonitors } from '../../../../ee/app/models/server';
 
 export async function deleteUser(userId: string, confirmRelinquish = false): Promise<void> {
diff --git a/apps/meteor/app/lib/server/functions/notifications/desktop.js b/apps/meteor/app/lib/server/functions/notifications/desktop.js
index d5104312313..ee2e56cd993 100644
--- a/apps/meteor/app/lib/server/functions/notifications/desktop.js
+++ b/apps/meteor/app/lib/server/functions/notifications/desktop.js
@@ -1,5 +1,6 @@
+import { api } from '@rocket.chat/core-services';
+
 import { roomCoordinator } from '../../../../../server/lib/rooms/roomCoordinator';
-import { api } from '../../../../../server/sdk/api';
 import { metrics } from '../../../../metrics/server';
 import { settings } from '../../../../settings/server';
 
diff --git a/apps/meteor/app/lib/server/functions/removeUserFromRoom.ts b/apps/meteor/app/lib/server/functions/removeUserFromRoom.ts
index ea71bb240ab..4e1327ad3a2 100644
--- a/apps/meteor/app/lib/server/functions/removeUserFromRoom.ts
+++ b/apps/meteor/app/lib/server/functions/removeUserFromRoom.ts
@@ -2,11 +2,11 @@
 import { AppsEngineException } from '@rocket.chat/apps-engine/definition/exceptions';
 import { Meteor } from 'meteor/meteor';
 import type { IUser } from '@rocket.chat/core-typings';
+import { Team } from '@rocket.chat/core-services';
 
 import { Rooms, Messages, Subscriptions } from '../../../models/server';
 import { AppEvents, Apps } from '../../../apps/server';
 import { callbacks } from '../../../../lib/callbacks';
-import { Team } from '../../../../server/sdk';
 
 export const removeUserFromRoom = async function (
 	rid: string,
diff --git a/apps/meteor/app/lib/server/functions/setRealName.ts b/apps/meteor/app/lib/server/functions/setRealName.ts
index d9aa7a7b22a..b8f0dc53e9c 100644
--- a/apps/meteor/app/lib/server/functions/setRealName.ts
+++ b/apps/meteor/app/lib/server/functions/setRealName.ts
@@ -1,12 +1,12 @@
 import { Meteor } from 'meteor/meteor';
 import s from 'underscore.string';
 import type { IUser } from '@rocket.chat/core-typings';
+import { api } from '@rocket.chat/core-services';
 
 import { Users } from '../../../models/server';
 import { settings } from '../../../settings/server';
 import { hasPermission } from '../../../authorization/server';
 import { RateLimiter } from '../lib';
-import { api } from '../../../../server/sdk/api';
 
 export const _setRealName = function (userId: string, name: string, fullUser: IUser): IUser | undefined {
 	name = s.trim(name);
diff --git a/apps/meteor/app/lib/server/functions/setRoomAvatar.ts b/apps/meteor/app/lib/server/functions/setRoomAvatar.ts
index 74ba8ebcb01..975bbb96adb 100644
--- a/apps/meteor/app/lib/server/functions/setRoomAvatar.ts
+++ b/apps/meteor/app/lib/server/functions/setRoomAvatar.ts
@@ -1,11 +1,11 @@
 import { Meteor } from 'meteor/meteor';
 import type { IUser } from '@rocket.chat/core-typings';
 import { Avatars } from '@rocket.chat/models';
+import { api } from '@rocket.chat/core-services';
 
 import { RocketChatFile } from '../../../file';
 import { FileUpload } from '../../../file-upload/server';
 import { Rooms, Messages } from '../../../models/server';
-import { api } from '../../../../server/sdk/api';
 
 export const setRoomAvatar = async function (rid: string, dataURI: string, user: IUser): Promise<void> {
 	const fileStore = FileUpload.getStore('Avatars');
diff --git a/apps/meteor/app/lib/server/functions/setStatusText.ts b/apps/meteor/app/lib/server/functions/setStatusText.ts
index 048d4c25353..a5beed59f1a 100644
--- a/apps/meteor/app/lib/server/functions/setStatusText.ts
+++ b/apps/meteor/app/lib/server/functions/setStatusText.ts
@@ -2,10 +2,10 @@ import { Meteor } from 'meteor/meteor';
 import s from 'underscore.string';
 import type { IUser } from '@rocket.chat/core-typings';
 import { Users } from '@rocket.chat/models';
+import { api } from '@rocket.chat/core-services';
 
 import { hasPermission } from '../../../authorization/server';
 import { RateLimiter } from '../lib';
-import { api } from '../../../../server/sdk/api';
 
 async function _setStatusTextPromise(userId: string, statusText: string): Promise<boolean> {
 	if (!userId) {
diff --git a/apps/meteor/app/lib/server/functions/setUserAvatar.ts b/apps/meteor/app/lib/server/functions/setUserAvatar.ts
index 4718303b21c..f25745dc389 100644
--- a/apps/meteor/app/lib/server/functions/setUserAvatar.ts
+++ b/apps/meteor/app/lib/server/functions/setUserAvatar.ts
@@ -1,11 +1,11 @@
 import { Meteor } from 'meteor/meteor';
 import type { IUser } from '@rocket.chat/core-typings';
+import { api } from '@rocket.chat/core-services';
 
 import { RocketChatFile } from '../../../file/server';
 import { FileUpload } from '../../../file-upload/server';
 import { Users } from '../../../models/server';
 import { SystemLogger } from '../../../../server/lib/logger/system';
-import { api } from '../../../../server/sdk/api';
 import { fetch } from '../../../../server/lib/http/fetch';
 
 export function setUserAvatar(
diff --git a/apps/meteor/app/lib/server/functions/setUsername.ts b/apps/meteor/app/lib/server/functions/setUsername.ts
index 810dd9abf78..778a6e130e9 100644
--- a/apps/meteor/app/lib/server/functions/setUsername.ts
+++ b/apps/meteor/app/lib/server/functions/setUsername.ts
@@ -3,13 +3,13 @@ import s from 'underscore.string';
 import { Accounts } from 'meteor/accounts-base';
 import type { IUser } from '@rocket.chat/core-typings';
 import { Invites } from '@rocket.chat/models';
+import { api } from '@rocket.chat/core-services';
 
 import { settings } from '../../../settings/server';
 import { Users } from '../../../models/server';
 import { hasPermission } from '../../../authorization/server';
 import { RateLimiter } from '../lib';
 import { addUserToRoom } from './addUserToRoom';
-import { api } from '../../../../server/sdk/api';
 import { checkUsernameAvailability, setUserAvatar } from '.';
 import { getAvatarSuggestionForUser } from './getAvatarSuggestionForUser';
 import { SystemLogger } from '../../../../server/lib/logger/system';
diff --git a/apps/meteor/app/lib/server/methods/addUsersToRoom.js b/apps/meteor/app/lib/server/methods/addUsersToRoom.js
index a0f53cf457c..164ed5a1ea3 100644
--- a/apps/meteor/app/lib/server/methods/addUsersToRoom.js
+++ b/apps/meteor/app/lib/server/methods/addUsersToRoom.js
@@ -1,11 +1,11 @@
 import { Meteor } from 'meteor/meteor';
 import { Match } from 'meteor/check';
 import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
+import { api } from '@rocket.chat/core-services';
 
 import { Rooms, Subscriptions, Users } from '../../../models/server';
 import { hasPermission } from '../../../authorization';
 import { addUserToRoom } from '../functions';
-import { api } from '../../../../server/sdk/api';
 import { Federation } from '../../../federation-v2/server/Federation';
 
 Meteor.methods({
diff --git a/apps/meteor/app/lib/server/methods/filterATAllTag.js b/apps/meteor/app/lib/server/methods/filterATAllTag.js
index 2c1d52a9509..f6d4627d9d6 100644
--- a/apps/meteor/app/lib/server/methods/filterATAllTag.js
+++ b/apps/meteor/app/lib/server/methods/filterATAllTag.js
@@ -2,11 +2,11 @@ import { Meteor } from 'meteor/meteor';
 import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
 import _ from 'underscore';
 import moment from 'moment';
+import { api } from '@rocket.chat/core-services';
 
 import { hasPermission } from '../../../authorization';
 import { callbacks } from '../../../../lib/callbacks';
 import { Users } from '../../../models/server';
-import { api } from '../../../../server/sdk/api';
 
 callbacks.add(
 	'beforeSaveMessage',
diff --git a/apps/meteor/app/lib/server/methods/filterATHereTag.js b/apps/meteor/app/lib/server/methods/filterATHereTag.js
index 0978520e1cd..821b0f1c8ba 100644
--- a/apps/meteor/app/lib/server/methods/filterATHereTag.js
+++ b/apps/meteor/app/lib/server/methods/filterATHereTag.js
@@ -2,11 +2,11 @@ import { Meteor } from 'meteor/meteor';
 import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
 import _ from 'underscore';
 import moment from 'moment';
+import { api } from '@rocket.chat/core-services';
 
 import { hasPermission } from '../../../authorization';
 import { callbacks } from '../../../../lib/callbacks';
 import { Users } from '../../../models/server';
-import { api } from '../../../../server/sdk/api';
 
 callbacks.add(
 	'beforeSaveMessage',
diff --git a/apps/meteor/app/lib/server/methods/getUserRoles.js b/apps/meteor/app/lib/server/methods/getUserRoles.js
index 4f5595efa07..813c3e2eea1 100644
--- a/apps/meteor/app/lib/server/methods/getUserRoles.js
+++ b/apps/meteor/app/lib/server/methods/getUserRoles.js
@@ -1,6 +1,5 @@
 import { Meteor } from 'meteor/meteor';
-
-import { Authorization } from '../../../../server/sdk';
+import { Authorization } from '@rocket.chat/core-services';
 
 Meteor.methods({
 	async getUserRoles() {
diff --git a/apps/meteor/app/lib/server/methods/sendMessage.js b/apps/meteor/app/lib/server/methods/sendMessage.js
index f9a19d23e8d..9091a53f547 100644
--- a/apps/meteor/app/lib/server/methods/sendMessage.js
+++ b/apps/meteor/app/lib/server/methods/sendMessage.js
@@ -2,6 +2,7 @@ import { Meteor } from 'meteor/meteor';
 import { check } from 'meteor/check';
 import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
 import moment from 'moment';
+import { api } from '@rocket.chat/core-services';
 
 import { hasPermission } from '../../../authorization';
 import { metrics } from '../../../metrics';
@@ -12,7 +13,6 @@ import { sendMessage } from '../functions';
 import { RateLimiter } from '../lib';
 import { canSendMessage } from '../../../authorization/server';
 import { SystemLogger } from '../../../../server/lib/logger/system';
-import { api } from '../../../../server/sdk/api';
 
 export function executeSendMessage(uid, message) {
 	if (message.tshow && !message.tmid) {
diff --git a/apps/meteor/app/livechat/server/lib/Helper.js b/apps/meteor/app/livechat/server/lib/Helper.js
index f26890c3565..407e967a1f1 100644
--- a/apps/meteor/app/livechat/server/lib/Helper.js
+++ b/apps/meteor/app/livechat/server/lib/Helper.js
@@ -3,6 +3,7 @@ import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
 import { Match, check } from 'meteor/check';
 import { LivechatTransferEventType } from '@rocket.chat/apps-engine/definition/livechat';
 import { OmnichannelSourceType } from '@rocket.chat/core-typings';
+import { api } from '@rocket.chat/core-services';
 
 import { hasRole } from '../../../authorization';
 import {
@@ -25,7 +26,6 @@ import { sendNotification } from '../../../lib/server';
 import { sendMessage } from '../../../lib/server/functions/sendMessage';
 import { queueInquiry, saveQueueInquiry } from './QueueManager';
 import { validateEmail as validatorFunc } from '../../../../lib/emailValidator';
-import { api } from '../../../../server/sdk/api';
 
 const logger = new Logger('LivechatHelper');
 
diff --git a/apps/meteor/app/livechat/server/lib/Livechat.js b/apps/meteor/app/livechat/server/lib/Livechat.js
index af5f779a214..47ae2de2955 100644
--- a/apps/meteor/app/livechat/server/lib/Livechat.js
+++ b/apps/meteor/app/livechat/server/lib/Livechat.js
@@ -10,6 +10,7 @@ import s from 'underscore.string';
 import moment from 'moment-timezone';
 import UAParser from 'ua-parser-js';
 import { Users as UsersRaw, LivechatVisitors, LivechatCustomField, Settings } from '@rocket.chat/models';
+import { VideoConf, api } from '@rocket.chat/core-services';
 
 import { QueueManager } from './QueueManager';
 import { RoutingManager } from './RoutingManager';
@@ -39,8 +40,6 @@ import { Apps, AppEvents } from '../../../apps/server';
 import { businessHourManager } from '../business-hour';
 import { addUserRoles } from '../../../../server/lib/roles/addUserRoles';
 import { removeUserFromRoles } from '../../../../server/lib/roles/removeUserFromRoles';
-import { VideoConf } from '../../../../server/sdk';
-import { api } from '../../../../server/sdk/api';
 
 const logger = new Logger('Livechat');
 
diff --git a/apps/meteor/app/livechat/server/roomAccessValidator.internalService.ts b/apps/meteor/app/livechat/server/roomAccessValidator.internalService.ts
index 3ab3c37843d..381a40d371f 100644
--- a/apps/meteor/app/livechat/server/roomAccessValidator.internalService.ts
+++ b/apps/meteor/app/livechat/server/roomAccessValidator.internalService.ts
@@ -1,7 +1,7 @@
 import type { IUser, IOmnichannelRoom } from '@rocket.chat/core-typings';
+import type { IAuthorizationLivechat } from '@rocket.chat/core-services';
+import { ServiceClassInternal } from '@rocket.chat/core-services';
 
-import type { IAuthorizationLivechat } from '../../../server/sdk/types/IAuthorizationLivechat';
-import { ServiceClassInternal } from '../../../server/sdk/types/ServiceClass';
 import { validators } from './roomAccessValidator.compatibility';
 
 export class AuthorizationLivechat extends ServiceClassInternal implements IAuthorizationLivechat {
diff --git a/apps/meteor/app/mentions/server/server.js b/apps/meteor/app/mentions/server/server.js
index c82a7c3449e..ba4a8af718f 100644
--- a/apps/meteor/app/mentions/server/server.js
+++ b/apps/meteor/app/mentions/server/server.js
@@ -1,11 +1,11 @@
 import { Meteor } from 'meteor/meteor';
 import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
+import { api } from '@rocket.chat/core-services';
 
 import MentionsServer from './Mentions';
 import { settings } from '../../settings/server';
 import { callbacks } from '../../../lib/callbacks';
 import { Users, Subscriptions, Rooms } from '../../models/server';
-import { api } from '../../../server/sdk/api';
 
 export class MentionQueries {
 	getUsers(usernames) {
diff --git a/apps/meteor/app/notifications/server/lib/Notifications.ts b/apps/meteor/app/notifications/server/lib/Notifications.ts
index 67260293cdb..1b53a225a5a 100644
--- a/apps/meteor/app/notifications/server/lib/Notifications.ts
+++ b/apps/meteor/app/notifications/server/lib/Notifications.ts
@@ -1,9 +1,9 @@
 import { Meteor } from 'meteor/meteor';
 import { DDPCommon } from 'meteor/ddp-common';
+import { api } from '@rocket.chat/core-services';
 
 import { NotificationsModule } from '../../../../server/modules/notifications/notifications.module';
 import { Streamer } from '../../../../server/modules/streamer/streamer.module';
-import { api } from '../../../../server/sdk/api';
 import './Presence';
 
 export class Stream extends Streamer {
diff --git a/apps/meteor/app/reactions/server/setReaction.js b/apps/meteor/app/reactions/server/setReaction.js
index 310d0aefc8b..bc58c1ffc22 100644
--- a/apps/meteor/app/reactions/server/setReaction.js
+++ b/apps/meteor/app/reactions/server/setReaction.js
@@ -2,13 +2,13 @@ import { Meteor } from 'meteor/meteor';
 import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
 import _ from 'underscore';
 import { EmojiCustom } from '@rocket.chat/models';
+import { api } from '@rocket.chat/core-services';
 
 import { Messages, Rooms } from '../../models/server';
 import { callbacks } from '../../../lib/callbacks';
 import { emoji } from '../../emoji/server';
 import { isTheLastMessage, msgStream } from '../../lib/server';
 import { canAccessRoom, hasPermission } from '../../authorization/server';
-import { api } from '../../../server/sdk/api';
 import { AppEvents, Apps } from '../../apps/server/orchestrator';
 
 const removeUserReaction = (message, reaction, username) => {
diff --git a/apps/meteor/app/search/server/search.internalService.ts b/apps/meteor/app/search/server/search.internalService.ts
index 03ed08742c0..b7077aa9746 100644
--- a/apps/meteor/app/search/server/search.internalService.ts
+++ b/apps/meteor/app/search/server/search.internalService.ts
@@ -1,8 +1,8 @@
+import { api, ServiceClassInternal } from '@rocket.chat/core-services';
+
 import { Users } from '../../models/server';
 import { settings } from '../../settings/server';
 import { searchProviderService } from './service/providerService';
-import { ServiceClassInternal } from '../../../server/sdk/types/ServiceClass';
-import { api } from '../../../server/sdk/api';
 import { searchEventService } from './events/events';
 
 class Search extends ServiceClassInternal {
diff --git a/apps/meteor/app/slashcommands-archiveroom/server/server.ts b/apps/meteor/app/slashcommands-archiveroom/server/server.ts
index 1fdfea6f524..bf7d2074d72 100644
--- a/apps/meteor/app/slashcommands-archiveroom/server/server.ts
+++ b/apps/meteor/app/slashcommands-archiveroom/server/server.ts
@@ -1,9 +1,9 @@
 import { Meteor } from 'meteor/meteor';
 import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
+import { api } from '@rocket.chat/core-services';
 
 import { Rooms, Messages } from '../../models/server';
 import { slashCommands } from '../../utils/lib/slashCommand';
-import { api } from '../../../server/sdk/api';
 import { settings } from '../../settings/server';
 
 slashCommands.add({
diff --git a/apps/meteor/app/slashcommands-create/server/server.ts b/apps/meteor/app/slashcommands-create/server/server.ts
index 0ff5d17e36b..c89b2fd631b 100644
--- a/apps/meteor/app/slashcommands-create/server/server.ts
+++ b/apps/meteor/app/slashcommands-create/server/server.ts
@@ -1,10 +1,10 @@
 import { Meteor } from 'meteor/meteor';
 import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
+import { api } from '@rocket.chat/core-services';
 
 import { settings } from '../../settings/server';
 import { Rooms } from '../../models/server';
 import { slashCommands } from '../../utils/lib/slashCommand';
-import { api } from '../../../server/sdk/api';
 
 slashCommands.add({
 	command: 'create',
diff --git a/apps/meteor/app/slashcommands-help/server/server.ts b/apps/meteor/app/slashcommands-help/server/server.ts
index 815f6df9323..612b3d7f5e0 100644
--- a/apps/meteor/app/slashcommands-help/server/server.ts
+++ b/apps/meteor/app/slashcommands-help/server/server.ts
@@ -1,9 +1,9 @@
 import { Meteor } from 'meteor/meteor';
 import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
+import { api } from '@rocket.chat/core-services';
 
 import { settings } from '../../settings/server';
 import { slashCommands } from '../../utils/lib/slashCommand';
-import { api } from '../../../server/sdk/api';
 import { Users } from '../../models/server';
 
 /*
diff --git a/apps/meteor/app/slashcommands-hide/server/hide.ts b/apps/meteor/app/slashcommands-hide/server/hide.ts
index dbe94d0d7d1..807ae8aa468 100644
--- a/apps/meteor/app/slashcommands-hide/server/hide.ts
+++ b/apps/meteor/app/slashcommands-hide/server/hide.ts
@@ -1,10 +1,10 @@
 import { Meteor } from 'meteor/meteor';
 import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
+import { api } from '@rocket.chat/core-services';
 
 import { settings } from '../../settings/server';
 import { Rooms, Subscriptions, Users } from '../../models/server';
 import { slashCommands } from '../../utils/server';
-import { api } from '../../../server/sdk/api';
 
 /*
  * Hide is a named function that will replace /hide commands
diff --git a/apps/meteor/app/slashcommands-invite/server/server.ts b/apps/meteor/app/slashcommands-invite/server/server.ts
index 23b60387df2..24521bc6511 100644
--- a/apps/meteor/app/slashcommands-invite/server/server.ts
+++ b/apps/meteor/app/slashcommands-invite/server/server.ts
@@ -1,10 +1,10 @@
 import { Meteor } from 'meteor/meteor';
 import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
+import { api } from '@rocket.chat/core-services';
 
 import { settings } from '../../settings/server';
 import { slashCommands } from '../../utils/lib/slashCommand';
 import { Subscriptions } from '../../models/server';
-import { api } from '../../../server/sdk/api';
 
 /*
  * Invite is a named function that will replace /invite commands
diff --git a/apps/meteor/app/slashcommands-inviteall/server/server.ts b/apps/meteor/app/slashcommands-inviteall/server/server.ts
index 3f5225a4a6c..6e65d241f96 100644
--- a/apps/meteor/app/slashcommands-inviteall/server/server.ts
+++ b/apps/meteor/app/slashcommands-inviteall/server/server.ts
@@ -6,11 +6,11 @@
 import { Meteor } from 'meteor/meteor';
 import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
 import type { ISubscription, SlashCommand } from '@rocket.chat/core-typings';
+import { api } from '@rocket.chat/core-services';
 
 import { Rooms, Subscriptions, Users } from '../../models/server';
 import { slashCommands } from '../../utils/lib/slashCommand';
 import { settings } from '../../settings/server';
-import { api } from '../../../server/sdk/api';
 
 function inviteAll<T extends string>(type: T): SlashCommand<T>['callback'] {
 	return function inviteAll(command: T, params: string, item): void {
diff --git a/apps/meteor/app/slashcommands-join/server/server.ts b/apps/meteor/app/slashcommands-join/server/server.ts
index 5ea5c5c0b9b..d4278df9ff6 100644
--- a/apps/meteor/app/slashcommands-join/server/server.ts
+++ b/apps/meteor/app/slashcommands-join/server/server.ts
@@ -1,10 +1,10 @@
 import { Meteor } from 'meteor/meteor';
 import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
+import { api } from '@rocket.chat/core-services';
 
 import { Rooms, Subscriptions } from '../../models/server';
 import { settings } from '../../settings/server';
 import { slashCommands } from '../../utils/lib/slashCommand';
-import { api } from '../../../server/sdk/api';
 
 slashCommands.add({
 	command: 'join',
diff --git a/apps/meteor/app/slashcommands-kick/server/server.ts b/apps/meteor/app/slashcommands-kick/server/server.ts
index f385269cc4d..0d77877b6e3 100644
--- a/apps/meteor/app/slashcommands-kick/server/server.ts
+++ b/apps/meteor/app/slashcommands-kick/server/server.ts
@@ -1,11 +1,11 @@
 // Kick is a named function that will replace /kick commands
 import { Meteor } from 'meteor/meteor';
 import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
+import { api } from '@rocket.chat/core-services';
 
 import { Users, Subscriptions } from '../../models/server';
 import { settings } from '../../settings/server';
 import { slashCommands } from '../../utils/lib/slashCommand';
-import { api } from '../../../server/sdk/api';
 
 slashCommands.add({
 	command: 'kick',
diff --git a/apps/meteor/app/slashcommands-leave/server/leave.ts b/apps/meteor/app/slashcommands-leave/server/leave.ts
index 566de8295b2..636eb0463e2 100644
--- a/apps/meteor/app/slashcommands-leave/server/leave.ts
+++ b/apps/meteor/app/slashcommands-leave/server/leave.ts
@@ -1,10 +1,10 @@
 import { Meteor } from 'meteor/meteor';
 import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
 import type { SlashCommand } from '@rocket.chat/core-typings';
+import { api } from '@rocket.chat/core-services';
 
 import { slashCommands } from '../../utils/lib/slashCommand';
 import { settings } from '../../settings/server';
-import { api } from '../../../server/sdk/api';
 import { Users } from '../../models/server';
 
 /*
diff --git a/apps/meteor/app/slashcommands-msg/server/server.ts b/apps/meteor/app/slashcommands-msg/server/server.ts
index 1dc5313bfa1..65345cdfedd 100644
--- a/apps/meteor/app/slashcommands-msg/server/server.ts
+++ b/apps/meteor/app/slashcommands-msg/server/server.ts
@@ -1,11 +1,11 @@
 import { Meteor } from 'meteor/meteor';
 import { Random } from 'meteor/random';
 import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
+import { api } from '@rocket.chat/core-services';
 
 import { slashCommands } from '../../utils/lib/slashCommand';
 import { settings } from '../../settings/server';
 import { Users } from '../../models/server';
-import { api } from '../../../server/sdk/api';
 
 /*
  * Msg is a named function that will replace /msg commands
diff --git a/apps/meteor/app/slashcommands-mute/server/mute.ts b/apps/meteor/app/slashcommands-mute/server/mute.ts
index 5f9ab47c611..ebb6933321f 100644
--- a/apps/meteor/app/slashcommands-mute/server/mute.ts
+++ b/apps/meteor/app/slashcommands-mute/server/mute.ts
@@ -1,10 +1,10 @@
 import { Meteor } from 'meteor/meteor';
 import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
+import { api } from '@rocket.chat/core-services';
 
 import { slashCommands } from '../../utils/lib/slashCommand';
 import { settings } from '../../settings/server';
 import { Users, Subscriptions } from '../../models/server';
-import { api } from '../../../server/sdk/api';
 
 /*
  * Mute is a named function that will replace /mute commands
diff --git a/apps/meteor/app/slashcommands-mute/server/unmute.ts b/apps/meteor/app/slashcommands-mute/server/unmute.ts
index 602268da65f..70ed145fd3a 100644
--- a/apps/meteor/app/slashcommands-mute/server/unmute.ts
+++ b/apps/meteor/app/slashcommands-mute/server/unmute.ts
@@ -1,10 +1,10 @@
 import { Meteor } from 'meteor/meteor';
 import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
+import { api } from '@rocket.chat/core-services';
 
 import { slashCommands } from '../../utils/lib/slashCommand';
 import { Users, Subscriptions } from '../../models/server';
 import { settings } from '../../settings/server';
-import { api } from '../../../server/sdk/api';
 
 /*
  * Unmute is a named function that will replace /unmute commands
diff --git a/apps/meteor/app/slashcommands-status/client/status.ts b/apps/meteor/app/slashcommands-status/client/status.ts
index b3272c0f4d3..e6fd1205b0c 100644
--- a/apps/meteor/app/slashcommands-status/client/status.ts
+++ b/apps/meteor/app/slashcommands-status/client/status.ts
@@ -1,9 +1,9 @@
 import { Meteor } from 'meteor/meteor';
 import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
+import { api } from '@rocket.chat/core-services';
 
 import { slashCommands } from '../../utils/lib/slashCommand';
 import { settings } from '../../settings/server';
-import { api } from '../../../server/sdk/api';
 import { dispatchToastMessage } from '../../../client/lib/toast';
 
 slashCommands.add({
diff --git a/apps/meteor/app/slashcommands-status/server/status.ts b/apps/meteor/app/slashcommands-status/server/status.ts
index d72687ceb33..4b92d3459ab 100644
--- a/apps/meteor/app/slashcommands-status/server/status.ts
+++ b/apps/meteor/app/slashcommands-status/server/status.ts
@@ -1,9 +1,9 @@
 import { Meteor } from 'meteor/meteor';
 import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
+import { api } from '@rocket.chat/core-services';
 
 import { slashCommands } from '../../utils/lib/slashCommand';
 import { settings } from '../../settings/server';
-import { api } from '../../../server/sdk/api';
 import { Users } from '../../models/server';
 
 slashCommands.add({
diff --git a/apps/meteor/app/slashcommands-unarchiveroom/server/server.ts b/apps/meteor/app/slashcommands-unarchiveroom/server/server.ts
index fa74c5fd350..f3dee0943a9 100644
--- a/apps/meteor/app/slashcommands-unarchiveroom/server/server.ts
+++ b/apps/meteor/app/slashcommands-unarchiveroom/server/server.ts
@@ -1,10 +1,10 @@
 import { Meteor } from 'meteor/meteor';
 import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
+import { api } from '@rocket.chat/core-services';
 
 import { Rooms, Messages } from '../../models/server';
 import { slashCommands } from '../../utils/lib/slashCommand';
 import { settings } from '../../settings/server';
-import { api } from '../../../server/sdk/api';
 import { roomCoordinator } from '../../../server/lib/rooms/roomCoordinator';
 import { RoomMemberActions } from '../../../definition/IRoomTypeConfig';
 
diff --git a/apps/meteor/app/sms/server/services/twilio.js b/apps/meteor/app/sms/server/services/twilio.js
index c0213051b91..2b83b613e64 100644
--- a/apps/meteor/app/sms/server/services/twilio.js
+++ b/apps/meteor/app/sms/server/services/twilio.js
@@ -2,11 +2,11 @@ import { Meteor } from 'meteor/meteor';
 import twilio from 'twilio';
 import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
 import filesize from 'filesize';
+import { api } from '@rocket.chat/core-services';
 
 import { settings } from '../../../settings/server';
 import { SMS } from '../SMS';
 import { fileUploadIsValidContentType } from '../../../utils/lib/fileUploadRestrictions';
-import { api } from '../../../../server/sdk/api';
 import { SystemLogger } from '../../../../server/lib/logger/system';
 
 const MAX_FILE_SIZE = 5242880;
diff --git a/apps/meteor/app/sms/server/services/voxtelesys.js b/apps/meteor/app/sms/server/services/voxtelesys.js
index 9fd526dd9a4..a4e75e12c9e 100644
--- a/apps/meteor/app/sms/server/services/voxtelesys.js
+++ b/apps/meteor/app/sms/server/services/voxtelesys.js
@@ -2,12 +2,12 @@ import { HTTP } from 'meteor/http';
 import { Meteor } from 'meteor/meteor';
 import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
 import filesize from 'filesize';
+import { api } from '@rocket.chat/core-services';
 
 import { settings } from '../../../settings/server';
 import { SMS } from '../SMS';
 import { fileUploadIsValidContentType } from '../../../utils/lib/fileUploadRestrictions';
 import { mime } from '../../../utils/lib/mimeTypes';
-import { api } from '../../../../server/sdk/api';
 import { SystemLogger } from '../../../../server/lib/logger/system';
 
 const MAX_FILE_SIZE = 5242880;
diff --git a/apps/meteor/app/statistics/server/lib/statistics.ts b/apps/meteor/app/statistics/server/lib/statistics.ts
index 766c68b3290..96a02ab2524 100644
--- a/apps/meteor/app/statistics/server/lib/statistics.ts
+++ b/apps/meteor/app/statistics/server/lib/statistics.ts
@@ -23,6 +23,7 @@ import {
 	InstanceStatus,
 	Settings,
 } from '@rocket.chat/models';
+import { Analytics, Team, VideoConf } from '@rocket.chat/core-services';
 
 import { Users, Rooms, Subscriptions, Messages } from '../../../models/server';
 import { settings } from '../../../settings/server';
@@ -34,7 +35,6 @@ import { getAppsStatistics } from './getAppsStatistics';
 import { getImporterStatistics } from './getImporterStatistics';
 import { getServicesStatistics } from './getServicesStatistics';
 import { getStatistics as getEnterpriseStatistics } from '../../../../ee/app/license/server';
-import { Analytics, Team, VideoConf } from '../../../../server/sdk';
 import { getSettingsStatistics } from '../../../../server/lib/statistics/getSettingsStatistics';
 import { getMatrixFederationStatistics } from '../../../federation-v2/server/infrastructure/rocket-chat/statistics';
 import { isRunningMs } from '../../../../server/lib/isRunningMs';
diff --git a/apps/meteor/app/statistics/server/lib/telemetryEvents.ts b/apps/meteor/app/statistics/server/lib/telemetryEvents.ts
index d217eae35da..347ca7e7d8e 100644
--- a/apps/meteor/app/statistics/server/lib/telemetryEvents.ts
+++ b/apps/meteor/app/statistics/server/lib/telemetryEvents.ts
@@ -1,4 +1,4 @@
-import type { TelemetryMap, ITelemetryEvent, TelemetryEvents } from '../../../../server/sdk/types/ITelemetryEvent';
+import type { TelemetryMap, ITelemetryEvent, TelemetryEvents } from '@rocket.chat/core-services';
 
 type TelemetryEventResponse = Promise<any> | void;
 type TelemetryEventFunction<T extends TelemetryEvents> = (data: TelemetryMap[T]) => TelemetryEventResponse;
diff --git a/apps/meteor/app/user-status/server/methods/deleteCustomUserStatus.js b/apps/meteor/app/user-status/server/methods/deleteCustomUserStatus.js
index 8fa7e0cb4f9..d3452346de7 100644
--- a/apps/meteor/app/user-status/server/methods/deleteCustomUserStatus.js
+++ b/apps/meteor/app/user-status/server/methods/deleteCustomUserStatus.js
@@ -1,8 +1,8 @@
 import { Meteor } from 'meteor/meteor';
 import { CustomUserStatus } from '@rocket.chat/models';
+import { api } from '@rocket.chat/core-services';
 
 import { hasPermission } from '../../../authorization/server';
-import { api } from '../../../../server/sdk/api';
 
 Meteor.methods({
 	async deleteCustomUserStatus(userStatusID) {
diff --git a/apps/meteor/app/user-status/server/methods/insertOrUpdateUserStatus.js b/apps/meteor/app/user-status/server/methods/insertOrUpdateUserStatus.js
index c27e657a03d..5ab5e486073 100644
--- a/apps/meteor/app/user-status/server/methods/insertOrUpdateUserStatus.js
+++ b/apps/meteor/app/user-status/server/methods/insertOrUpdateUserStatus.js
@@ -1,9 +1,9 @@
 import { Meteor } from 'meteor/meteor';
 import s from 'underscore.string';
 import { CustomUserStatus } from '@rocket.chat/models';
+import { api } from '@rocket.chat/core-services';
 
 import { hasPermission } from '../../../authorization';
-import { api } from '../../../../server/sdk/api';
 
 Meteor.methods({
 	async insertOrUpdateUserStatus(userStatusData) {
diff --git a/apps/meteor/app/voip/server/startup.ts b/apps/meteor/app/voip/server/startup.ts
index e57fa27f0dc..5a998298349 100644
--- a/apps/meteor/app/voip/server/startup.ts
+++ b/apps/meteor/app/voip/server/startup.ts
@@ -1,5 +1,6 @@
+import { Voip } from '@rocket.chat/core-services';
+
 import { settings } from '../../settings/server';
-import { Voip } from '../../../server/sdk';
 
 settings.watch('VoIP_Enabled', async function (value: boolean) {
 	try {
diff --git a/apps/meteor/app/webdav/server/methods/addWebdavAccount.ts b/apps/meteor/app/webdav/server/methods/addWebdavAccount.ts
index bfee8173194..6e934cef9fe 100644
--- a/apps/meteor/app/webdav/server/methods/addWebdavAccount.ts
+++ b/apps/meteor/app/webdav/server/methods/addWebdavAccount.ts
@@ -1,10 +1,10 @@
 import { Meteor } from 'meteor/meteor';
 import { Match, check } from 'meteor/check';
 import { WebdavAccounts } from '@rocket.chat/models';
+import { api } from '@rocket.chat/core-services';
 
 import { settings } from '../../../settings/server';
 import { WebdavClientAdapter } from '../lib/webdavClientAdapter';
-import { api } from '../../../../server/sdk/api';
 
 Meteor.methods({
 	async addWebdavAccount(formData) {
diff --git a/apps/meteor/app/webdav/server/methods/removeWebdavAccount.ts b/apps/meteor/app/webdav/server/methods/removeWebdavAccount.ts
index f5cad1a9d00..c20f201e497 100644
--- a/apps/meteor/app/webdav/server/methods/removeWebdavAccount.ts
+++ b/apps/meteor/app/webdav/server/methods/removeWebdavAccount.ts
@@ -1,8 +1,8 @@
 import { Meteor } from 'meteor/meteor';
 import { check } from 'meteor/check';
 import { WebdavAccounts } from '@rocket.chat/models';
+import { api } from '@rocket.chat/core-services';
 
-import { api } from '../../../../server/sdk/api';
 import { methodDeprecationLogger } from '../../../lib/server/lib/deprecationWarningLogger';
 
 Meteor.methods({
diff --git a/apps/meteor/app/webdav/server/methods/uploadFileToWebdav.ts b/apps/meteor/app/webdav/server/methods/uploadFileToWebdav.ts
index 6e30c57c3d8..9f6c2dd3d63 100644
--- a/apps/meteor/app/webdav/server/methods/uploadFileToWebdav.ts
+++ b/apps/meteor/app/webdav/server/methods/uploadFileToWebdav.ts
@@ -1,6 +1,6 @@
 import { Meteor } from 'meteor/meteor';
+import { MeteorError } from '@rocket.chat/core-services';
 
-import { MeteorError } from '../../../../server/sdk/errors';
 import { settings } from '../../../settings/server';
 import { Logger } from '../../../logger/server';
 import { uploadFileToWebdav } from '../lib/uploadFileToWebdav';
diff --git a/apps/meteor/ee/app/license/server/getStatistics.ts b/apps/meteor/ee/app/license/server/getStatistics.ts
index 28d6b5c7100..e7c17b1f1f6 100644
--- a/apps/meteor/ee/app/license/server/getStatistics.ts
+++ b/apps/meteor/ee/app/license/server/getStatistics.ts
@@ -1,9 +1,9 @@
 import { log } from 'console';
 
 import { CannedResponse, LivechatPriority, LivechatTag, LivechatUnit } from '@rocket.chat/models';
+import { Analytics } from '@rocket.chat/core-services';
 
 import { getModules, getTags, hasLicense } from './license';
-import { Analytics } from '../../../../server/sdk';
 
 type ENTERPRISE_STATISTICS = GenericStats & Partial<EEOnlyStats>;
 
diff --git a/apps/meteor/ee/app/license/server/license.internalService.ts b/apps/meteor/ee/app/license/server/license.internalService.ts
index 973657566c6..b819e720eec 100644
--- a/apps/meteor/ee/app/license/server/license.internalService.ts
+++ b/apps/meteor/ee/app/license/server/license.internalService.ts
@@ -1,8 +1,7 @@
 import { debounce } from 'underscore';
+import type { ILicense } from '@rocket.chat/core-services';
+import { api, ServiceClassInternal } from '@rocket.chat/core-services';
 
-import { api } from '../../../../server/sdk/api';
-import type { ILicense } from '../../../../server/sdk/types/ILicense';
-import { ServiceClassInternal } from '../../../../server/sdk/types/ServiceClass';
 import { guestPermissions } from '../../authorization/lib/guestPermissions';
 import { resetEnterprisePermissions } from '../../authorization/server/resetEnterprisePermissions';
 import { getModules, hasLicense, isEnterprise, onModule, onValidateLicenses } from './license';
diff --git a/apps/meteor/ee/app/license/server/maxSeatsBanners.ts b/apps/meteor/ee/app/license/server/maxSeatsBanners.ts
index 312dd69525d..5a365c84a0d 100644
--- a/apps/meteor/ee/app/license/server/maxSeatsBanners.ts
+++ b/apps/meteor/ee/app/license/server/maxSeatsBanners.ts
@@ -4,8 +4,7 @@ import { TextObjectType } from '@rocket.chat/apps-engine/definition/uikit/blocks
 import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
 import type { IBanner } from '@rocket.chat/core-typings';
 import { BannerPlatform } from '@rocket.chat/core-typings';
-
-import { Banner } from '../../../../server/sdk';
+import { Banner } from '@rocket.chat/core-services';
 
 const WARNING_BANNER_ID = 'closeToSeatsLimit';
 const DANGER_BANNER_ID = 'reachedSeatsLimit';
diff --git a/apps/meteor/ee/app/livechat-enterprise/server/lib/Helper.js b/apps/meteor/ee/app/livechat-enterprise/server/lib/Helper.js
index 532736d7932..fd59783ccfb 100644
--- a/apps/meteor/ee/app/livechat-enterprise/server/lib/Helper.js
+++ b/apps/meteor/ee/app/livechat-enterprise/server/lib/Helper.js
@@ -6,6 +6,7 @@ import {
 	LivechatDepartment as LivechatDepartmentRaw,
 	LivechatCustomField,
 } from '@rocket.chat/models';
+import { api } from '@rocket.chat/core-services';
 
 import { memoizeDebounce } from './debounceByParams';
 import { Users, LivechatInquiry, LivechatRooms, Messages } from '../../../../../app/models/server';
@@ -14,7 +15,6 @@ import { RoutingManager } from '../../../../../app/livechat/server/lib/RoutingMa
 import { dispatchAgentDelegated } from '../../../../../app/livechat/server/lib/Helper';
 import { logger, helperLogger } from './logger';
 import { OmnichannelQueueInactivityMonitor } from './QueueInactivityMonitor';
-import { api } from '../../../../../server/sdk/api';
 
 export const getMaxNumberSimultaneousChat = async ({ agentId, departmentId }) => {
 	if (departmentId) {
diff --git a/apps/meteor/ee/app/settings/server/settings.internalService.ts b/apps/meteor/ee/app/settings/server/settings.internalService.ts
index 92324829313..5f27493a674 100644
--- a/apps/meteor/ee/app/settings/server/settings.internalService.ts
+++ b/apps/meteor/ee/app/settings/server/settings.internalService.ts
@@ -1,7 +1,7 @@
 import type { ISetting } from '@rocket.chat/core-typings';
+import { ServiceClassInternal } from '@rocket.chat/core-services';
+import type { IEnterpriseSettings } from '@rocket.chat/core-services';
 
-import { ServiceClassInternal } from '../../../../server/sdk/types/ServiceClass';
-import type { IEnterpriseSettings } from '../../../../server/sdk/types/IEnterpriseSettings';
 import { changeSettingValue } from './settings';
 
 export class EnterpriseSettings extends ServiceClassInternal implements IEnterpriseSettings {
diff --git a/apps/meteor/ee/app/teams-mention/server/EEMentionQueries.js b/apps/meteor/ee/app/teams-mention/server/EEMentionQueries.js
index 9272bdb35b2..c9dc8208968 100644
--- a/apps/meteor/ee/app/teams-mention/server/EEMentionQueries.js
+++ b/apps/meteor/ee/app/teams-mention/server/EEMentionQueries.js
@@ -1,4 +1,4 @@
-import { Team } from '../../../../server/sdk';
+import { Team } from '@rocket.chat/core-services';
 
 export const MentionQueriesEnterprise = {
 	getUsers(sup, usernames) {
diff --git a/apps/meteor/ee/app/teams-mention/server/EESpotlight.js b/apps/meteor/ee/app/teams-mention/server/EESpotlight.js
index 49fd7c007b5..203d62c7ff1 100644
--- a/apps/meteor/ee/app/teams-mention/server/EESpotlight.js
+++ b/apps/meteor/ee/app/teams-mention/server/EESpotlight.js
@@ -1,4 +1,4 @@
-import { Team } from '../../../../server/sdk';
+import { Team } from '@rocket.chat/core-services';
 
 export const SpotlightEnterprise = {
 	mapTeams(_, teams) {
diff --git a/apps/meteor/ee/app/teams-mention/server/index.ts b/apps/meteor/ee/app/teams-mention/server/index.ts
index edaa18cecc4..f4cd9ba850e 100644
--- a/apps/meteor/ee/app/teams-mention/server/index.ts
+++ b/apps/meteor/ee/app/teams-mention/server/index.ts
@@ -1,4 +1,5 @@
 import type { ITeamMember, IMessage } from '@rocket.chat/core-typings';
+import { Team } from '@rocket.chat/core-services';
 
 import { onLicense } from '../../license/server';
 import { overwriteClassOnLicense } from '../../license/server/license';
@@ -7,7 +8,6 @@ import { Spotlight } from '../../../../server/lib/spotlight';
 import { MentionQueries } from '../../../../app/mentions/server/server';
 import { callbacks } from '../../../../lib/callbacks';
 import { MentionQueriesEnterprise } from './EEMentionQueries';
-import { Team } from '../../../../server/sdk';
 
 interface IExtraDataForNotification {
 	userMentions: any[];
diff --git a/apps/meteor/ee/server/NetworkBroker.ts b/apps/meteor/ee/server/NetworkBroker.ts
index f6fb2a1038a..e57421780b0 100644
--- a/apps/meteor/ee/server/NetworkBroker.ts
+++ b/apps/meteor/ee/server/NetworkBroker.ts
@@ -1,9 +1,6 @@
 import type { ServiceBroker, Context, ServiceSchema } from 'moleculer';
-
-import { asyncLocalStorage } from '../../server/sdk';
-import type { IBroker, IBrokerNode, IServiceMetrics } from '../../server/sdk/types/IBroker';
-import type { IServiceClass } from '../../server/sdk/types/ServiceClass';
-import type { EventSignatures } from '../../server/sdk/lib/Events';
+import { asyncLocalStorage } from '@rocket.chat/core-services';
+import type { IBroker, IBrokerNode, IServiceMetrics, IServiceClass, EventSignatures } from '@rocket.chat/core-services';
 
 const events: { [k: string]: string } = {
 	onNodeConnected: '$node.connected',
@@ -72,7 +69,11 @@ export class NetworkBroker implements IBroker {
 	}
 
 	destroyService(instance: IServiceClass): void {
-		this.broker.destroyService(instance.getName());
+		const name = instance.getName();
+		if (!name) {
+			return;
+		}
+		this.broker.destroyService(name);
 	}
 
 	createService(instance: IServiceClass): void {
@@ -85,6 +86,9 @@ export class NetworkBroker implements IBroker {
 		const serviceInstance = instance as any;
 
 		const name = instance.getName();
+		if (!name) {
+			return;
+		}
 
 		if (!instance.isInternal()) {
 			instance.onEvent('shutdown', async (services) => {
diff --git a/apps/meteor/ee/server/configuration/videoConference.ts b/apps/meteor/ee/server/configuration/videoConference.ts
index f13776cee8b..60c0f511ea4 100644
--- a/apps/meteor/ee/server/configuration/videoConference.ts
+++ b/apps/meteor/ee/server/configuration/videoConference.ts
@@ -2,12 +2,12 @@ import { Meteor } from 'meteor/meteor';
 import type { IRoom, IUser, VideoConference } from '@rocket.chat/core-typings';
 import { VideoConferenceStatus } from '@rocket.chat/core-typings';
 import { Rooms, Subscriptions } from '@rocket.chat/models';
+import { VideoConf } from '@rocket.chat/core-services';
 
 import { onLicense } from '../../app/license/server';
 import { videoConfTypes } from '../../../server/lib/videoConfTypes';
 import { addSettings } from '../settings/video-conference';
 import { callbacks } from '../../../lib/callbacks';
-import { VideoConf } from '../../../server/sdk';
 
 Meteor.startup(() =>
 	onLicense('videoconference-enterprise', () => {
diff --git a/apps/meteor/ee/server/lib/ldap/Manager.ts b/apps/meteor/ee/server/lib/ldap/Manager.ts
index 716ce921baf..23eacc35894 100644
--- a/apps/meteor/ee/server/lib/ldap/Manager.ts
+++ b/apps/meteor/ee/server/lib/ldap/Manager.ts
@@ -1,6 +1,7 @@
 import type ldapjs from 'ldapjs';
 import type { ILDAPEntry, IUser, IRoom, ICreatedRoom, IRole, IImportUser } from '@rocket.chat/core-typings';
 import { Users as UsersRaw, Roles, Subscriptions as SubscriptionsRaw } from '@rocket.chat/models';
+import { Team } from '@rocket.chat/core-services';
 
 import type { ImporterAfterImportCallback } from '../../../../app/importer/server/definitions/IConversionCallbacks';
 import { settings } from '../../../../app/settings/server';
@@ -11,7 +12,6 @@ import { LDAPManager } from '../../../../server/lib/ldap/Manager';
 import { logger, searchLogger, mapLogger } from '../../../../server/lib/ldap/Logger';
 import { addUserToRoom, removeUserFromRoom, createRoom } from '../../../../app/lib/server/functions';
 import { syncUserRoles } from '../syncUserRoles';
-import { Team } from '../../../../server/sdk';
 import { ensureArray } from '../../../../lib/utils/arrayUtils';
 import { copyCustomFieldsLDAP } from './copyCustomFieldsLDAP';
 
diff --git a/apps/meteor/ee/server/lib/syncUserRoles.ts b/apps/meteor/ee/server/lib/syncUserRoles.ts
index 9d637a7848e..8779bf8fdc7 100644
--- a/apps/meteor/ee/server/lib/syncUserRoles.ts
+++ b/apps/meteor/ee/server/lib/syncUserRoles.ts
@@ -1,8 +1,8 @@
 import type { IUser, IRole, AtLeast } from '@rocket.chat/core-typings';
 import { Users } from '@rocket.chat/models';
+import { api } from '@rocket.chat/core-services';
 
 import { settings } from '../../../app/settings/server';
-import { api } from '../../../server/sdk/api';
 import { addUserRolesAsync } from '../../../server/lib/roles/addUserRoles';
 import { removeUserFromRolesAsync } from '../../../server/lib/roles/removeUserFromRoles';
 import { canAddNewUser } from '../../app/license/server/license';
diff --git a/apps/meteor/ee/server/local-services/ldap/service.ts b/apps/meteor/ee/server/local-services/ldap/service.ts
index 8cdd2e5463c..4fb5a18e502 100644
--- a/apps/meteor/ee/server/local-services/ldap/service.ts
+++ b/apps/meteor/ee/server/local-services/ldap/service.ts
@@ -1,6 +1,7 @@
-import { LDAPEEManager } from '../../lib/ldap/Manager';
+import { ServiceClassInternal } from '@rocket.chat/core-services';
+
 import type { ILDAPEEService } from '../../sdk/types/ILDAPEEService';
-import { ServiceClassInternal } from '../../../../server/sdk/types/ServiceClass';
+import { LDAPEEManager } from '../../lib/ldap/Manager';
 
 export class LDAPEEService extends ServiceClassInternal implements ILDAPEEService {
 	protected name = 'ldap-enterprise';
diff --git a/apps/meteor/ee/server/requestSeatsRoute.ts b/apps/meteor/ee/server/requestSeatsRoute.ts
index 69db2143bbd..1eac0db9c30 100644
--- a/apps/meteor/ee/server/requestSeatsRoute.ts
+++ b/apps/meteor/ee/server/requestSeatsRoute.ts
@@ -2,9 +2,9 @@ import type { IncomingMessage, ServerResponse } from 'http';
 
 import { Meteor } from 'meteor/meteor';
 import { WebApp } from 'meteor/webapp';
+import { Analytics } from '@rocket.chat/core-services';
 
 import { getSeatsRequestLink } from '../app/license/server/getSeatsRequestLink';
-import { Analytics } from '../../server/sdk';
 
 Meteor.startup(() => {
 	WebApp.connectHandlers.use(
diff --git a/apps/meteor/ee/server/sdk/index.ts b/apps/meteor/ee/server/sdk/index.ts
index bff3a66f12b..0a463a49884 100644
--- a/apps/meteor/ee/server/sdk/index.ts
+++ b/apps/meteor/ee/server/sdk/index.ts
@@ -1,4 +1,5 @@
+import { proxifyWithWait } from '@rocket.chat/core-services';
+
 import type { ILDAPEEService } from './types/ILDAPEEService';
-import { proxifyWithWait } from '../../../server/sdk/lib/proxify';
 
 export const LDAPEE = proxifyWithWait<ILDAPEEService>('ldap-enterprise');
diff --git a/apps/meteor/ee/server/services/Dockerfile b/apps/meteor/ee/server/services/Dockerfile
index 62641d57abe..e1dbd9825b6 100644
--- a/apps/meteor/ee/server/services/Dockerfile
+++ b/apps/meteor/ee/server/services/Dockerfile
@@ -11,6 +11,7 @@ COPY ./.yarnrc.yml .
 COPY ./.yarn/plugins .yarn/plugins
 COPY ./.yarn/releases .yarn/releases
 
+COPY ./packages/core-services packages/core-services
 COPY ./packages/core-typings packages/core-typings
 COPY ./packages/eslint-config packages/eslint-config
 COPY ./packages/rest-typings packages/rest-typings
@@ -32,6 +33,9 @@ ARG SERVICE
 
 WORKDIR /app
 
+COPY --from=build /app/packages/core-services/package.json /app/packages/core-services/package.json
+COPY --from=build /app/packages/core-services/dist /app/packages/core-services/dist
+
 COPY --from=build /app/packages/core-typings/package.json /app/packages/core-typings/package.json
 COPY --from=build /app/packages/core-typings/dist /app/packages/core-typings/dist
 
diff --git a/apps/meteor/ee/server/services/ecdh-proxy/ECDHProxy.ts b/apps/meteor/ee/server/services/ecdh-proxy/ECDHProxy.ts
index b29a82ad7c9..7a065d3d00c 100644
--- a/apps/meteor/ee/server/services/ecdh-proxy/ECDHProxy.ts
+++ b/apps/meteor/ee/server/services/ecdh-proxy/ECDHProxy.ts
@@ -1,4 +1,4 @@
-import { ServiceClass } from '../../../../server/sdk/types/ServiceClass';
+import { ServiceClass } from '@rocket.chat/core-services';
 
 import './lib/server';
 
diff --git a/apps/meteor/ee/server/services/ecdh-proxy/service.ts b/apps/meteor/ee/server/services/ecdh-proxy/service.ts
index 23533d0d6fe..7ef3e8d26dc 100755
--- a/apps/meteor/ee/server/services/ecdh-proxy/service.ts
+++ b/apps/meteor/ee/server/services/ecdh-proxy/service.ts
@@ -1,6 +1,7 @@
 import '../../startup/broker';
 
-import { api } from '../../../../server/sdk/api';
+import { api } from '@rocket.chat/core-services';
+
 import { ECDHProxy } from './ECDHProxy';
 
 api.registerService(new ECDHProxy());
diff --git a/apps/meteor/ee/server/services/package.json b/apps/meteor/ee/server/services/package.json
index 56ce9f5c2b5..e8c248e13b5 100644
--- a/apps/meteor/ee/server/services/package.json
+++ b/apps/meteor/ee/server/services/package.json
@@ -19,6 +19,7 @@
 	"license": "MIT",
 	"dependencies": {
 		"@rocket.chat/apps-engine": "^1.32.0",
+		"@rocket.chat/core-services": "workspace:^",
 		"@rocket.chat/core-typings": "workspace:^",
 		"@rocket.chat/emitter": "next",
 		"@rocket.chat/message-parser": "next",
diff --git a/apps/meteor/ee/server/startup/broker.ts b/apps/meteor/ee/server/startup/broker.ts
index e435d143cec..4d841c425b5 100644
--- a/apps/meteor/ee/server/startup/broker.ts
+++ b/apps/meteor/ee/server/startup/broker.ts
@@ -1,8 +1,8 @@
 import EJSON from 'ejson';
 import { Errors, Serializers, ServiceBroker } from 'moleculer';
 import { pino } from 'pino';
+import { isMeteorError, MeteorError } from '@rocket.chat/core-services';
 
-import { isMeteorError, MeteorError } from '../../../server/sdk/errors';
 import { NetworkBroker } from '../NetworkBroker';
 
 const {
diff --git a/apps/meteor/ee/server/startup/index.ts b/apps/meteor/ee/server/startup/index.ts
index 2cbfa70443d..4610795884a 100644
--- a/apps/meteor/ee/server/startup/index.ts
+++ b/apps/meteor/ee/server/startup/index.ts
@@ -3,7 +3,8 @@ import './engagementDashboard';
 import './seatsCap';
 import './services';
 import './upsell';
-import { api } from '../../../server/sdk/api';
+import { api } from '@rocket.chat/core-services';
+
 import { isRunningMs } from '../../../server/lib/isRunningMs';
 
 // only starts network broker if running in micro services mode
diff --git a/apps/meteor/ee/server/startup/services.ts b/apps/meteor/ee/server/startup/services.ts
index a3294a943a4..37ecf9a21a9 100644
--- a/apps/meteor/ee/server/startup/services.ts
+++ b/apps/meteor/ee/server/startup/services.ts
@@ -1,4 +1,5 @@
-import { api } from '../../../server/sdk/api';
+import { api } from '@rocket.chat/core-services';
+
 import { EnterpriseSettings } from '../../app/settings/server/settings.internalService';
 import { LDAPEEService } from '../local-services/ldap/service';
 import { LicenseService } from '../../app/license/server/license.internalService';
diff --git a/apps/meteor/package.json b/apps/meteor/package.json
index ecc9a09b6c8..b40da4cac3f 100644
--- a/apps/meteor/package.json
+++ b/apps/meteor/package.json
@@ -209,6 +209,7 @@
 		"@rocket.chat/api-client": "workspace:^",
 		"@rocket.chat/apps-engine": "1.36.0",
 		"@rocket.chat/cas-validate": "workspace:^",
+		"@rocket.chat/core-services": "workspace:^",
 		"@rocket.chat/core-typings": "workspace:^",
 		"@rocket.chat/css-in-js": "next",
 		"@rocket.chat/emitter": "next",
diff --git a/apps/meteor/server/configuration/ldap.ts b/apps/meteor/server/configuration/ldap.ts
index 2d88331cad8..46a57613e9f 100644
--- a/apps/meteor/server/configuration/ldap.ts
+++ b/apps/meteor/server/configuration/ldap.ts
@@ -1,7 +1,7 @@
 import { Accounts } from 'meteor/accounts-base';
+import { LDAP } from '@rocket.chat/core-services';
 
 import { callbacks } from '../../lib/callbacks';
-import { LDAP } from '../sdk';
 import { settings } from '../../app/settings/server';
 
 // Register ldap login handler
diff --git a/apps/meteor/server/cron/nps.js b/apps/meteor/server/cron/nps.js
index 20e1cc7f95c..c6b66b0dac5 100644
--- a/apps/meteor/server/cron/nps.js
+++ b/apps/meteor/server/cron/nps.js
@@ -1,5 +1,6 @@
+import { NPS } from '@rocket.chat/core-services';
+
 import { settings } from '../../app/settings/server';
-import { NPS } from '../sdk';
 
 function runNPS() {
 	// if NPS is disabled close any pending scheduled survey
diff --git a/apps/meteor/server/cron/videoConferences.ts b/apps/meteor/server/cron/videoConferences.ts
index 2d77c4c6fa6..da62aa28841 100644
--- a/apps/meteor/server/cron/videoConferences.ts
+++ b/apps/meteor/server/cron/videoConferences.ts
@@ -2,8 +2,7 @@ import type { SyncedCron } from 'meteor/littledata:synced-cron';
 import type { VideoConference } from '@rocket.chat/core-typings';
 import { VideoConferenceStatus } from '@rocket.chat/core-typings';
 import { VideoConference as VideoConferenceModel } from '@rocket.chat/models';
-
-import { VideoConf } from '../sdk';
+import { VideoConf } from '@rocket.chat/core-services';
 
 // 24 hours
 const VIDEO_CONFERENCE_TTL = 24 * 60 * 60 * 1000;
diff --git a/apps/meteor/server/lib/roles/addUserRoles.ts b/apps/meteor/server/lib/roles/addUserRoles.ts
index d12764e5a05..ea687ad113c 100644
--- a/apps/meteor/server/lib/roles/addUserRoles.ts
+++ b/apps/meteor/server/lib/roles/addUserRoles.ts
@@ -1,8 +1,8 @@
 import type { IRole, IUser, IRoom } from '@rocket.chat/core-typings';
 import { Users, Roles } from '@rocket.chat/models';
+import { MeteorError } from '@rocket.chat/core-services';
 
 import { validateRoleList } from './validateRoleList';
-import { MeteorError } from '../../sdk/errors';
 
 export const addUserRolesAsync = async (userId: IUser['_id'], roleIds: IRole['_id'][], scope?: IRoom['_id']): Promise<boolean> => {
 	if (!userId || !roleIds?.length) {
diff --git a/apps/meteor/server/lib/roles/insertRole.ts b/apps/meteor/server/lib/roles/insertRole.ts
index 500dab3e153..e3cb95fb05c 100644
--- a/apps/meteor/server/lib/roles/insertRole.ts
+++ b/apps/meteor/server/lib/roles/insertRole.ts
@@ -1,9 +1,8 @@
-import type { IRole } from '@rocket.chat/core-typings';
+import { api, MeteorError } from '@rocket.chat/core-services';
 import { Roles } from '@rocket.chat/models';
+import type { IRole } from '@rocket.chat/core-typings';
 
-import { MeteorError } from '../../sdk/errors';
 import { isValidRoleScope } from '../../../lib/roles/isValidRoleScope';
-import { api } from '../../sdk/api';
 
 type InsertRoleOptions = {
 	broadcastUpdate?: boolean;
diff --git a/apps/meteor/server/lib/roles/removeUserFromRoles.ts b/apps/meteor/server/lib/roles/removeUserFromRoles.ts
index bdf75fd897a..4df55b42532 100644
--- a/apps/meteor/server/lib/roles/removeUserFromRoles.ts
+++ b/apps/meteor/server/lib/roles/removeUserFromRoles.ts
@@ -1,8 +1,8 @@
 import type { IRole, IUser, IRoom } from '@rocket.chat/core-typings';
 import { Users, Roles } from '@rocket.chat/models';
+import { MeteorError } from '@rocket.chat/core-services';
 
 import { validateRoleList } from './validateRoleList';
-import { MeteorError } from '../../sdk/errors';
 
 export const removeUserFromRolesAsync = async (userId: IUser['_id'], roleIds: IRole['_id'][], scope?: IRoom['_id']): Promise<boolean> => {
 	if (!userId || !roleIds) {
diff --git a/apps/meteor/server/lib/roles/updateRole.ts b/apps/meteor/server/lib/roles/updateRole.ts
index b69f54f873d..694a954a7c1 100644
--- a/apps/meteor/server/lib/roles/updateRole.ts
+++ b/apps/meteor/server/lib/roles/updateRole.ts
@@ -1,9 +1,8 @@
 import type { IRole } from '@rocket.chat/core-typings';
 import { Roles } from '@rocket.chat/models';
+import { api, MeteorError } from '@rocket.chat/core-services';
 
-import { MeteorError } from '../../sdk/errors';
 import { isValidRoleScope } from '../../../lib/roles/isValidRoleScope';
-import { api } from '../../sdk/api';
 
 type UpdateRoleOptions = {
 	broadcastUpdate?: boolean;
diff --git a/apps/meteor/server/methods/addRoomLeader.js b/apps/meteor/server/methods/addRoomLeader.js
index 979b9df51d9..9560cc0d02c 100644
--- a/apps/meteor/server/methods/addRoomLeader.js
+++ b/apps/meteor/server/methods/addRoomLeader.js
@@ -1,11 +1,10 @@
 import { Meteor } from 'meteor/meteor';
 import { check } from 'meteor/check';
+import { api, Team } from '@rocket.chat/core-services';
 
 import { hasPermission } from '../../app/authorization';
 import { Users, Subscriptions, Messages } from '../../app/models/server';
 import { settings } from '../../app/settings/server';
-import { api } from '../sdk/api';
-import { Team } from '../sdk';
 
 Meteor.methods({
 	addRoomLeader(rid, userId) {
diff --git a/apps/meteor/server/methods/addRoomModerator.js b/apps/meteor/server/methods/addRoomModerator.js
index 3feadda06eb..a4f136f7e4c 100644
--- a/apps/meteor/server/methods/addRoomModerator.js
+++ b/apps/meteor/server/methods/addRoomModerator.js
@@ -1,11 +1,10 @@
 import { Meteor } from 'meteor/meteor';
 import { check } from 'meteor/check';
+import { api, Team } from '@rocket.chat/core-services';
 
 import { hasPermission } from '../../app/authorization';
 import { Users, Subscriptions, Messages } from '../../app/models/server';
 import { settings } from '../../app/settings/server';
-import { api } from '../sdk/api';
-import { Team } from '../sdk';
 
 Meteor.methods({
 	addRoomModerator(rid, userId) {
diff --git a/apps/meteor/server/methods/addRoomOwner.js b/apps/meteor/server/methods/addRoomOwner.js
index 01af5a76858..665dbd6ce0f 100644
--- a/apps/meteor/server/methods/addRoomOwner.js
+++ b/apps/meteor/server/methods/addRoomOwner.js
@@ -1,11 +1,10 @@
 import { Meteor } from 'meteor/meteor';
 import { check } from 'meteor/check';
+import { api, Team } from '@rocket.chat/core-services';
 
 import { hasPermission } from '../../app/authorization';
 import { Users, Subscriptions, Messages } from '../../app/models/server';
-import { Team } from '../sdk';
 import { settings } from '../../app/settings/server';
-import { api } from '../sdk/api';
 
 Meteor.methods({
 	addRoomOwner(rid, userId) {
diff --git a/apps/meteor/server/methods/browseChannels.js b/apps/meteor/server/methods/browseChannels.js
index 747ce3df9a6..0770bc8b2e5 100644
--- a/apps/meteor/server/methods/browseChannels.js
+++ b/apps/meteor/server/methods/browseChannels.js
@@ -4,6 +4,7 @@ import s from 'underscore.string';
 import mem from 'mem';
 import { escapeRegExp } from '@rocket.chat/string-helpers';
 import { Rooms, Users } from '@rocket.chat/models';
+import { Team } from '@rocket.chat/core-services';
 
 import { hasPermission } from '../../app/authorization/server';
 import { Subscriptions } from '../../app/models/server';
@@ -11,7 +12,6 @@ import { settings } from '../../app/settings/server';
 import { getFederationDomain } from '../../app/federation/server/lib/getFederationDomain';
 import { isFederationEnabled } from '../../app/federation/server/lib/isFederationEnabled';
 import { federationSearchUsers } from '../../app/federation/server/handler';
-import { Team } from '../sdk';
 
 const sortChannels = function (field, direction) {
 	switch (field) {
diff --git a/apps/meteor/server/methods/eraseRoom.ts b/apps/meteor/server/methods/eraseRoom.ts
index 7610f937a62..4474ab750f3 100644
--- a/apps/meteor/server/methods/eraseRoom.ts
+++ b/apps/meteor/server/methods/eraseRoom.ts
@@ -1,5 +1,6 @@
 import { Meteor } from 'meteor/meteor';
 import { check } from 'meteor/check';
+import { Team } from '@rocket.chat/core-services';
 
 import { methodDeprecationLogger } from '../../app/lib/server/lib/deprecationWarningLogger';
 import { deleteRoom } from '../../app/lib/server/functions/deleteRoom';
@@ -7,7 +8,6 @@ import { hasPermission } from '../../app/authorization/server';
 import { Rooms, Messages } from '../../app/models/server';
 import { Apps } from '../../app/apps/server';
 import { roomCoordinator } from '../lib/rooms/roomCoordinator';
-import { Team } from '../sdk';
 
 export async function eraseRoom(rid: string, uid: string): Promise<void> {
 	const room = Rooms.findOneById(rid);
diff --git a/apps/meteor/server/methods/removeRoomLeader.js b/apps/meteor/server/methods/removeRoomLeader.js
index 7fef6f36b11..6504e408f15 100644
--- a/apps/meteor/server/methods/removeRoomLeader.js
+++ b/apps/meteor/server/methods/removeRoomLeader.js
@@ -1,11 +1,10 @@
 import { Meteor } from 'meteor/meteor';
 import { check } from 'meteor/check';
+import { api, Team } from '@rocket.chat/core-services';
 
 import { hasPermission } from '../../app/authorization';
 import { Users, Subscriptions, Messages } from '../../app/models/server';
 import { settings } from '../../app/settings/server';
-import { api } from '../sdk/api';
-import { Team } from '../sdk';
 
 Meteor.methods({
 	removeRoomLeader(rid, userId) {
diff --git a/apps/meteor/server/methods/removeRoomModerator.js b/apps/meteor/server/methods/removeRoomModerator.js
index 7312c6f2e10..8382b27185e 100644
--- a/apps/meteor/server/methods/removeRoomModerator.js
+++ b/apps/meteor/server/methods/removeRoomModerator.js
@@ -1,11 +1,10 @@
 import { Meteor } from 'meteor/meteor';
 import { check } from 'meteor/check';
+import { api, Team } from '@rocket.chat/core-services';
 
 import { hasPermission } from '../../app/authorization';
 import { Users, Subscriptions, Messages } from '../../app/models/server';
 import { settings } from '../../app/settings/server';
-import { api } from '../sdk/api';
-import { Team } from '../sdk';
 
 Meteor.methods({
 	removeRoomModerator(rid, userId) {
diff --git a/apps/meteor/server/methods/removeRoomOwner.ts b/apps/meteor/server/methods/removeRoomOwner.ts
index 37a1aeac4e8..0cd9b546d81 100644
--- a/apps/meteor/server/methods/removeRoomOwner.ts
+++ b/apps/meteor/server/methods/removeRoomOwner.ts
@@ -1,11 +1,10 @@
 import { Meteor } from 'meteor/meteor';
 import { check } from 'meteor/check';
+import { api, Team } from '@rocket.chat/core-services';
 
 import { hasPermission, getUsersInRole } from '../../app/authorization/server';
 import { Users, Subscriptions, Messages } from '../../app/models/server';
 import { settings } from '../../app/settings/server';
-import { api } from '../sdk/api';
-import { Team } from '../sdk';
 
 Meteor.methods({
 	async removeRoomOwner(rid, userId) {
diff --git a/apps/meteor/server/methods/removeUserFromRoom.ts b/apps/meteor/server/methods/removeUserFromRoom.ts
index cada69ad136..31ad9a6473d 100644
--- a/apps/meteor/server/methods/removeUserFromRoom.ts
+++ b/apps/meteor/server/methods/removeUserFromRoom.ts
@@ -1,11 +1,11 @@
 import { Meteor } from 'meteor/meteor';
 import { Match, check } from 'meteor/check';
+import { Team } from '@rocket.chat/core-services';
 
 import { hasPermission, hasRole, getUsersInRole } from '../../app/authorization/server';
 import { removeUserFromRolesAsync } from '../lib/roles/removeUserFromRoles';
 import { Users, Subscriptions, Rooms, Messages } from '../../app/models/server';
 import { callbacks } from '../../lib/callbacks';
-import { Team } from '../sdk';
 import { roomCoordinator } from '../lib/rooms/roomCoordinator';
 import { RoomMemberActions } from '../../definition/IRoomTypeConfig';
 
diff --git a/apps/meteor/server/methods/resetAvatar.js b/apps/meteor/server/methods/resetAvatar.js
index a57586a4d48..8ea1d815901 100644
--- a/apps/meteor/server/methods/resetAvatar.js
+++ b/apps/meteor/server/methods/resetAvatar.js
@@ -1,11 +1,11 @@
 import { Meteor } from 'meteor/meteor';
 import { DDPRateLimiter } from 'meteor/ddp-rate-limiter';
+import { api } from '@rocket.chat/core-services';
 
 import { FileUpload } from '../../app/file-upload';
 import { Users } from '../../app/models/server';
 import { settings } from '../../app/settings/server';
 import { hasPermission } from '../../app/authorization/server';
-import { api } from '../sdk/api';
 
 Meteor.methods({
 	resetAvatar(userId) {
diff --git a/apps/meteor/server/methods/userPresence.ts b/apps/meteor/server/methods/userPresence.ts
index 1797dc839e2..716310b78d6 100644
--- a/apps/meteor/server/methods/userPresence.ts
+++ b/apps/meteor/server/methods/userPresence.ts
@@ -1,7 +1,6 @@
 import { UserStatus } from '@rocket.chat/core-typings';
 import { Meteor } from 'meteor/meteor';
-
-import { Presence } from '../sdk';
+import { Presence } from '@rocket.chat/core-services';
 
 Meteor.methods({
 	'UserPresence:setDefaultStatus'(status): Promise<boolean> | undefined {
diff --git a/apps/meteor/server/modules/core-apps/banner.module.ts b/apps/meteor/server/modules/core-apps/banner.module.ts
index b5fec72162d..bc850fea207 100644
--- a/apps/meteor/server/modules/core-apps/banner.module.ts
+++ b/apps/meteor/server/modules/core-apps/banner.module.ts
@@ -1,5 +1,5 @@
-import type { IUiKitCoreApp } from '../../sdk/types/IUiKitCoreApp';
-import { Banner } from '../../sdk';
+import { Banner } from '@rocket.chat/core-services';
+import type { IUiKitCoreApp } from '@rocket.chat/core-services';
 
 export class BannerModule implements IUiKitCoreApp {
 	appId = 'banner-core';
diff --git a/apps/meteor/server/modules/core-apps/nps.module.ts b/apps/meteor/server/modules/core-apps/nps.module.ts
index 2bc5eb601fe..68ebeffd97c 100644
--- a/apps/meteor/server/modules/core-apps/nps.module.ts
+++ b/apps/meteor/server/modules/core-apps/nps.module.ts
@@ -1,5 +1,6 @@
-import type { IUiKitCoreApp } from '../../sdk/types/IUiKitCoreApp';
-import { Banner, NPS } from '../../sdk';
+import type { IUiKitCoreApp } from '@rocket.chat/core-services';
+import { Banner, NPS } from '@rocket.chat/core-services';
+
 import { createModal } from './nps/createModal';
 
 export class Nps implements IUiKitCoreApp {
diff --git a/apps/meteor/server/modules/core-apps/videoconf.module.ts b/apps/meteor/server/modules/core-apps/videoconf.module.ts
index cf8954e0795..f67616f17b6 100644
--- a/apps/meteor/server/modules/core-apps/videoconf.module.ts
+++ b/apps/meteor/server/modules/core-apps/videoconf.module.ts
@@ -1,7 +1,6 @@
 import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
-
-import type { IUiKitCoreApp } from '../../sdk/types/IUiKitCoreApp';
-import { VideoConf } from '../../sdk';
+import type { IUiKitCoreApp } from '@rocket.chat/core-services';
+import { VideoConf } from '@rocket.chat/core-services';
 
 export class VideoConfModule implements IUiKitCoreApp {
 	appId = 'videoconf-core';
diff --git a/apps/meteor/server/modules/listeners/listeners.module.ts b/apps/meteor/server/modules/listeners/listeners.module.ts
index 0f546ac8d50..1209434b5f3 100644
--- a/apps/meteor/server/modules/listeners/listeners.module.ts
+++ b/apps/meteor/server/modules/listeners/listeners.module.ts
@@ -1,9 +1,9 @@
 import { UserStatus, isSettingColor } from '@rocket.chat/core-typings';
 import { parse } from '@rocket.chat/message-parser';
+import type { IServiceClass } from '@rocket.chat/core-services';
+import { EnterpriseSettings } from '@rocket.chat/core-services';
 
-import type { IServiceClass } from '../../sdk/types/ServiceClass';
 import type { NotificationsModule } from '../notifications/notifications.module';
-import { EnterpriseSettings } from '../../sdk/index';
 import { settings } from '../../../app/settings/server/cached';
 
 const isMessageParserDisabled = process.env.DISABLE_MESSAGE_PARSER === 'true';
@@ -209,6 +209,7 @@ export class ListenersModule {
 
 		service.onEvent('watch.settings', async ({ clientAction, setting }): Promise<void> => {
 			if (clientAction !== 'removed') {
+				// TODO check if setting is EE before calling this
 				const result = await EnterpriseSettings.changeSettingValue(setting);
 				if (result !== undefined && !(result instanceof Error)) {
 					setting.value = result;
diff --git a/apps/meteor/server/modules/notifications/notifications.module.ts b/apps/meteor/server/modules/notifications/notifications.module.ts
index 92b5f90112c..e21a4d9a953 100644
--- a/apps/meteor/server/modules/notifications/notifications.module.ts
+++ b/apps/meteor/server/modules/notifications/notifications.module.ts
@@ -1,8 +1,8 @@
 import type { IStreamer, IStreamerConstructor, IPublication } from 'meteor/rocketchat:streamer';
 import type { ISubscription, IOmnichannelRoom, IUser } from '@rocket.chat/core-typings';
 import { Rooms, Subscriptions, Users, Settings } from '@rocket.chat/models';
+import { Authorization, VideoConf } from '@rocket.chat/core-services';
 
-import { Authorization, VideoConf } from '../../sdk';
 import { emit, StreamPresence } from '../../../app/notifications/server/lib/Presence';
 import { SystemLogger } from '../../lib/logger/system';
 import { streamDeprecationLogger } from '../../../app/lib/server/lib/deprecationWarningLogger';
diff --git a/apps/meteor/server/modules/streamer/streamer.module.ts b/apps/meteor/server/modules/streamer/streamer.module.ts
index ea54a8ef672..bbd8a735383 100644
--- a/apps/meteor/server/modules/streamer/streamer.module.ts
+++ b/apps/meteor/server/modules/streamer/streamer.module.ts
@@ -1,8 +1,8 @@
 import { EventEmitter } from 'eventemitter3';
 import type { IPublication, Rule, Connection, DDPSubscription, IStreamer, IRules, TransformMessage } from 'meteor/rocketchat:streamer';
+import { MeteorError } from '@rocket.chat/core-services';
 
 import { SystemLogger } from '../../lib/logger/system';
-import { MeteorError } from '../../sdk/errors';
 
 class StreamerCentralClass extends EventEmitter {
 	public instances: Record<string, Streamer> = {};
diff --git a/apps/meteor/server/modules/watchers/watchers.module.ts b/apps/meteor/server/modules/watchers/watchers.module.ts
index c8390caddb7..de784340b2f 100644
--- a/apps/meteor/server/modules/watchers/watchers.module.ts
+++ b/apps/meteor/server/modules/watchers/watchers.module.ts
@@ -34,9 +34,9 @@ import {
 	PbxEvents,
 	Permissions,
 } from '@rocket.chat/models';
+import type { EventSignatures } from '@rocket.chat/core-services';
 
 import { subscriptionFields, roomFields } from './publishFields';
-import type { EventSignatures } from '../../sdk/lib/Events';
 import type { DatabaseWatcher } from '../../database/DatabaseWatcher';
 
 type BroadcastCallback = <T extends keyof EventSignatures>(event: T, ...args: Parameters<EventSignatures[T]>) => Promise<void>;
diff --git a/apps/meteor/server/sdk/api.ts b/apps/meteor/server/sdk/api.ts
deleted file mode 100644
index e99fc6bfcc1..00000000000
--- a/apps/meteor/server/sdk/api.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { isRunningMs } from '../lib/isRunningMs';
-import { Api } from './lib/Api';
-import { LocalBroker } from './lib/LocalBroker';
-
-export const api = new Api();
-
-if (!isRunningMs()) {
-	api.setBroker(new LocalBroker());
-	api.start();
-}
diff --git a/apps/meteor/server/sdk/index.ts b/apps/meteor/server/sdk/index.ts
deleted file mode 100644
index 6ffccfce083..00000000000
--- a/apps/meteor/server/sdk/index.ts
+++ /dev/null
@@ -1,50 +0,0 @@
-import type { IServiceContext } from './types/ServiceClass';
-import { proxify, proxifyWithWait } from './lib/proxify';
-import type { IAuthorization } from './types/IAuthorization';
-import type { IPresence } from './types/IPresence';
-import type { IAccount } from './types/IAccount';
-import type { ILicense } from './types/ILicense';
-import type { IMeteor } from './types/IMeteor';
-import type { IUiKitCoreAppService } from './types/IUiKitCoreApp';
-import type { IEnterpriseSettings } from './types/IEnterpriseSettings';
-import type { IBannerService } from './types/IBannerService';
-import type { INPSService } from './types/INPSService';
-import type { ITeamService } from './types/ITeamService';
-import type { IRoomService } from './types/IRoomService';
-import type { IMediaService } from './types/IMediaService';
-import type { IVoipService } from './types/IVoipService';
-import type { IOmnichannelVoipService } from './types/IOmnichannelVoipService';
-import type { IAnalyticsService } from './types/IAnalyticsService';
-import type { ILDAPService } from './types/ILDAPService';
-import type { IVideoConfService } from './types/IVideoConfService';
-import type { ISAUMonitorService } from './types/ISAUMonitorService';
-import type { IDeviceManagementService } from './types/IDeviceManagementService';
-import { FibersContextStore } from './lib/ContextStore';
-import type { IUploadService } from './types/IUploadService';
-
-// TODO think in a way to not have to pass the service name to proxify here as well
-export const Authorization = proxifyWithWait<IAuthorization>('authorization');
-export const Presence = proxifyWithWait<IPresence>('presence');
-export const Account = proxifyWithWait<IAccount>('accounts');
-export const License = proxifyWithWait<ILicense>('license');
-export const MeteorService = proxifyWithWait<IMeteor>('meteor');
-export const Banner = proxifyWithWait<IBannerService>('banner');
-export const UiKitCoreApp = proxifyWithWait<IUiKitCoreAppService>('uikit-core-app');
-export const NPS = proxifyWithWait<INPSService>('nps');
-export const Team = proxifyWithWait<ITeamService>('team');
-export const Room = proxifyWithWait<IRoomService>('room');
-export const Media = proxifyWithWait<IMediaService>('media');
-export const Voip = proxifyWithWait<IVoipService>('voip');
-export const LivechatVoip = proxifyWithWait<IOmnichannelVoipService>('omnichannel-voip');
-export const Analytics = proxifyWithWait<IAnalyticsService>('analytics');
-export const LDAP = proxifyWithWait<ILDAPService>('ldap');
-export const SAUMonitor = proxifyWithWait<ISAUMonitorService>('sau-monitor');
-export const DeviceManagement = proxifyWithWait<IDeviceManagementService>('device-management');
-export const VideoConf = proxifyWithWait<IVideoConfService>('video-conference');
-export const Upload = proxifyWithWait<IUploadService>('upload');
-// Calls without wait. Means that the service is optional and the result may be an error
-// of service/method not available
-export const EnterpriseSettings = proxify<IEnterpriseSettings>('ee-settings');
-
-// TODO Evalute again using AsyncContextStore instead of FibersContextStore in a future Meteor release (after 2.5)
-export const asyncLocalStorage = new FibersContextStore<IServiceContext>();
diff --git a/apps/meteor/server/services/analytics/service.ts b/apps/meteor/server/services/analytics/service.ts
index 06e7b63ee46..3feb520a550 100644
--- a/apps/meteor/server/services/analytics/service.ts
+++ b/apps/meteor/server/services/analytics/service.ts
@@ -1,8 +1,7 @@
 import type { IAnalyticsSeatRequest } from '@rocket.chat/core-typings';
 import { Analytics } from '@rocket.chat/models';
-
-import { ServiceClassInternal } from '../../sdk/types/ServiceClass';
-import type { IAnalyticsService } from '../../sdk/types/IAnalyticsService';
+import { ServiceClassInternal } from '@rocket.chat/core-services';
+import type { IAnalyticsService } from '@rocket.chat/core-services';
 
 export class AnalyticsService extends ServiceClassInternal implements IAnalyticsService {
 	protected name = 'analytics';
diff --git a/apps/meteor/server/services/apps-engine/service.ts b/apps/meteor/server/services/apps-engine/service.ts
index f8485299e9a..37c1abf74a7 100644
--- a/apps/meteor/server/services/apps-engine/service.ts
+++ b/apps/meteor/server/services/apps-engine/service.ts
@@ -1,5 +1,6 @@
-import { ServiceClassInternal } from '../../sdk/types/ServiceClass';
-import type { IAppsEngineService } from '../../sdk/types/IAppsEngineService';
+import { ServiceClassInternal } from '@rocket.chat/core-services';
+import type { IAppsEngineService } from '@rocket.chat/core-services';
+
 import { Apps, AppEvents } from '../../../app/apps/server/orchestrator';
 
 export class AppsEngineService extends ServiceClassInternal implements IAppsEngineService {
diff --git a/apps/meteor/server/services/authorization/canAccessRoom.ts b/apps/meteor/server/services/authorization/canAccessRoom.ts
index d2876ac7dc1..b96cae69a20 100644
--- a/apps/meteor/server/services/authorization/canAccessRoom.ts
+++ b/apps/meteor/server/services/authorization/canAccessRoom.ts
@@ -1,9 +1,9 @@
 import { TEAM_TYPE } from '@rocket.chat/core-typings';
 import type { IUser, ITeam } from '@rocket.chat/core-typings';
 import { Subscriptions, Rooms, Settings, TeamMember, Team } from '@rocket.chat/models';
+import { Authorization } from '@rocket.chat/core-services';
+import type { RoomAccessValidator } from '@rocket.chat/core-services';
 
-import { Authorization } from '../../sdk';
-import type { RoomAccessValidator } from '../../sdk/types/IAuthorization';
 import { canAccessRoomLivechat } from './canAccessRoomLivechat';
 import { canAccessRoomVoip } from './canAccessRoomVoip';
 
diff --git a/apps/meteor/server/services/authorization/canAccessRoomLivechat.ts b/apps/meteor/server/services/authorization/canAccessRoomLivechat.ts
index e9a0ae3bd45..e31dd3c009c 100644
--- a/apps/meteor/server/services/authorization/canAccessRoomLivechat.ts
+++ b/apps/meteor/server/services/authorization/canAccessRoomLivechat.ts
@@ -1,9 +1,7 @@
 import type { IOmnichannelRoom } from '@rocket.chat/core-typings';
 import { Rooms } from '@rocket.chat/models';
-
-import type { IAuthorizationLivechat } from '../../sdk/types/IAuthorizationLivechat';
-import { proxifyWithWait } from '../../sdk/lib/proxify';
-import type { RoomAccessValidator } from '../../sdk/types/IAuthorization';
+import type { IAuthorizationLivechat, RoomAccessValidator } from '@rocket.chat/core-services';
+import { proxifyWithWait } from '@rocket.chat/core-services';
 
 export const AuthorizationLivechat = proxifyWithWait<IAuthorizationLivechat>('authorization-livechat');
 
diff --git a/apps/meteor/server/services/authorization/canAccessRoomVoip.ts b/apps/meteor/server/services/authorization/canAccessRoomVoip.ts
index fc2ea3aa54b..e4c9515a06c 100644
--- a/apps/meteor/server/services/authorization/canAccessRoomVoip.ts
+++ b/apps/meteor/server/services/authorization/canAccessRoomVoip.ts
@@ -1,8 +1,6 @@
 import { Rooms } from '@rocket.chat/models';
-
-import type { IAuthorizationVoip } from '../../sdk/types/IAuthorizationVoip';
-import { proxifyWithWait } from '../../sdk/lib/proxify';
-import type { RoomAccessValidator } from '../../sdk/types/IAuthorization';
+import type { IAuthorizationVoip, RoomAccessValidator } from '@rocket.chat/core-services';
+import { proxifyWithWait } from '@rocket.chat/core-services';
 
 export const AuthorizationVoip = proxifyWithWait<IAuthorizationVoip>('authorization-livechat');
 
diff --git a/apps/meteor/server/services/authorization/service.ts b/apps/meteor/server/services/authorization/service.ts
index 57b762a8d1d..223ca0e0852 100644
--- a/apps/meteor/server/services/authorization/service.ts
+++ b/apps/meteor/server/services/authorization/service.ts
@@ -1,12 +1,11 @@
 import mem from 'mem';
 import type { IUser, IRole, IRoom, ISubscription } from '@rocket.chat/core-typings';
 import { Subscriptions, Rooms, Users, Roles, Permissions } from '@rocket.chat/models';
+import type { IAuthorization, RoomAccessValidator } from '@rocket.chat/core-services';
+import { License, ServiceClass } from '@rocket.chat/core-services';
 
-import type { IAuthorization, RoomAccessValidator } from '../../sdk/types/IAuthorization';
-import { ServiceClass } from '../../sdk/types/ServiceClass';
 import { AuthorizationUtils } from '../../../app/authorization/lib/AuthorizationUtils';
 import { canAccessRoom } from './canAccessRoom';
-import { License } from '../../sdk';
 
 import './canAccessRoomLivechat';
 
diff --git a/apps/meteor/server/services/banner/service.ts b/apps/meteor/server/services/banner/service.ts
index d45933376d0..36eb388ccae 100644
--- a/apps/meteor/server/services/banner/service.ts
+++ b/apps/meteor/server/services/banner/service.ts
@@ -1,10 +1,8 @@
 import { v4 as uuidv4 } from 'uuid';
 import type { BannerPlatform, IBanner, IBannerDismiss, Optional, IUser } from '@rocket.chat/core-typings';
 import { Banners, BannersDismiss, Users } from '@rocket.chat/models';
-
-import { ServiceClassInternal } from '../../sdk/types/ServiceClass';
-import type { IBannerService } from '../../sdk/types/IBannerService';
-import { api } from '../../sdk/api';
+import { api, ServiceClassInternal } from '@rocket.chat/core-services';
+import type { IBannerService } from '@rocket.chat/core-services';
 
 export class BannerService extends ServiceClassInternal implements IBannerService {
 	protected name = 'banner';
diff --git a/apps/meteor/server/services/device-management/service.ts b/apps/meteor/server/services/device-management/service.ts
index 1b620ce2e69..75f36390889 100644
--- a/apps/meteor/server/services/device-management/service.ts
+++ b/apps/meteor/server/services/device-management/service.ts
@@ -1,6 +1,7 @@
-import type { IDeviceManagementService } from '../../sdk/types/IDeviceManagementService';
+import type { IDeviceManagementService } from '@rocket.chat/core-services';
+import { ServiceClassInternal } from '@rocket.chat/core-services';
+
 import { deviceManagementEvents } from './events';
-import { ServiceClassInternal } from '../../sdk/types/ServiceClass';
 
 export class DeviceManagementService extends ServiceClassInternal implements IDeviceManagementService {
 	protected name = 'device-management';
diff --git a/apps/meteor/server/services/federation/service.ts b/apps/meteor/server/services/federation/service.ts
index 5601e3efc14..151a567753f 100644
--- a/apps/meteor/server/services/federation/service.ts
+++ b/apps/meteor/server/services/federation/service.ts
@@ -1,5 +1,6 @@
-import { ServiceClassInternal } from '../../sdk/types/ServiceClass';
-import type { IFederationService } from '../../sdk/types/IFederationService';
+import { ServiceClassInternal } from '@rocket.chat/core-services';
+import type { IFederationService } from '@rocket.chat/core-services';
+
 import { federationUserServiceSender } from '../../../app/federation-v2/server';
 import { settings } from '../../../app/settings/server';
 
diff --git a/apps/meteor/server/services/image/service.ts b/apps/meteor/server/services/image/service.ts
index e5fd9682f76..ae88e53d0e1 100644
--- a/apps/meteor/server/services/image/service.ts
+++ b/apps/meteor/server/services/image/service.ts
@@ -4,9 +4,8 @@ import stream from 'stream';
 import ft from 'file-type';
 import sharp from 'sharp';
 import isSvg from 'is-svg';
-
-import { ServiceClassInternal } from '../../sdk/types/ServiceClass';
-import type { IMediaService, ResizeResult } from '../../sdk/types/IMediaService';
+import { ServiceClassInternal } from '@rocket.chat/core-services';
+import type { IMediaService, ResizeResult } from '@rocket.chat/core-services';
 
 /* eslint-disable  @typescript-eslint/no-var-requires */
 const ExifTransformer = require('exif-be-gone');
diff --git a/apps/meteor/server/services/ldap/service.ts b/apps/meteor/server/services/ldap/service.ts
index b420c25b840..f730a9aeaa6 100644
--- a/apps/meteor/server/services/ldap/service.ts
+++ b/apps/meteor/server/services/ldap/service.ts
@@ -1,8 +1,8 @@
 import type { LDAPLoginResult } from '@rocket.chat/core-typings';
+import type { ILDAPService } from '@rocket.chat/core-services';
+import { ServiceClassInternal } from '@rocket.chat/core-services';
 
 import { LDAPManager } from '../../lib/ldap/Manager';
-import type { ILDAPService } from '../../sdk/types/ILDAPService';
-import { ServiceClassInternal } from '../../sdk/types/ServiceClass';
 
 export class LDAPService extends ServiceClassInternal implements ILDAPService {
 	protected name = 'ldap';
diff --git a/apps/meteor/server/services/meteor/service.ts b/apps/meteor/server/services/meteor/service.ts
index ed5d53497ab..cbc8bb1f3da 100644
--- a/apps/meteor/server/services/meteor/service.ts
+++ b/apps/meteor/server/services/meteor/service.ts
@@ -3,15 +3,13 @@ import { ServiceConfiguration } from 'meteor/service-configuration';
 import { MongoInternals } from 'meteor/mongo';
 import { Users } from '@rocket.chat/models';
 import type { ILivechatAgent } from '@rocket.chat/core-typings';
+import { api, ServiceClassInternal } from '@rocket.chat/core-services';
+import type { AutoUpdateRecord, IMeteor } from '@rocket.chat/core-services';
 
 import { metrics } from '../../../app/metrics';
-import { ServiceClassInternal } from '../../sdk/types/ServiceClass';
-import type { AutoUpdateRecord, IMeteor } from '../../sdk/types/IMeteor';
-import { api } from '../../sdk/api';
 import { Livechat } from '../../../app/livechat/server';
 import { settings } from '../../../app/settings/server';
 import { setValue, updateValue } from '../../../app/settings/server/raw';
-import { RoutingManager } from '../../../app/livechat/server/lib/RoutingManager';
 import { onlineAgents, monitorAgents } from '../../../app/livechat/server/lib/stream/agentStatus';
 import { matrixBroadCastActions } from '../../stream/streamBroadcast';
 import { triggerHandler } from '../../../app/integrations/server/lib/triggerHandler';
@@ -19,7 +17,6 @@ import { ListenersModule } from '../../modules/listeners/listeners.module';
 import notifications from '../../../app/notifications/server/lib/Notifications';
 import { configureEmailInboxes } from '../../features/EmailInbox/EmailInbox';
 import { use } from '../../../app/settings/server/Middleware';
-import type { IRoutingManagerConfig } from '../../../definition/IRoutingManagerConfig';
 
 type Callbacks = {
 	added(id: string, record: object): void;
@@ -292,11 +289,4 @@ export class MeteorService extends ServiceClassInternal implements IMeteor {
 	async notifyGuestStatusChanged(token: string, status: string): Promise<void> {
 		return Livechat.notifyGuestStatusChanged(token, status);
 	}
-
-	getRoutingManagerConfig(): IRoutingManagerConfig {
-		// return false if called before routing method is set
-		// this will cause that oplog events received on early stages of server startup
-		// won't be fired (at least, inquiry events)
-		return RoutingManager.isMethodSet() && RoutingManager.getConfig();
-	}
 }
diff --git a/apps/meteor/server/services/nps/getAndCreateNpsSurvey.ts b/apps/meteor/server/services/nps/getAndCreateNpsSurvey.ts
index c62e30c205d..9c0ca13a3e4 100644
--- a/apps/meteor/server/services/nps/getAndCreateNpsSurvey.ts
+++ b/apps/meteor/server/services/nps/getAndCreateNpsSurvey.ts
@@ -1,10 +1,10 @@
 import { HTTP } from 'meteor/http';
 import { Meteor } from 'meteor/meteor';
 import type { UiKitBannerPayload, IBanner, BannerPlatform } from '@rocket.chat/core-typings';
+import { Banner } from '@rocket.chat/core-services';
 
 import { settings } from '../../../app/settings/server';
 import { getWorkspaceAccessToken } from '../../../app/cloud/server';
-import { Banner } from '../../sdk';
 import { SystemLogger } from '../../lib/logger/system';
 
 type NpsSurveyData = {
diff --git a/apps/meteor/server/services/nps/service.ts b/apps/meteor/server/services/nps/service.ts
index 4c0110b65b9..dcbe235a323 100644
--- a/apps/meteor/server/services/nps/service.ts
+++ b/apps/meteor/server/services/nps/service.ts
@@ -3,10 +3,9 @@ import { createHash } from 'crypto';
 import type { INpsVote, INps } from '@rocket.chat/core-typings';
 import { NPSStatus, INpsVoteStatus } from '@rocket.chat/core-typings';
 import { Nps, NpsVote, Settings } from '@rocket.chat/models';
+import type { INPSService, NPSVotePayload, NPSCreatePayload } from '@rocket.chat/core-services';
+import { ServiceClassInternal, Banner, NPS } from '@rocket.chat/core-services';
 
-import type { INPSService, NPSVotePayload, NPSCreatePayload } from '../../sdk/types/INPSService';
-import { ServiceClassInternal } from '../../sdk/types/ServiceClass';
-import { Banner, NPS } from '../../sdk';
 import { sendNpsResults } from './sendNpsResults';
 import { getBannerForAdmins, notifyAdmins } from './notification';
 import { SystemLogger } from '../../lib/logger/system';
diff --git a/apps/meteor/server/services/omnichannel-voip/internalTypes.ts b/apps/meteor/server/services/omnichannel-voip/internalTypes.ts
index 704af7bd7a6..6a42321a980 100644
--- a/apps/meteor/server/services/omnichannel-voip/internalTypes.ts
+++ b/apps/meteor/server/services/omnichannel-voip/internalTypes.ts
@@ -1,22 +1,3 @@
-import type { IVoipRoom, IMessage } from '@rocket.chat/core-typings';
-import type { FindOptions } from 'mongodb';
-
-export type FindVoipRoomsParams = {
-	agents?: string[];
-	open?: boolean;
-	createdAt?: { start?: string; end?: string };
-	closedAt?: { start?: string; end?: string };
-	tags?: string[];
-	queue?: string;
-	visitorId?: string;
-	options?: {
-		sort?: FindOptions<IVoipRoom>['sort'];
-		count?: number;
-		fields?: Record<string, unknown>;
-		offset?: number;
-	};
-	direction?: IVoipRoom['direction'];
-	roomName?: string;
-};
+import type { IMessage } from '@rocket.chat/core-typings';
 
 export type IOmniRoomClosingMessage = Pick<IMessage, 't' | 'groupable'> & Partial<Pick<IMessage, 'msg'>>;
diff --git a/apps/meteor/server/services/omnichannel-voip/service.ts b/apps/meteor/server/services/omnichannel-voip/service.ts
index 19de573d24a..1d4b58a33fd 100644
--- a/apps/meteor/server/services/omnichannel-voip/service.ts
+++ b/apps/meteor/server/services/omnichannel-voip/service.ts
@@ -14,14 +14,12 @@ import type {
 import { isILivechatVisitor, OmnichannelSourceType, isVoipRoom, VoipClientEvents } from '@rocket.chat/core-typings';
 import type { PaginatedResult } from '@rocket.chat/rest-typings';
 import { Users, VoipRoom, PbxEvents } from '@rocket.chat/models';
+import type { IOmnichannelVoipService, FindVoipRoomsParams } from '@rocket.chat/core-services';
+import { api, ServiceClassInternal, Voip } from '@rocket.chat/core-services';
 
-import type { IOmnichannelVoipService } from '../../sdk/types/IOmnichannelVoipService';
-import { ServiceClassInternal } from '../../sdk/types/ServiceClass';
 import { Logger } from '../../lib/logger/Logger';
-import { Voip } from '../../sdk';
 import { sendMessage } from '../../../app/lib/server/functions/sendMessage';
-import type { FindVoipRoomsParams, IOmniRoomClosingMessage } from './internalTypes';
-import { api } from '../../sdk/api';
+import type { IOmniRoomClosingMessage } from './internalTypes';
 
 export class OmnichannelVoipService extends ServiceClassInternal implements IOmnichannelVoipService {
 	protected name = 'omnichannel-voip';
diff --git a/apps/meteor/server/services/omnichannel/service.ts b/apps/meteor/server/services/omnichannel/service.ts
index bf0063446f8..a0208c29461 100644
--- a/apps/meteor/server/services/omnichannel/service.ts
+++ b/apps/meteor/server/services/omnichannel/service.ts
@@ -1,5 +1,6 @@
-import { ServiceClassInternal } from '../../sdk/types/ServiceClass';
-import type { IOmnichannelService } from '../../sdk/types/IOmnichannelService';
+import { ServiceClassInternal } from '@rocket.chat/core-services';
+import type { IOmnichannelService } from '@rocket.chat/core-services';
+
 import { Livechat } from '../../../app/livechat/server';
 
 export class OmnichannelService extends ServiceClassInternal implements IOmnichannelService {
diff --git a/apps/meteor/server/services/push/service.ts b/apps/meteor/server/services/push/service.ts
index c123d2a4b94..87f96a3aae2 100644
--- a/apps/meteor/server/services/push/service.ts
+++ b/apps/meteor/server/services/push/service.ts
@@ -1,7 +1,6 @@
 import { PushToken } from '@rocket.chat/models';
-
-import type { IPushService } from '../../sdk/types/IPushService';
-import { ServiceClassInternal } from '../../sdk/types/ServiceClass';
+import type { IPushService } from '@rocket.chat/core-services';
+import { ServiceClassInternal } from '@rocket.chat/core-services';
 
 export class PushService extends ServiceClassInternal implements IPushService {
 	protected name = 'push';
diff --git a/apps/meteor/server/services/room/service.ts b/apps/meteor/server/services/room/service.ts
index b1c880d7f79..4bf24606be4 100644
--- a/apps/meteor/server/services/room/service.ts
+++ b/apps/meteor/server/services/room/service.ts
@@ -1,9 +1,8 @@
 import type { IRoom, IUser } from '@rocket.chat/core-typings';
 import { Users } from '@rocket.chat/models';
+import { ServiceClassInternal, Authorization } from '@rocket.chat/core-services';
+import type { ICreateRoomParams, IRoomService } from '@rocket.chat/core-services';
 
-import { ServiceClassInternal } from '../../sdk/types/ServiceClass';
-import type { ICreateRoomParams, IRoomService } from '../../sdk/types/IRoomService';
-import { Authorization } from '../../sdk';
 import { createRoom } from '../../../app/lib/server/functions/createRoom'; // TODO remove this import
 
 export class RoomService extends ServiceClassInternal implements IRoomService {
diff --git a/apps/meteor/server/services/sauMonitor/service.ts b/apps/meteor/server/services/sauMonitor/service.ts
index a7cc83531ea..a0b36bb2016 100644
--- a/apps/meteor/server/services/sauMonitor/service.ts
+++ b/apps/meteor/server/services/sauMonitor/service.ts
@@ -1,7 +1,8 @@
 // import type { Db } from 'mongodb';
 
-import { ServiceClassInternal } from '../../sdk/types/ServiceClass';
-import type { ISAUMonitorService } from '../../sdk/types/ISAUMonitorService';
+import { ServiceClassInternal } from '@rocket.chat/core-services';
+import type { ISAUMonitorService } from '@rocket.chat/core-services';
+
 import { sauEvents } from './events';
 
 export class SAUMonitorService extends ServiceClassInternal implements ISAUMonitorService {
diff --git a/apps/meteor/server/services/startup.ts b/apps/meteor/server/services/startup.ts
index 90ac1e9ed83..79be55d3a1e 100644
--- a/apps/meteor/server/services/startup.ts
+++ b/apps/meteor/server/services/startup.ts
@@ -1,7 +1,7 @@
 import { MongoInternals } from 'meteor/mongo';
+import { api } from '@rocket.chat/core-services';
 
 import { AnalyticsService } from './analytics/service';
-import { api } from '../sdk/api';
 import { AppsEngineService } from './apps-engine/service';
 import { AuthorizationLivechat } from '../../app/livechat/server/roomAccessValidator.internalService';
 import { BannerService } from './banner/service';
diff --git a/apps/meteor/server/services/team/service.ts b/apps/meteor/server/services/team/service.ts
index e99c527ae79..dab34cab30b 100644
--- a/apps/meteor/server/services/team/service.ts
+++ b/apps/meteor/server/services/team/service.ts
@@ -14,13 +14,7 @@ import type {
 import { TEAM_TYPE } from '@rocket.chat/core-typings';
 import { Team, Rooms, Subscriptions, Users, TeamMember } from '@rocket.chat/models';
 import type { InsertionModel } from '@rocket.chat/model-typings';
-
-import { checkUsernameAvailability } from '../../../app/lib/server/functions';
-import { addUserToRoom } from '../../../app/lib/server/functions/addUserToRoom';
-import { removeUserFromRoom } from '../../../app/lib/server/functions/removeUserFromRoom';
-import { getSubscribedRoomsForUserWithDetails } from '../../../app/lib/server/functions/getRoomsWithSingleOwner';
-import { Messages } from '../../../app/models/server';
-import { Room, Authorization } from '../../sdk';
+import { Room, Authorization, ServiceClassInternal } from '@rocket.chat/core-services';
 import type {
 	IListRoomsFilter,
 	ITeamAutocompleteResult,
@@ -30,8 +24,13 @@ import type {
 	ITeamMemberParams,
 	ITeamService,
 	ITeamUpdateData,
-} from '../../sdk/types/ITeamService';
-import { ServiceClassInternal } from '../../sdk/types/ServiceClass';
+} from '@rocket.chat/core-services';
+
+import { checkUsernameAvailability } from '../../../app/lib/server/functions';
+import { addUserToRoom } from '../../../app/lib/server/functions/addUserToRoom';
+import { removeUserFromRoom } from '../../../app/lib/server/functions/removeUserFromRoom';
+import { getSubscribedRoomsForUserWithDetails } from '../../../app/lib/server/functions/getRoomsWithSingleOwner';
+import { Messages } from '../../../app/models/server';
 import { saveRoomName } from '../../../app/channel-settings/server';
 import { saveRoomType } from '../../../app/channel-settings/server/functions/saveRoomType';
 
diff --git a/apps/meteor/server/services/uikit-core-app/service.ts b/apps/meteor/server/services/uikit-core-app/service.ts
index 4eef47aa0a0..a9eddf69ce8 100644
--- a/apps/meteor/server/services/uikit-core-app/service.ts
+++ b/apps/meteor/server/services/uikit-core-app/service.ts
@@ -1,5 +1,5 @@
-import { ServiceClassInternal } from '../../sdk/types/ServiceClass';
-import type { IUiKitCoreApp, IUiKitCoreAppService } from '../../sdk/types/IUiKitCoreApp';
+import { ServiceClassInternal } from '@rocket.chat/core-services';
+import type { IUiKitCoreApp, IUiKitCoreAppService } from '@rocket.chat/core-services';
 
 const registeredApps = new Map();
 
diff --git a/apps/meteor/server/services/upload/service.ts b/apps/meteor/server/services/upload/service.ts
index 3bdc910ee80..8166012c17e 100644
--- a/apps/meteor/server/services/upload/service.ts
+++ b/apps/meteor/server/services/upload/service.ts
@@ -1,13 +1,8 @@
-import type { IMessage, IUpload } from '@rocket.chat/core-typings';
+import { ServiceClassInternal } from '@rocket.chat/core-services';
 import { Meteor } from 'meteor/meteor';
+import type { IMessage, IUpload } from '@rocket.chat/core-typings';
+import type { ISendFileLivechatMessageParams, ISendFileMessageParams, IUploadFileParams, IUploadService } from '@rocket.chat/core-services';
 
-import { ServiceClassInternal } from '../../sdk/types/ServiceClass';
-import type {
-	ISendFileLivechatMessageParams,
-	ISendFileMessageParams,
-	IUploadFileParams,
-	IUploadService,
-} from '../../sdk/types/IUploadService';
 import { FileUpload } from '../../../app/file-upload/server';
 
 export class UploadService extends ServiceClassInternal implements IUploadService {
diff --git a/apps/meteor/server/services/video-conference/service.ts b/apps/meteor/server/services/video-conference/service.ts
index 39894ed85ed..0785fbd0fb0 100644
--- a/apps/meteor/server/services/video-conference/service.ts
+++ b/apps/meteor/server/services/video-conference/service.ts
@@ -30,16 +30,15 @@ import type { IBlock } from '@rocket.chat/apps-engine/definition/uikit';
 import { TAPi18n } from 'meteor/rocketchat:tap-i18n';
 import type { PaginatedResult } from '@rocket.chat/rest-typings';
 import { Users, VideoConference as VideoConferenceModel, Rooms, Messages, Subscriptions } from '@rocket.chat/models';
+import type { IVideoConfService, VideoConferenceJoinOptions } from '@rocket.chat/core-services';
+import { api, ServiceClassInternal } from '@rocket.chat/core-services';
 
-import type { IVideoConfService, VideoConferenceJoinOptions } from '../../sdk/types/IVideoConfService';
-import { ServiceClassInternal } from '../../sdk/types/ServiceClass';
 import { Apps } from '../../../app/apps/server';
 import { sendMessage } from '../../../app/lib/server/functions/sendMessage';
 import { settings } from '../../../app/settings/server';
 import { videoConfProviders } from '../../lib/videoConfProviders';
 import { videoConfTypes } from '../../lib/videoConfTypes';
 import { updateCounter } from '../../../app/statistics/server/functions/updateStatsCounter';
-import { api } from '../../sdk/api';
 import { readSecondaryPreferred } from '../../database/readSecondaryPreferred';
 import { availabilityErrors } from '../../../lib/videoConference/constants';
 import { callbacks } from '../../../lib/callbacks';
diff --git a/apps/meteor/server/services/voip/connector/asterisk/ami/ContinuousMonitor.ts b/apps/meteor/server/services/voip/connector/asterisk/ami/ContinuousMonitor.ts
index 2aef44cd957..30744ce888d 100644
--- a/apps/meteor/server/services/voip/connector/asterisk/ami/ContinuousMonitor.ts
+++ b/apps/meteor/server/services/voip/connector/asterisk/ami/ContinuousMonitor.ts
@@ -44,12 +44,12 @@ import {
 	isICallHangupEvent,
 } from '@rocket.chat/core-typings';
 import { Users, PbxEvents } from '@rocket.chat/models';
+import { api } from '@rocket.chat/core-services';
 
 import { Command, CommandType } from '../Command';
 import { Logger } from '../../../../../lib/logger/Logger';
 import { CallbackContext } from './CallbackContext';
 // import { sendMessage } from '../../../../../../app/lib/server/functions/sendMessage';
-import { api } from '../../../../../sdk/api';
 import { ACDQueue } from './ACDQueue';
 import { Commands } from '../Commands';
 
diff --git a/apps/meteor/server/services/voip/service.ts b/apps/meteor/server/services/voip/service.ts
index 4e892735009..380b45b667e 100644
--- a/apps/meteor/server/services/voip/service.ts
+++ b/apps/meteor/server/services/voip/service.ts
@@ -12,15 +12,14 @@ import type {
 	IQueueMembershipSubscription,
 	IRegistrationInfo,
 } from '@rocket.chat/core-typings';
+import type { IVoipService } from '@rocket.chat/core-services';
+import { api, ServiceClassInternal } from '@rocket.chat/core-services';
 
-import type { IVoipService } from '../../sdk/types/IVoipService';
-import { ServiceClassInternal } from '../../sdk/types/ServiceClass';
 import { Logger } from '../../lib/logger/Logger';
 import { CommandHandler } from './connector/asterisk/CommandHandler';
 import { CommandType } from './connector/asterisk/Command';
 import { Commands } from './connector/asterisk/Commands';
 import { getServerConfigDataFromSettings, voipEnabled } from './lib/Helper';
-import { api } from '../../sdk/api';
 
 export class VoipService extends ServiceClassInternal implements IVoipService {
 	protected name = 'voip';
@@ -95,10 +94,6 @@ export class VoipService extends ServiceClassInternal implements IVoipService {
 		return getServerConfigDataFromSettings(type);
 	}
 
-	getConnector(): CommandHandler {
-		return this.commandHandler;
-	}
-
 	async getQueueSummary(): Promise<IVoipConnectorResult> {
 		return this.commandHandler.executeCommand(Commands.queue_summary);
 	}
diff --git a/apps/meteor/server/startup/index.ts b/apps/meteor/server/startup/index.ts
index 44f291a9f82..cb2ef39b7a9 100644
--- a/apps/meteor/server/startup/index.ts
+++ b/apps/meteor/server/startup/index.ts
@@ -13,6 +13,7 @@ import { isRunningMs } from '../lib/isRunningMs';
 
 // only starts network broker if running in micro services mode
 if (!isRunningMs()) {
+	require('./localServices');
 	require('./watchDb');
 	require('./presence');
 }
diff --git a/apps/meteor/server/startup/localServices.ts b/apps/meteor/server/startup/localServices.ts
new file mode 100644
index 00000000000..e1ab692bb2b
--- /dev/null
+++ b/apps/meteor/server/startup/localServices.ts
@@ -0,0 +1,12 @@
+import { api, LocalBroker } from '@rocket.chat/core-services';
+
+import { StreamerCentral } from '../modules/streamer/streamer.module';
+
+const broker = new LocalBroker();
+
+broker.onBroadcast((eventName: string, args: unknown[]) => {
+	StreamerCentral.emit('broadcast', 'local', 'broadcast', [{ eventName, args }]);
+});
+
+api.setBroker(broker);
+api.start();
diff --git a/apps/meteor/server/startup/presence.ts b/apps/meteor/server/startup/presence.ts
index e56bb7283bb..f8fd1ef4508 100644
--- a/apps/meteor/server/startup/presence.ts
+++ b/apps/meteor/server/startup/presence.ts
@@ -1,8 +1,7 @@
 import { Accounts } from 'meteor/accounts-base';
 import { Meteor } from 'meteor/meteor';
 import { InstanceStatus } from 'meteor/konecty:multiple-instances-status';
-
-import { Presence } from '../sdk';
+import { Presence } from '@rocket.chat/core-services';
 
 Meteor.startup(function () {
 	const nodeId = InstanceStatus.id();
diff --git a/apps/meteor/server/startup/presenceTroubleshoot.ts b/apps/meteor/server/startup/presenceTroubleshoot.ts
index 6b949dd0239..168e5eae4eb 100644
--- a/apps/meteor/server/startup/presenceTroubleshoot.ts
+++ b/apps/meteor/server/startup/presenceTroubleshoot.ts
@@ -1,5 +1,6 @@
+import { Presence } from '@rocket.chat/core-services';
+
 import { settings } from '../../app/settings/server';
-import { Presence } from '../sdk';
 
 // maybe this setting should disable the listener to 'presence.status' event on listerners.module.ts
 settings.watch('Troubleshoot_Disable_Presence_Broadcast', async function (value) {
diff --git a/apps/meteor/server/startup/watchDb.ts b/apps/meteor/server/startup/watchDb.ts
index 8579b1f670f..b932553cb27 100644
--- a/apps/meteor/server/startup/watchDb.ts
+++ b/apps/meteor/server/startup/watchDb.ts
@@ -1,9 +1,9 @@
 import { MongoInternals } from 'meteor/mongo';
+import { api } from '@rocket.chat/core-services';
 
 import { DatabaseWatcher } from '../database/DatabaseWatcher';
 import { db } from '../database/utils';
 import { initWatchers } from '../modules/watchers/watchers.module';
-import { api } from '../sdk/api';
 import { metrics } from '../../app/metrics/server/lib/metrics';
 import { SystemLogger } from '../lib/logger/system';
 import { Logger } from '../lib/logger/Logger';
diff --git a/apps/meteor/tests/unit/server/sdk/errors.tests.ts b/apps/meteor/tests/unit/server/sdk/errors.tests.ts
index 212ffa5d84d..1793775ba1e 100644
--- a/apps/meteor/tests/unit/server/sdk/errors.tests.ts
+++ b/apps/meteor/tests/unit/server/sdk/errors.tests.ts
@@ -1,6 +1,5 @@
 import { expect } from 'chai';
-
-import { MeteorError } from '../../../../server/sdk/errors';
+import { MeteorError } from '@rocket.chat/core-services';
 
 describe('MeteorError', () => {
 	it('should create an error with no reason like Meteor.Error', () => {
diff --git a/ee/apps/account-service/Dockerfile b/ee/apps/account-service/Dockerfile
index c27bf31f9e5..53c9f739420 100644
--- a/ee/apps/account-service/Dockerfile
+++ b/ee/apps/account-service/Dockerfile
@@ -4,12 +4,18 @@ ARG SERVICE
 
 WORKDIR /app
 
+COPY ./packages/core-services/package.json packages/core-services/package.json
+COPY ./packages/core-services/dist packages/core-services/dist
+
 COPY ./packages/core-typings/package.json packages/core-typings/package.json
 COPY ./packages/core-typings/dist packages/core-typings/dist
+
 COPY ./packages/rest-typings/package.json packages/rest-typings/package.json
 COPY ./packages/rest-typings/dist packages/rest-typings/dist
+
 COPY ./packages/model-typings/package.json packages/model-typings/package.json
 COPY ./packages/model-typings/dist packages/model-typings/dist
+
 COPY ./packages/models/package.json packages/models/package.json
 COPY ./packages/models/dist packages/models/dist
 
diff --git a/ee/apps/account-service/package.json b/ee/apps/account-service/package.json
index afbaa4d3e61..e4a7b53c95a 100644
--- a/ee/apps/account-service/package.json
+++ b/ee/apps/account-service/package.json
@@ -15,6 +15,7 @@
 	],
 	"author": "Rocket.Chat",
 	"dependencies": {
+		"@rocket.chat/core-services": "workspace:^",
 		"@rocket.chat/core-typings": "workspace:^",
 		"@rocket.chat/emitter": "next",
 		"@rocket.chat/model-typings": "workspace:^",
diff --git a/ee/apps/account-service/src/Account.ts b/ee/apps/account-service/src/Account.ts
index 34dce6271dc..36d474d3da8 100644
--- a/ee/apps/account-service/src/Account.ts
+++ b/ee/apps/account-service/src/Account.ts
@@ -1,7 +1,7 @@
 import { Settings } from '@rocket.chat/models';
+import { ServiceClass } from '@rocket.chat/core-services';
+import type { IAccount, ILoginResult } from '@rocket.chat/core-services';
 
-import { ServiceClass } from '../../../../apps/meteor/server/sdk/types/ServiceClass';
-import type { IAccount, ILoginResult } from '../../../../apps/meteor/server/sdk/types/IAccount';
 import { removeSession } from './lib/removeSession';
 import { loginViaResume } from './lib/loginViaResume';
 import { loginViaUsername } from './lib/loginViaUsername';
diff --git a/ee/apps/account-service/src/lib/loginViaResume.ts b/ee/apps/account-service/src/lib/loginViaResume.ts
index 265f5779726..ab9272053da 100644
--- a/ee/apps/account-service/src/lib/loginViaResume.ts
+++ b/ee/apps/account-service/src/lib/loginViaResume.ts
@@ -1,9 +1,9 @@
 import type { IUser } from '@rocket.chat/core-typings';
 import { Users } from '@rocket.chat/models';
+import type { ILoginResult } from '@rocket.chat/core-services';
+import { MeteorError } from '@rocket.chat/core-services';
 
 import { _hashLoginToken, _tokenExpiration } from './utils';
-import type { ILoginResult } from '../../../../../apps/meteor/server/sdk/types/IAccount';
-import { MeteorError } from '../../../../../apps/meteor/server/sdk/errors';
 
 export async function loginViaResume(resume: string, loginExpiration: number): Promise<false | ILoginResult> {
 	const hashedToken = _hashLoginToken(resume);
diff --git a/ee/apps/account-service/src/lib/loginViaUsername.ts b/ee/apps/account-service/src/lib/loginViaUsername.ts
index c5f7cd6afbc..c630238bd08 100644
--- a/ee/apps/account-service/src/lib/loginViaUsername.ts
+++ b/ee/apps/account-service/src/lib/loginViaUsername.ts
@@ -1,8 +1,8 @@
 import type { IUser } from '@rocket.chat/core-typings';
 import { Users } from '@rocket.chat/models';
+import type { ILoginResult } from '@rocket.chat/core-services';
 
 import { _generateStampedLoginToken, _hashStampedToken, _tokenExpiration, validatePassword } from './utils';
-import type { ILoginResult } from '../../../../../apps/meteor/server/sdk/types/IAccount';
 import { saveSession } from './saveSession';
 
 export async function loginViaUsername(
diff --git a/ee/apps/account-service/src/service.ts b/ee/apps/account-service/src/service.ts
index 94885a74ff3..65f219650f8 100755
--- a/ee/apps/account-service/src/service.ts
+++ b/ee/apps/account-service/src/service.ts
@@ -1,7 +1,7 @@
 import type { Document } from 'mongodb';
 import polka from 'polka';
+import { api } from '@rocket.chat/core-services';
 
-import { api } from '../../../../apps/meteor/server/sdk/api';
 import { broker } from '../../../../apps/meteor/ee/server/startup/broker';
 import { Collections, getCollection, getConnection } from '../../../../apps/meteor/ee/server/services/mongo';
 import { registerServiceModels } from '../../../../apps/meteor/ee/server/lib/registerServiceModels';
diff --git a/ee/apps/authorization-service/Dockerfile b/ee/apps/authorization-service/Dockerfile
index c27bf31f9e5..53c9f739420 100644
--- a/ee/apps/authorization-service/Dockerfile
+++ b/ee/apps/authorization-service/Dockerfile
@@ -4,12 +4,18 @@ ARG SERVICE
 
 WORKDIR /app
 
+COPY ./packages/core-services/package.json packages/core-services/package.json
+COPY ./packages/core-services/dist packages/core-services/dist
+
 COPY ./packages/core-typings/package.json packages/core-typings/package.json
 COPY ./packages/core-typings/dist packages/core-typings/dist
+
 COPY ./packages/rest-typings/package.json packages/rest-typings/package.json
 COPY ./packages/rest-typings/dist packages/rest-typings/dist
+
 COPY ./packages/model-typings/package.json packages/model-typings/package.json
 COPY ./packages/model-typings/dist packages/model-typings/dist
+
 COPY ./packages/models/package.json packages/models/package.json
 COPY ./packages/models/dist packages/models/dist
 
diff --git a/ee/apps/authorization-service/package.json b/ee/apps/authorization-service/package.json
index aa084d9a5b4..ca5bd41d0e7 100644
--- a/ee/apps/authorization-service/package.json
+++ b/ee/apps/authorization-service/package.json
@@ -15,6 +15,7 @@
 	],
 	"author": "Rocket.Chat",
 	"dependencies": {
+		"@rocket.chat/core-services": "workspace:^",
 		"@rocket.chat/core-typings": "workspace:^",
 		"@rocket.chat/emitter": "next",
 		"@rocket.chat/model-typings": "workspace:^",
diff --git a/ee/apps/authorization-service/src/service.ts b/ee/apps/authorization-service/src/service.ts
index 9abfddf9ed8..5fd78d143a0 100755
--- a/ee/apps/authorization-service/src/service.ts
+++ b/ee/apps/authorization-service/src/service.ts
@@ -1,7 +1,7 @@
 import type { Document } from 'mongodb';
 import polka from 'polka';
+import { api } from '@rocket.chat/core-services';
 
-import { api } from '../../../../apps/meteor/server/sdk/api';
 import { broker } from '../../../../apps/meteor/ee/server/startup/broker';
 import { Collections, getCollection, getConnection } from '../../../../apps/meteor/ee/server/services/mongo';
 import { registerServiceModels } from '../../../../apps/meteor/ee/server/lib/registerServiceModels';
diff --git a/ee/apps/ddp-streamer/Dockerfile b/ee/apps/ddp-streamer/Dockerfile
index c27bf31f9e5..53c9f739420 100644
--- a/ee/apps/ddp-streamer/Dockerfile
+++ b/ee/apps/ddp-streamer/Dockerfile
@@ -4,12 +4,18 @@ ARG SERVICE
 
 WORKDIR /app
 
+COPY ./packages/core-services/package.json packages/core-services/package.json
+COPY ./packages/core-services/dist packages/core-services/dist
+
 COPY ./packages/core-typings/package.json packages/core-typings/package.json
 COPY ./packages/core-typings/dist packages/core-typings/dist
+
 COPY ./packages/rest-typings/package.json packages/rest-typings/package.json
 COPY ./packages/rest-typings/dist packages/rest-typings/dist
+
 COPY ./packages/model-typings/package.json packages/model-typings/package.json
 COPY ./packages/model-typings/dist packages/model-typings/dist
+
 COPY ./packages/models/package.json packages/models/package.json
 COPY ./packages/models/dist packages/models/dist
 
diff --git a/ee/apps/ddp-streamer/package.json b/ee/apps/ddp-streamer/package.json
index 56daab2e2cd..added8c88cb 100644
--- a/ee/apps/ddp-streamer/package.json
+++ b/ee/apps/ddp-streamer/package.json
@@ -16,6 +16,7 @@
 	"author": "Rocket.Chat",
 	"dependencies": {
 		"@rocket.chat/apps-engine": "^1.32.0",
+		"@rocket.chat/core-services": "workspace:^",
 		"@rocket.chat/core-typings": "workspace:^",
 		"@rocket.chat/emitter": "next",
 		"@rocket.chat/model-typings": "workspace:^",
diff --git a/ee/apps/ddp-streamer/src/DDPStreamer.ts b/ee/apps/ddp-streamer/src/DDPStreamer.ts
index 23f24701ba8..acd620003af 100644
--- a/ee/apps/ddp-streamer/src/DDPStreamer.ts
+++ b/ee/apps/ddp-streamer/src/DDPStreamer.ts
@@ -2,12 +2,11 @@ import crypto from 'crypto';
 
 import polka from 'polka';
 import WebSocket from 'ws';
+import { MeteorService, Presence, ServiceClass } from '@rocket.chat/core-services';
 
 import type { NotificationsModule } from '../../../../apps/meteor/server/modules/notifications/notifications.module';
 import { ListenersModule } from '../../../../apps/meteor/server/modules/listeners/listeners.module';
 import { StreamerCentral } from '../../../../apps/meteor/server/modules/streamer/streamer.module';
-import { MeteorService, Presence } from '../../../../apps/meteor/server/sdk';
-import { ServiceClass } from '../../../../apps/meteor/server/sdk/types/ServiceClass';
 import { Client } from './Client';
 import { events, server } from './configureServer';
 import { DDP_EVENTS } from './constants';
@@ -99,13 +98,13 @@ export class DDPStreamer extends ServiceClass {
 			const { userId, connection } = info;
 
 			Presence.newConnection(userId, connection.id, nodeID);
-			this.api.broadcast('accounts.login', { userId, connection });
+			this.api?.broadcast('accounts.login', { userId, connection });
 		});
 
 		server.on(DDP_EVENTS.LOGGEDOUT, (info) => {
 			const { userId, connection } = info;
 
-			this.api.broadcast('accounts.logout', { userId, connection });
+			this.api?.broadcast('accounts.logout', { userId, connection });
 
 			if (!userId) {
 				return;
@@ -116,7 +115,7 @@ export class DDPStreamer extends ServiceClass {
 		server.on(DDP_EVENTS.DISCONNECTED, (info) => {
 			const { userId, connection } = info;
 
-			this.api.broadcast('socket.disconnected', connection);
+			this.api?.broadcast('socket.disconnected', connection);
 
 			if (!userId) {
 				return;
@@ -125,7 +124,7 @@ export class DDPStreamer extends ServiceClass {
 		});
 
 		server.on(DDP_EVENTS.CONNECTED, ({ connection }) => {
-			this.api.broadcast('socket.connected', connection);
+			this.api?.broadcast('socket.connected', connection);
 		});
 	}
 
@@ -141,7 +140,7 @@ export class DDPStreamer extends ServiceClass {
 			.use(proxy())
 			.get('/health', async (_req, res) => {
 				try {
-					await this.api.nodeList();
+					await this.api?.nodeList();
 					res.end('ok');
 				} catch (err) {
 					console.error('Service not healthy', err);
diff --git a/ee/apps/ddp-streamer/src/Server.ts b/ee/apps/ddp-streamer/src/Server.ts
index 84ba8511e1a..c4c6a53c8e1 100644
--- a/ee/apps/ddp-streamer/src/Server.ts
+++ b/ee/apps/ddp-streamer/src/Server.ts
@@ -3,13 +3,12 @@ import { EventEmitter } from 'events';
 import type WebSocket from 'ws';
 import ejson from 'ejson';
 import { v1 as uuidv1 } from 'uuid';
+import { MeteorService, isMeteorError, MeteorError } from '@rocket.chat/core-services';
 
 import { DDP_EVENTS } from './constants';
 import { Publication } from './Publication';
 import type { Client } from './Client';
 import type { IPacket } from './types/IPacket';
-import { MeteorService } from '../../../../apps/meteor/server/sdk';
-import { isMeteorError, MeteorError } from '../../../../apps/meteor/server/sdk/errors';
 import { Logger } from '../../../../apps/meteor/server/lib/logger/Logger';
 
 const logger = new Logger('DDP-Streamer');
diff --git a/ee/apps/ddp-streamer/src/Streamer.ts b/ee/apps/ddp-streamer/src/Streamer.ts
index a4d15a8477f..fdde06e7a5d 100644
--- a/ee/apps/ddp-streamer/src/Streamer.ts
+++ b/ee/apps/ddp-streamer/src/Streamer.ts
@@ -1,11 +1,11 @@
 import WebSocket from 'ws';
 import type { DDPSubscription, Connection, TransformMessage } from 'meteor/rocketchat:streamer';
+import { api } from '@rocket.chat/core-services';
 
 import { server } from './configureServer';
 import { DDP_EVENTS } from './constants';
 import { isEmpty } from './lib/utils';
 import { Streamer, StreamerCentral } from '../../../../apps/meteor/server/modules/streamer/streamer.module';
-import { api } from '../../../../apps/meteor/server/sdk/api';
 
 StreamerCentral.on('broadcast', (name, eventName, args) => {
 	api.broadcast('stream', [name, eventName, args]);
diff --git a/ee/apps/ddp-streamer/src/configureServer.ts b/ee/apps/ddp-streamer/src/configureServer.ts
index d8165ca1156..5b5e339c0e3 100644
--- a/ee/apps/ddp-streamer/src/configureServer.ts
+++ b/ee/apps/ddp-streamer/src/configureServer.ts
@@ -1,11 +1,10 @@
 import { EventEmitter } from 'events';
 
 import { UserStatus } from '@rocket.chat/core-typings';
+import { Account, Presence, MeteorService, MeteorError } from '@rocket.chat/core-services';
 
 import { DDP_EVENTS, WS_ERRORS } from './constants';
-import { Account, Presence, MeteorService } from '../../../../apps/meteor/server/sdk';
 import { Server } from './Server';
-import { MeteorError } from '../../../../apps/meteor/server/sdk/errors';
 import { Autoupdate } from './lib/Autoupdate';
 
 export const server = new Server();
diff --git a/ee/apps/ddp-streamer/src/lib/Autoupdate.ts b/ee/apps/ddp-streamer/src/lib/Autoupdate.ts
index 206e9a93b32..944e7ab56da 100644
--- a/ee/apps/ddp-streamer/src/lib/Autoupdate.ts
+++ b/ee/apps/ddp-streamer/src/lib/Autoupdate.ts
@@ -1,6 +1,6 @@
 import { EventEmitter } from 'events';
 
-import type { AutoUpdateRecord } from '../../../../../apps/meteor/server/sdk/types/IMeteor';
+import type { AutoUpdateRecord } from '@rocket.chat/core-services';
 
 class AutoupdateSingleton extends EventEmitter {
 	private versions = new Map<string, Omit<AutoUpdateRecord, '_id'>>();
diff --git a/ee/apps/ddp-streamer/src/service.ts b/ee/apps/ddp-streamer/src/service.ts
index 9b4bc463192..06f13ce3cf5 100755
--- a/ee/apps/ddp-streamer/src/service.ts
+++ b/ee/apps/ddp-streamer/src/service.ts
@@ -1,6 +1,6 @@
 import type { Document } from 'mongodb';
+import { api } from '@rocket.chat/core-services';
 
-import { api } from '../../../../apps/meteor/server/sdk/api';
 import { broker } from '../../../../apps/meteor/ee/server/startup/broker';
 import { Collections, getCollection, getConnection } from '../../../../apps/meteor/ee/server/services/mongo';
 import { registerServiceModels } from '../../../../apps/meteor/ee/server/lib/registerServiceModels';
diff --git a/ee/apps/presence-service/Dockerfile b/ee/apps/presence-service/Dockerfile
index b1e116ee833..53bf8c1af4a 100644
--- a/ee/apps/presence-service/Dockerfile
+++ b/ee/apps/presence-service/Dockerfile
@@ -6,14 +6,22 @@ WORKDIR /app
 
 COPY ./packages/presence/package.json packages/presence/package.json
 COPY ./packages/presence/dist packages/presence/dist
+
+COPY ./packages/core-services/package.json packages/core-services/package.json
+COPY ./packages/core-services/dist packages/core-services/dist
+
 COPY ./packages/core-typings/package.json packages/core-typings/package.json
 COPY ./packages/core-typings/dist packages/core-typings/dist
+
 COPY ./packages/rest-typings/package.json packages/rest-typings/package.json
 COPY ./packages/rest-typings/dist packages/rest-typings/dist
+
 COPY ./packages/model-typings/package.json packages/model-typings/package.json
 COPY ./packages/model-typings/dist packages/model-typings/dist
+
 COPY ./packages/models/package.json packages/models/package.json
 COPY ./packages/models/dist packages/models/dist
+
 COPY ./packages/ui-contexts/package.json packages/ui-contexts/package.json
 COPY ./packages/ui-contexts/dist packages/ui-contexts/dist
 
diff --git a/ee/apps/presence-service/package.json b/ee/apps/presence-service/package.json
index 259cc7c7ca4..accdb4bb692 100644
--- a/ee/apps/presence-service/package.json
+++ b/ee/apps/presence-service/package.json
@@ -15,6 +15,7 @@
 	],
 	"author": "Rocket.Chat",
 	"dependencies": {
+		"@rocket.chat/core-services": "workspace:^",
 		"@rocket.chat/core-typings": "workspace:^",
 		"@rocket.chat/emitter": "next",
 		"@rocket.chat/model-typings": "workspace:^",
diff --git a/ee/apps/presence-service/src/service.ts b/ee/apps/presence-service/src/service.ts
index df02af8325c..9915f6732e0 100755
--- a/ee/apps/presence-service/src/service.ts
+++ b/ee/apps/presence-service/src/service.ts
@@ -1,7 +1,7 @@
 import type { Document } from 'mongodb';
 import polka from 'polka';
+import { api } from '@rocket.chat/core-services';
 
-import { api } from '../../../../apps/meteor/server/sdk/api';
 import { broker } from '../../../../apps/meteor/ee/server/startup/broker';
 import { Collections, getCollection, getConnection } from '../../../../apps/meteor/ee/server/services/mongo';
 import { registerServiceModels } from '../../../../apps/meteor/ee/server/lib/registerServiceModels';
diff --git a/ee/apps/stream-hub-service/Dockerfile b/ee/apps/stream-hub-service/Dockerfile
index c27bf31f9e5..53c9f739420 100644
--- a/ee/apps/stream-hub-service/Dockerfile
+++ b/ee/apps/stream-hub-service/Dockerfile
@@ -4,12 +4,18 @@ ARG SERVICE
 
 WORKDIR /app
 
+COPY ./packages/core-services/package.json packages/core-services/package.json
+COPY ./packages/core-services/dist packages/core-services/dist
+
 COPY ./packages/core-typings/package.json packages/core-typings/package.json
 COPY ./packages/core-typings/dist packages/core-typings/dist
+
 COPY ./packages/rest-typings/package.json packages/rest-typings/package.json
 COPY ./packages/rest-typings/dist packages/rest-typings/dist
+
 COPY ./packages/model-typings/package.json packages/model-typings/package.json
 COPY ./packages/model-typings/dist packages/model-typings/dist
+
 COPY ./packages/models/package.json packages/models/package.json
 COPY ./packages/models/dist packages/models/dist
 
diff --git a/ee/apps/stream-hub-service/package.json b/ee/apps/stream-hub-service/package.json
index 492d4b06947..de6ba1de100 100644
--- a/ee/apps/stream-hub-service/package.json
+++ b/ee/apps/stream-hub-service/package.json
@@ -15,6 +15,7 @@
 	],
 	"author": "Rocket.Chat",
 	"dependencies": {
+		"@rocket.chat/core-services": "workspace:^",
 		"@rocket.chat/core-typings": "workspace:^",
 		"@rocket.chat/emitter": "next",
 		"@rocket.chat/model-typings": "workspace:^",
diff --git a/ee/apps/stream-hub-service/src/StreamHub.ts b/ee/apps/stream-hub-service/src/StreamHub.ts
index 85af31e78f2..50808a175f2 100755
--- a/ee/apps/stream-hub-service/src/StreamHub.ts
+++ b/ee/apps/stream-hub-service/src/StreamHub.ts
@@ -1,5 +1,6 @@
-import type { IServiceClass } from '../../../../apps/meteor/server/sdk/types/ServiceClass';
-import { ServiceClass } from '../../../../apps/meteor/server/sdk/types/ServiceClass';
+import type { IServiceClass } from '@rocket.chat/core-services';
+import { ServiceClass } from '@rocket.chat/core-services';
+
 import { initWatchers } from '../../../../apps/meteor/server/modules/watchers/watchers.module';
 import type { DatabaseWatcher } from '../../../../apps/meteor/server/database/DatabaseWatcher';
 import type { Logger } from '../../../../apps/meteor/server/lib/logger/Logger';
@@ -17,6 +18,9 @@ export class StreamHub extends ServiceClass implements IServiceClass {
 	}
 
 	async created(): Promise<void> {
+		if (!this.api) {
+			return;
+		}
 		initWatchers(this.watcher, this.api.broadcast.bind(this.api));
 
 		try {
diff --git a/ee/apps/stream-hub-service/src/service.ts b/ee/apps/stream-hub-service/src/service.ts
index 469b7c0e3e2..81175a3e216 100755
--- a/ee/apps/stream-hub-service/src/service.ts
+++ b/ee/apps/stream-hub-service/src/service.ts
@@ -1,7 +1,7 @@
 import type { Document } from 'mongodb';
 import polka from 'polka';
+import { api } from '@rocket.chat/core-services';
 
-import { api } from '../../../../apps/meteor/server/sdk/api';
 import { broker } from '../../../../apps/meteor/ee/server/startup/broker';
 import { Collections, getCollection, getConnection } from '../../../../apps/meteor/ee/server/services/mongo';
 import { registerServiceModels } from '../../../../apps/meteor/ee/server/lib/registerServiceModels';
diff --git a/packages/core-services/.eslintrc.json b/packages/core-services/.eslintrc.json
new file mode 100644
index 00000000000..56a6f6602e3
--- /dev/null
+++ b/packages/core-services/.eslintrc.json
@@ -0,0 +1,12 @@
+{
+	"extends": ["@rocket.chat/eslint-config"],
+	"overrides": [
+		{
+			"files": ["**/*.spec.js", "**/*.spec.jsx"],
+			"env": {
+				"jest": true
+			}
+		}
+	],
+	"ignorePatterns": ["**/dist"]
+}
diff --git a/packages/core-services/package.json b/packages/core-services/package.json
new file mode 100644
index 00000000000..cf3816aa0e9
--- /dev/null
+++ b/packages/core-services/package.json
@@ -0,0 +1,35 @@
+{
+	"name": "@rocket.chat/core-services",
+	"version": "0.0.1",
+	"private": true,
+	"devDependencies": {
+		"@rocket.chat/eslint-config": "workspace:^",
+		"eslint": "^8.29.0",
+		"mongodb": "^4.12.1",
+		"prettier": "^2.7.1",
+		"typescript": "~4.5.5"
+	},
+	"scripts": {
+		"lint": "eslint --ext .js,.jsx,.ts,.tsx .",
+		"lint:fix": "eslint --ext .js,.jsx,.ts,.tsx . --fix",
+		"test": "echo \"Error: no test specified\" && exit 1",
+		"dev": "tsc --watch --preserveWatchOutput -p tsconfig.json",
+		"build": "rm -rf dist && tsc -p tsconfig.json"
+	},
+	"main": "./dist/index.js",
+	"typings": "./dist/index.d.ts",
+	"files": [
+		"/dist"
+	],
+	"dependencies": {
+		"@rocket.chat/apps-engine": "^1.32.0",
+		"@rocket.chat/core-typings": "workspace:^",
+		"@rocket.chat/icons": "next",
+		"@rocket.chat/message-parser": "0.31.22",
+		"@rocket.chat/models": "workspace:^",
+		"@rocket.chat/rest-typings": "workspace:^",
+		"@rocket.chat/ui-kit": "next",
+		"@types/fibers": "^3.1.1",
+		"fibers": "^5.0.3"
+	}
+}
diff --git a/apps/meteor/server/sdk/lib/Events.ts b/packages/core-services/src/Events.ts
similarity index 99%
rename from apps/meteor/server/sdk/lib/Events.ts
rename to packages/core-services/src/Events.ts
index 236dcea72be..71e5694faba 100644
--- a/apps/meteor/server/sdk/lib/Events.ts
+++ b/packages/core-services/src/Events.ts
@@ -26,7 +26,7 @@ import type {
 	UserStatus,
 } from '@rocket.chat/core-typings';
 
-import type { AutoUpdateRecord } from '../types/IMeteor';
+import type { AutoUpdateRecord } from './types/IMeteor';
 
 type ClientAction = 'inserted' | 'updated' | 'removed' | 'changed';
 
diff --git a/apps/meteor/server/sdk/lib/LocalBroker.ts b/packages/core-services/src/LocalBroker.ts
similarity index 89%
rename from apps/meteor/server/sdk/lib/LocalBroker.ts
rename to packages/core-services/src/LocalBroker.ts
index d7205c72cae..af6a6afaad5 100644
--- a/apps/meteor/server/sdk/lib/LocalBroker.ts
+++ b/packages/core-services/src/LocalBroker.ts
@@ -2,11 +2,10 @@ import { EventEmitter } from 'events';
 
 import { InstanceStatus } from '@rocket.chat/models';
 
-import type { IBroker, IBrokerNode } from '../types/IBroker';
-import type { ServiceClass, IServiceClass } from '../types/ServiceClass';
-import { asyncLocalStorage } from '..';
+import type { IBroker, IBrokerNode } from './types/IBroker';
+import type { ServiceClass, IServiceClass } from './types/ServiceClass';
+import { asyncLocalStorage } from '.';
 import type { EventSignatures } from './Events';
-import { StreamerCentral } from '../../modules/streamer/streamer.module';
 
 export class LocalBroker implements IBroker {
 	private methods = new Map<string, (...params: any) => any>();
@@ -80,10 +79,14 @@ export class LocalBroker implements IBroker {
 		}
 	}
 
+	onBroadcast(callback: (eventName: string, args: unknown[]) => void): void {
+		this.events.on('broadcast', callback);
+	}
+
 	async broadcast<T extends keyof EventSignatures>(event: T, ...args: Parameters<EventSignatures[T]>): Promise<void> {
 		this.broadcastLocal(event, ...args);
 
-		StreamerCentral.emit('broadcast', 'local', 'broadcast', [{ eventName: event, args }]);
+		this.events.emit('broadcast', event, args);
 	}
 
 	async broadcastLocal<T extends keyof EventSignatures>(event: T, ...args: Parameters<EventSignatures[T]>): Promise<void> {
diff --git a/apps/meteor/server/sdk/errors.ts b/packages/core-services/src/MeteorError.ts
similarity index 100%
rename from apps/meteor/server/sdk/errors.ts
rename to packages/core-services/src/MeteorError.ts
diff --git a/packages/core-services/src/api.ts b/packages/core-services/src/api.ts
new file mode 100644
index 00000000000..754bab29955
--- /dev/null
+++ b/packages/core-services/src/api.ts
@@ -0,0 +1,4 @@
+import { Api } from './lib/Api';
+
+// Singleton instance of the Service API
+export const api = new Api();
diff --git a/packages/core-services/src/index.ts b/packages/core-services/src/index.ts
new file mode 100644
index 00000000000..20b6761377b
--- /dev/null
+++ b/packages/core-services/src/index.ts
@@ -0,0 +1,126 @@
+import { proxify, proxifyWithWait } from './lib/proxify';
+import type { ISendFileLivechatMessageParams, ISendFileMessageParams, IUploadFileParams, IUploadService } from './types/IUploadService';
+import type { IAuthorization, RoomAccessValidator } from './types/IAuthorization';
+import type { IAuthorizationLivechat } from './types/IAuthorizationLivechat';
+import type { IAuthorizationVoip } from './types/IAuthorizationVoip';
+import type { IAppsEngineService } from './types/IAppsEngineService';
+import type { IPresence } from './types/IPresence';
+import type { IAccount, ILoginResult } from './types/IAccount';
+import type { ILicense } from './types/ILicense';
+import type { IMeteor, AutoUpdateRecord } from './types/IMeteor';
+import type { IUiKitCoreApp, IUiKitCoreAppService } from './types/IUiKitCoreApp';
+import type { IEnterpriseSettings } from './types/IEnterpriseSettings';
+import type { IBannerService } from './types/IBannerService';
+import type { IFederationService } from './types/IFederationService';
+import type { INPSService, NPSCreatePayload, NPSVotePayload } from './types/INPSService';
+import type {
+	ITeamService,
+	ITeamUpdateData,
+	ITeamMemberParams,
+	ITeamMemberInfo,
+	ITeamInfo,
+	ITeamCreateParams,
+	ITeamAutocompleteResult,
+	IListRoomsFilter,
+} from './types/ITeamService';
+import type { IRoomService, ICreateRoomParams, ISubscriptionExtraData } from './types/IRoomService';
+import type { IMediaService, ResizeResult } from './types/IMediaService';
+import type { IVoipService } from './types/IVoipService';
+import type { IOmnichannelVoipService, FindVoipRoomsParams } from './types/IOmnichannelVoipService';
+import type { IAnalyticsService } from './types/IAnalyticsService';
+import type { ILDAPService } from './types/ILDAPService';
+import type { IVideoConfService, VideoConferenceJoinOptions } from './types/IVideoConfService';
+import type { ISAUMonitorService } from './types/ISAUMonitorService';
+import type { IDeviceManagementService } from './types/IDeviceManagementService';
+import type { IPushService } from './types/IPushService';
+import type { IOmnichannelService } from './types/IOmnichannelService';
+import type { ITelemetryEvent, TelemetryMap, TelemetryEvents } from './types/ITelemetryEvent';
+
+export { asyncLocalStorage } from './lib/asyncLocalStorage';
+export { MeteorError, isMeteorError } from './MeteorError';
+export { api } from './api';
+export { EventSignatures } from './Events';
+export { LocalBroker } from './LocalBroker';
+
+export { IBroker, IBrokerNode, BaseMetricOptions, IServiceMetrics } from './types/IBroker';
+
+export { IServiceContext, ServiceClass, IServiceClass, ServiceClassInternal } from './types/ServiceClass';
+
+export {
+	AutoUpdateRecord,
+	FindVoipRoomsParams,
+	IAccount,
+	IAnalyticsService,
+	IAppsEngineService,
+	IAuthorization,
+	IAuthorizationLivechat,
+	IAuthorizationVoip,
+	IBannerService,
+	ICreateRoomParams,
+	IDeviceManagementService,
+	IEnterpriseSettings,
+	IFederationService,
+	ILDAPService,
+	ILicense,
+	IListRoomsFilter,
+	ILoginResult,
+	IMediaService,
+	IMeteor,
+	INPSService,
+	IOmnichannelService,
+	IOmnichannelVoipService,
+	IPresence,
+	IPushService,
+	IRoomService,
+	ISAUMonitorService,
+	ISubscriptionExtraData,
+	ITeamAutocompleteResult,
+	ITeamCreateParams,
+	ITeamInfo,
+	ITeamMemberInfo,
+	ITeamMemberParams,
+	ITeamService,
+	ITeamUpdateData,
+	ITelemetryEvent,
+	IUiKitCoreApp,
+	IUiKitCoreAppService,
+	IVideoConfService,
+	IVoipService,
+	NPSCreatePayload,
+	NPSVotePayload,
+	proxifyWithWait,
+	ResizeResult,
+	RoomAccessValidator,
+	TelemetryEvents,
+	TelemetryMap,
+	VideoConferenceJoinOptions,
+	ISendFileLivechatMessageParams,
+	ISendFileMessageParams,
+	IUploadFileParams,
+	IUploadService,
+};
+
+// TODO think in a way to not have to pass the service name to proxify here as well
+export const Authorization = proxifyWithWait<IAuthorization>('authorization');
+export const Presence = proxifyWithWait<IPresence>('presence');
+export const Account = proxifyWithWait<IAccount>('accounts');
+export const License = proxifyWithWait<ILicense>('license');
+export const MeteorService = proxifyWithWait<IMeteor>('meteor');
+export const Banner = proxifyWithWait<IBannerService>('banner');
+export const UiKitCoreApp = proxifyWithWait<IUiKitCoreAppService>('uikit-core-app');
+export const NPS = proxifyWithWait<INPSService>('nps');
+export const Team = proxifyWithWait<ITeamService>('team');
+export const Room = proxifyWithWait<IRoomService>('room');
+export const Media = proxifyWithWait<IMediaService>('media');
+export const Voip = proxifyWithWait<IVoipService>('voip');
+export const LivechatVoip = proxifyWithWait<IOmnichannelVoipService>('omnichannel-voip');
+export const Analytics = proxifyWithWait<IAnalyticsService>('analytics');
+export const LDAP = proxifyWithWait<ILDAPService>('ldap');
+export const SAUMonitor = proxifyWithWait<ISAUMonitorService>('sau-monitor');
+export const DeviceManagement = proxifyWithWait<IDeviceManagementService>('device-management');
+export const VideoConf = proxifyWithWait<IVideoConfService>('video-conference');
+export const Upload = proxifyWithWait<IUploadService>('upload');
+
+// Calls without wait. Means that the service is optional and the result may be an error
+// of service/method not available
+export const EnterpriseSettings = proxify<IEnterpriseSettings>('ee-settings');
diff --git a/apps/meteor/server/sdk/lib/Api.ts b/packages/core-services/src/lib/Api.ts
similarity index 76%
rename from apps/meteor/server/sdk/lib/Api.ts
rename to packages/core-services/src/lib/Api.ts
index f16bdd18a03..9d9eb3e416f 100644
--- a/apps/meteor/server/sdk/lib/Api.ts
+++ b/packages/core-services/src/lib/Api.ts
@@ -1,18 +1,18 @@
 import type { IApiService } from '../types/IApiService';
 import type { IBroker, IBrokerNode } from '../types/IBroker';
 import type { IServiceClass } from '../types/ServiceClass';
-import type { EventSignatures } from './Events';
+import type { EventSignatures } from '../Events';
 
 export class Api implements IApiService {
 	private services: Set<IServiceClass> = new Set<IServiceClass>();
 
-	private broker: IBroker;
+	private broker?: IBroker;
 
 	// set a broker for the API and registers all services in the broker
 	setBroker(broker: IBroker): void {
 		this.broker = broker;
 
-		this.services.forEach((service) => this.broker.createService(service));
+		this.services.forEach((service) => this.broker?.createService(service));
 	}
 
 	destroyService(instance: IServiceClass): void {
@@ -38,15 +38,15 @@ export class Api implements IApiService {
 	}
 
 	async call(method: string, data?: unknown): Promise<any> {
-		return this.broker.call(method, data);
+		return this.broker?.call(method, data);
 	}
 
 	async waitAndCall(method: string, data: any): Promise<any> {
-		return this.broker.waitAndCall(method, data);
+		return this.broker?.waitAndCall(method, data);
 	}
 
 	async broadcast<T extends keyof EventSignatures>(event: T, ...args: Parameters<EventSignatures[T]>): Promise<void> {
-		return this.broker.broadcast(event, ...args);
+		return this.broker?.broadcast(event, ...args);
 	}
 
 	async broadcastToServices<T extends keyof EventSignatures>(
@@ -54,14 +54,17 @@ export class Api implements IApiService {
 		event: T,
 		...args: Parameters<EventSignatures[T]>
 	): Promise<void> {
-		return this.broker.broadcastToServices(services, event, ...args);
+		return this.broker?.broadcastToServices(services, event, ...args);
 	}
 
 	async broadcastLocal<T extends keyof EventSignatures>(event: T, ...args: Parameters<EventSignatures[T]>): Promise<void> {
-		return this.broker.broadcastLocal(event, ...args);
+		return this.broker?.broadcastLocal(event, ...args);
 	}
 
 	nodeList(): Promise<IBrokerNode[]> {
+		if (!this.broker) {
+			throw new Error('No broker set to start.');
+		}
 		return this.broker.nodeList();
 	}
 
diff --git a/apps/meteor/server/sdk/lib/ContextStore.ts b/packages/core-services/src/lib/ContextStore.ts
similarity index 100%
rename from apps/meteor/server/sdk/lib/ContextStore.ts
rename to packages/core-services/src/lib/ContextStore.ts
diff --git a/packages/core-services/src/lib/asyncLocalStorage.ts b/packages/core-services/src/lib/asyncLocalStorage.ts
new file mode 100644
index 00000000000..04352e99f95
--- /dev/null
+++ b/packages/core-services/src/lib/asyncLocalStorage.ts
@@ -0,0 +1,5 @@
+import type { IServiceContext } from '../types/ServiceClass';
+import { FibersContextStore } from './ContextStore';
+
+// TODO Evalute again using AsyncContextStore instead of FibersContextStore in a future Meteor release (after 2.5)
+export const asyncLocalStorage = new FibersContextStore<IServiceContext>();
diff --git a/apps/meteor/server/sdk/lib/proxify.ts b/packages/core-services/src/lib/proxify.ts
similarity index 100%
rename from apps/meteor/server/sdk/lib/proxify.ts
rename to packages/core-services/src/lib/proxify.ts
diff --git a/apps/meteor/server/sdk/types/IAccount.ts b/packages/core-services/src/types/IAccount.ts
similarity index 100%
rename from apps/meteor/server/sdk/types/IAccount.ts
rename to packages/core-services/src/types/IAccount.ts
diff --git a/apps/meteor/server/sdk/types/IAnalyticsService.ts b/packages/core-services/src/types/IAnalyticsService.ts
similarity index 100%
rename from apps/meteor/server/sdk/types/IAnalyticsService.ts
rename to packages/core-services/src/types/IAnalyticsService.ts
diff --git a/apps/meteor/server/sdk/types/IApiService.ts b/packages/core-services/src/types/IApiService.ts
similarity index 93%
rename from apps/meteor/server/sdk/types/IApiService.ts
rename to packages/core-services/src/types/IApiService.ts
index fad6c768fce..e21ab6aad58 100644
--- a/apps/meteor/server/sdk/types/IApiService.ts
+++ b/packages/core-services/src/types/IApiService.ts
@@ -1,6 +1,6 @@
 import type { IBroker, IBrokerNode } from './IBroker';
 import type { IServiceClass } from './ServiceClass';
-import type { EventSignatures } from '../lib/Events';
+import type { EventSignatures } from '../Events';
 
 export interface IApiService {
 	setBroker(broker: IBroker): void;
diff --git a/apps/meteor/server/sdk/types/IAppsEngineService.ts b/packages/core-services/src/types/IAppsEngineService.ts
similarity index 100%
rename from apps/meteor/server/sdk/types/IAppsEngineService.ts
rename to packages/core-services/src/types/IAppsEngineService.ts
diff --git a/apps/meteor/server/sdk/types/IAuthorization.ts b/packages/core-services/src/types/IAuthorization.ts
similarity index 100%
rename from apps/meteor/server/sdk/types/IAuthorization.ts
rename to packages/core-services/src/types/IAuthorization.ts
diff --git a/apps/meteor/server/sdk/types/IAuthorizationLivechat.ts b/packages/core-services/src/types/IAuthorizationLivechat.ts
similarity index 100%
rename from apps/meteor/server/sdk/types/IAuthorizationLivechat.ts
rename to packages/core-services/src/types/IAuthorizationLivechat.ts
diff --git a/apps/meteor/server/sdk/types/IAuthorizationVoip.ts b/packages/core-services/src/types/IAuthorizationVoip.ts
similarity index 100%
rename from apps/meteor/server/sdk/types/IAuthorizationVoip.ts
rename to packages/core-services/src/types/IAuthorizationVoip.ts
diff --git a/apps/meteor/server/sdk/types/IBannerService.ts b/packages/core-services/src/types/IBannerService.ts
similarity index 100%
rename from apps/meteor/server/sdk/types/IBannerService.ts
rename to packages/core-services/src/types/IBannerService.ts
diff --git a/apps/meteor/server/sdk/types/IBroker.ts b/packages/core-services/src/types/IBroker.ts
similarity index 97%
rename from apps/meteor/server/sdk/types/IBroker.ts
rename to packages/core-services/src/types/IBroker.ts
index a56d4fa8ba3..9dc0676f1dc 100644
--- a/apps/meteor/server/sdk/types/IBroker.ts
+++ b/packages/core-services/src/types/IBroker.ts
@@ -1,5 +1,5 @@
 import type { IServiceClass } from './ServiceClass';
-import type { EventSignatures } from '../lib/Events';
+import type { EventSignatures } from '../Events';
 
 export interface IBrokerNode {
 	id: string;
diff --git a/apps/meteor/server/sdk/types/IDeviceManagementService.ts b/packages/core-services/src/types/IDeviceManagementService.ts
similarity index 100%
rename from apps/meteor/server/sdk/types/IDeviceManagementService.ts
rename to packages/core-services/src/types/IDeviceManagementService.ts
diff --git a/apps/meteor/server/sdk/types/IEnterpriseSettings.ts b/packages/core-services/src/types/IEnterpriseSettings.ts
similarity index 100%
rename from apps/meteor/server/sdk/types/IEnterpriseSettings.ts
rename to packages/core-services/src/types/IEnterpriseSettings.ts
diff --git a/apps/meteor/server/sdk/types/IFederationService.ts b/packages/core-services/src/types/IFederationService.ts
similarity index 100%
rename from apps/meteor/server/sdk/types/IFederationService.ts
rename to packages/core-services/src/types/IFederationService.ts
diff --git a/apps/meteor/server/sdk/types/ILDAPService.ts b/packages/core-services/src/types/ILDAPService.ts
similarity index 100%
rename from apps/meteor/server/sdk/types/ILDAPService.ts
rename to packages/core-services/src/types/ILDAPService.ts
diff --git a/apps/meteor/server/sdk/types/ILicense.ts b/packages/core-services/src/types/ILicense.ts
similarity index 100%
rename from apps/meteor/server/sdk/types/ILicense.ts
rename to packages/core-services/src/types/ILicense.ts
diff --git a/apps/meteor/server/sdk/types/IMediaService.ts b/packages/core-services/src/types/IMediaService.ts
similarity index 100%
rename from apps/meteor/server/sdk/types/IMediaService.ts
rename to packages/core-services/src/types/IMediaService.ts
diff --git a/apps/meteor/server/sdk/types/IMeteor.ts b/packages/core-services/src/types/IMeteor.ts
similarity index 81%
rename from apps/meteor/server/sdk/types/IMeteor.ts
rename to packages/core-services/src/types/IMeteor.ts
index a9a619d3c6b..80939d171c4 100644
--- a/apps/meteor/server/sdk/types/IMeteor.ts
+++ b/packages/core-services/src/types/IMeteor.ts
@@ -1,4 +1,3 @@
-import type { IRoutingManagerConfig } from '../../../definition/IRoutingManagerConfig';
 import type { IServiceClass } from './ServiceClass';
 
 export type AutoUpdateRecord = {
@@ -18,5 +17,4 @@ export interface IMeteor extends IServiceClass {
 	getLoginServiceConfiguration(): Promise<any[]>;
 	callMethodWithToken(userId: string | undefined, token: string | undefined, method: string, args: any[]): Promise<void | any>;
 	notifyGuestStatusChanged(token: string, status: string): Promise<void>;
-	getRoutingManagerConfig(): IRoutingManagerConfig;
 }
diff --git a/apps/meteor/server/sdk/types/INPSService.ts b/packages/core-services/src/types/INPSService.ts
similarity index 100%
rename from apps/meteor/server/sdk/types/INPSService.ts
rename to packages/core-services/src/types/INPSService.ts
diff --git a/apps/meteor/server/sdk/types/IOmnichannelService.ts b/packages/core-services/src/types/IOmnichannelService.ts
similarity index 100%
rename from apps/meteor/server/sdk/types/IOmnichannelService.ts
rename to packages/core-services/src/types/IOmnichannelService.ts
diff --git a/apps/meteor/server/sdk/types/IOmnichannelVoipService.ts b/packages/core-services/src/types/IOmnichannelVoipService.ts
similarity index 78%
rename from apps/meteor/server/sdk/types/IOmnichannelVoipService.ts
rename to packages/core-services/src/types/IOmnichannelVoipService.ts
index a224adbbbb5..81c9f8c9e4c 100644
--- a/apps/meteor/server/sdk/types/IOmnichannelVoipService.ts
+++ b/packages/core-services/src/types/IOmnichannelVoipService.ts
@@ -3,16 +3,32 @@ import type {
 	IAgentExtensionMap,
 	IRoomCreationResponse,
 	ILivechatVisitor,
-	IVoipRoom,
 	IRoom,
 	IUser,
 	IVoipExtensionWithAgentInfo,
 	ILivechatAgent,
 	VoipClientEvents,
+	IVoipRoom,
 } from '@rocket.chat/core-typings';
 import type { PaginatedResult } from '@rocket.chat/rest-typings';
 
-import type { FindVoipRoomsParams } from '../../services/omnichannel-voip/internalTypes';
+export type FindVoipRoomsParams = {
+	agents?: string[];
+	open?: boolean;
+	createdAt?: { start?: string; end?: string };
+	closedAt?: { start?: string; end?: string };
+	tags?: string[];
+	queue?: string;
+	visitorId?: string;
+	options?: {
+		sort?: FindOptions<IVoipRoom>['sort'];
+		count?: number;
+		fields?: Record<string, unknown>;
+		offset?: number;
+	};
+	direction?: IVoipRoom['direction'];
+	roomName?: string;
+};
 
 export interface IOmnichannelVoipService {
 	getFreeExtensions(): Promise<string[]>;
diff --git a/apps/meteor/server/sdk/types/IPresence.ts b/packages/core-services/src/types/IPresence.ts
similarity index 100%
rename from apps/meteor/server/sdk/types/IPresence.ts
rename to packages/core-services/src/types/IPresence.ts
diff --git a/apps/meteor/server/sdk/types/IPushService.ts b/packages/core-services/src/types/IPushService.ts
similarity index 100%
rename from apps/meteor/server/sdk/types/IPushService.ts
rename to packages/core-services/src/types/IPushService.ts
diff --git a/apps/meteor/server/sdk/types/IRoomService.ts b/packages/core-services/src/types/IRoomService.ts
similarity index 100%
rename from apps/meteor/server/sdk/types/IRoomService.ts
rename to packages/core-services/src/types/IRoomService.ts
diff --git a/apps/meteor/server/sdk/types/ISAUMonitorService.ts b/packages/core-services/src/types/ISAUMonitorService.ts
similarity index 100%
rename from apps/meteor/server/sdk/types/ISAUMonitorService.ts
rename to packages/core-services/src/types/ISAUMonitorService.ts
diff --git a/apps/meteor/server/sdk/types/ITeamService.ts b/packages/core-services/src/types/ITeamService.ts
similarity index 100%
rename from apps/meteor/server/sdk/types/ITeamService.ts
rename to packages/core-services/src/types/ITeamService.ts
diff --git a/apps/meteor/server/sdk/types/ITelemetryEvent.ts b/packages/core-services/src/types/ITelemetryEvent.ts
similarity index 100%
rename from apps/meteor/server/sdk/types/ITelemetryEvent.ts
rename to packages/core-services/src/types/ITelemetryEvent.ts
diff --git a/apps/meteor/server/sdk/types/IUiKitCoreApp.ts b/packages/core-services/src/types/IUiKitCoreApp.ts
similarity index 100%
rename from apps/meteor/server/sdk/types/IUiKitCoreApp.ts
rename to packages/core-services/src/types/IUiKitCoreApp.ts
diff --git a/apps/meteor/server/sdk/types/IUploadService.ts b/packages/core-services/src/types/IUploadService.ts
similarity index 100%
rename from apps/meteor/server/sdk/types/IUploadService.ts
rename to packages/core-services/src/types/IUploadService.ts
diff --git a/apps/meteor/server/sdk/types/IVideoConfService.ts b/packages/core-services/src/types/IVideoConfService.ts
similarity index 100%
rename from apps/meteor/server/sdk/types/IVideoConfService.ts
rename to packages/core-services/src/types/IVideoConfService.ts
diff --git a/apps/meteor/server/sdk/types/IVoipService.ts b/packages/core-services/src/types/IVoipService.ts
similarity index 90%
rename from apps/meteor/server/sdk/types/IVoipService.ts
rename to packages/core-services/src/types/IVoipService.ts
index 95f2e2cbb03..a2179a5df79 100644
--- a/apps/meteor/server/sdk/types/IVoipService.ts
+++ b/packages/core-services/src/types/IVoipService.ts
@@ -7,11 +7,8 @@ import type {
 	IManagementServerConnectionStatus,
 } from '@rocket.chat/core-typings';
 
-import type { CommandHandler } from '../../services/voip/connector/asterisk/CommandHandler';
-
 export interface IVoipService {
 	getServerConfigData(serverType: ServerType): IVoipCallServerConfig | IVoipManagementServerConfig;
-	getConnector(): CommandHandler;
 	getConnectorVersion(): string;
 	getQueueSummary(): Promise<IVoipConnectorResult>;
 	getQueuedCallsForThisExtension(requestParams: any): Promise<IVoipConnectorResult>;
diff --git a/apps/meteor/server/sdk/types/ServiceClass.ts b/packages/core-services/src/types/ServiceClass.ts
similarity index 92%
rename from apps/meteor/server/sdk/types/ServiceClass.ts
rename to packages/core-services/src/types/ServiceClass.ts
index 8e9a6d65c54..427d9d7b7d0 100644
--- a/apps/meteor/server/sdk/types/ServiceClass.ts
+++ b/packages/core-services/src/types/ServiceClass.ts
@@ -1,8 +1,8 @@
 import { EventEmitter } from 'events';
 
-import { asyncLocalStorage } from '..';
+import { asyncLocalStorage } from '../lib/asyncLocalStorage';
 import type { IBroker, IBrokerNode } from './IBroker';
-import type { EventSignatures } from '../lib/Events';
+import type { EventSignatures } from '../Events';
 import type { IApiService } from './IApiService';
 
 export interface IServiceContext {
@@ -26,7 +26,7 @@ export interface IServiceContext {
 }
 
 export interface IServiceClass {
-	getName(): string;
+	getName(): string | undefined;
 	onNodeConnected?({ node, reconnected }: { node: IBrokerNode; reconnected: boolean }): void;
 	onNodeUpdated?({ node }: { node: IBrokerNode }): void;
 	onNodeDisconnected?({ node, unexpected }: { node: IBrokerNode; unexpected: boolean }): Promise<void>;
@@ -45,13 +45,13 @@ export interface IServiceClass {
 }
 
 export abstract class ServiceClass implements IServiceClass {
-	protected name: string;
+	protected name?: string;
 
 	protected events = new EventEmitter();
 
 	protected internal = false;
 
-	protected api: IApiService;
+	protected api?: IApiService;
 
 	constructor() {
 		this.emit = this.emit.bind(this);
@@ -65,7 +65,7 @@ export abstract class ServiceClass implements IServiceClass {
 		return this.events.eventNames() as unknown as Array<keyof EventSignatures>;
 	}
 
-	getName(): string {
+	getName(): string | undefined {
 		return this.name;
 	}
 
diff --git a/packages/core-services/tsconfig.json b/packages/core-services/tsconfig.json
new file mode 100644
index 00000000000..52e9dd8c497
--- /dev/null
+++ b/packages/core-services/tsconfig.json
@@ -0,0 +1,9 @@
+{
+	"extends": "../../tsconfig.base.server.json",
+	"compilerOptions": {
+		"declaration": true,
+		"rootDir": "./src",
+		"outDir": "./dist"
+	},
+	"include": ["./src/**/*"]
+}
diff --git a/packages/presence/package.json b/packages/presence/package.json
index be2fd4e7f86..cbbec35eb43 100644
--- a/packages/presence/package.json
+++ b/packages/presence/package.json
@@ -23,12 +23,13 @@
 		"testunit": "jest tests/**/*.test.ts",
 		"typecheck": "tsc --noEmit --skipLibCheck -p tsconfig.json"
 	},
-	"main": "./dist/packages/presence/src/Presence.js",
-	"typings": "./dist/packages/presence/src/Presence.d.ts",
+	"main": "./dist/Presence.js",
+	"typings": "./dist/Presence.d.ts",
 	"files": [
 		"/dist"
 	],
 	"dependencies": {
+		"@rocket.chat/core-services": "workspace:^",
 		"@rocket.chat/core-typings": "workspace:^",
 		"@rocket.chat/models": "workspace:^",
 		"mongodb": "^4.12.1"
diff --git a/packages/presence/src/Presence.ts b/packages/presence/src/Presence.ts
index 7e6a3bf70cf..c4f0a088981 100755
--- a/packages/presence/src/Presence.ts
+++ b/packages/presence/src/Presence.ts
@@ -1,11 +1,10 @@
+import type { IPresence, IBrokerNode } from '@rocket.chat/core-services';
 import type { IUser } from '@rocket.chat/core-typings';
+import { ServiceClass } from '@rocket.chat/core-services';
 import { UserStatus } from '@rocket.chat/core-typings';
 import { Users, UsersSessions } from '@rocket.chat/models';
 
 import { processPresenceAndStatus } from './lib/processConnectionStatus';
-import type { IPresence } from '../../../apps/meteor/server/sdk/types/IPresence';
-import type { IBrokerNode } from '../../../apps/meteor/server/sdk/types/IBroker';
-import { ServiceClass } from '../../../apps/meteor/server/sdk/types/ServiceClass';
 
 export class Presence extends ServiceClass implements IPresence {
 	protected name = 'presence';
@@ -96,7 +95,7 @@ export class Presence extends ServiceClass implements IPresence {
 			return affectedUsers.map(({ _id }) => _id);
 		}
 
-		const nodes = await this.api.nodeList();
+		const nodes = (await this.api?.nodeList()) || [];
 
 		const ids = nodes.filter((node) => node.available).map(({ id }) => id);
 		if (ids.length === 0) {
@@ -181,7 +180,7 @@ export class Presence extends ServiceClass implements IPresence {
 		if (!this.broadcastEnabled) {
 			return;
 		}
-		this.api.broadcast('presence.status', {
+		this.api?.broadcast('presence.status', {
 			user,
 			previousStatus,
 		});
diff --git a/packages/presence/tsconfig.json b/packages/presence/tsconfig.json
index fb32de4565d..efae6b329dd 100644
--- a/packages/presence/tsconfig.json
+++ b/packages/presence/tsconfig.json
@@ -1,11 +1,12 @@
 {
 	"extends": "../../tsconfig.base.server.json",
 	"compilerOptions": {
+		"lib": ["es2020"],
+		"target": "es2020",
 		"strictPropertyInitialization": false, // TODO: Remove this line
 		"declaration": true,
-		"outDir": "./dist"
+		"outDir": "./dist",
+		"rootDir": "./src",
 	},
-	"include": ["../../apps/meteor/definition/externals/meteor/rocketchat-streamer.d.ts"],
-	"exclude": ["./dist"],
 	"files": ["./src/Presence.ts"]
 }
diff --git a/yarn.lock b/yarn.lock
index 051733f7f62..7277ee1563e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -6163,6 +6163,7 @@ __metadata:
   version: 0.0.0-use.local
   resolution: "@rocket.chat/account-service@workspace:ee/apps/account-service"
   dependencies:
+    "@rocket.chat/core-services": "workspace:^"
     "@rocket.chat/core-typings": "workspace:^"
     "@rocket.chat/emitter": next
     "@rocket.chat/eslint-config": "workspace:^"
@@ -6262,6 +6263,7 @@ __metadata:
   version: 0.0.0-use.local
   resolution: "@rocket.chat/authorization-service@workspace:ee/apps/authorization-service"
   dependencies:
+    "@rocket.chat/core-services": "workspace:^"
     "@rocket.chat/core-typings": "workspace:^"
     "@rocket.chat/emitter": next
     "@rocket.chat/eslint-config": "workspace:^"
@@ -6300,6 +6302,27 @@ __metadata:
   languageName: unknown
   linkType: soft
 
+"@rocket.chat/core-services@workspace:^, @rocket.chat/core-services@workspace:packages/core-sdk":
+  version: 0.0.0-use.local
+  resolution: "@rocket.chat/core-services@workspace:packages/core-sdk"
+  dependencies:
+    "@rocket.chat/apps-engine": ^1.32.0
+    "@rocket.chat/core-typings": "workspace:^"
+    "@rocket.chat/eslint-config": "workspace:^"
+    "@rocket.chat/icons": next
+    "@rocket.chat/message-parser": 0.31.22
+    "@rocket.chat/models": "workspace:^"
+    "@rocket.chat/rest-typings": "workspace:^"
+    "@rocket.chat/ui-kit": next
+    "@types/fibers": ^3.1.1
+    eslint: ^8.29.0
+    fibers: ^5.0.3
+    mongodb: ^4.12.1
+    prettier: ^2.7.1
+    typescript: ~4.5.5
+  languageName: unknown
+  linkType: soft
+
 "@rocket.chat/core-typings@workspace:^, @rocket.chat/core-typings@workspace:packages/core-typings":
   version: 0.0.0-use.local
   resolution: "@rocket.chat/core-typings@workspace:packages/core-typings"
@@ -6343,6 +6366,7 @@ __metadata:
   resolution: "@rocket.chat/ddp-streamer@workspace:ee/apps/ddp-streamer"
   dependencies:
     "@rocket.chat/apps-engine": ^1.32.0
+    "@rocket.chat/core-services": "workspace:^"
     "@rocket.chat/core-typings": "workspace:^"
     "@rocket.chat/emitter": next
     "@rocket.chat/eslint-config": "workspace:^"
@@ -6817,6 +6841,7 @@ __metadata:
     "@rocket.chat/api-client": "workspace:^"
     "@rocket.chat/apps-engine": 1.36.0
     "@rocket.chat/cas-validate": "workspace:^"
+    "@rocket.chat/core-services": "workspace:^"
     "@rocket.chat/core-typings": "workspace:^"
     "@rocket.chat/css-in-js": next
     "@rocket.chat/emitter": next
@@ -7203,6 +7228,7 @@ __metadata:
   version: 0.0.0-use.local
   resolution: "@rocket.chat/presence-service@workspace:ee/apps/presence-service"
   dependencies:
+    "@rocket.chat/core-services": "workspace:^"
     "@rocket.chat/core-typings": "workspace:^"
     "@rocket.chat/emitter": next
     "@rocket.chat/eslint-config": "workspace:^"
@@ -7235,6 +7261,7 @@ __metadata:
     "@babel/preset-env": ^7.20.2
     "@babel/preset-typescript": ^7.18.6
     "@rocket.chat/apps-engine": ^1.32.0
+    "@rocket.chat/core-services": "workspace:^"
     "@rocket.chat/core-typings": "workspace:^"
     "@rocket.chat/eslint-config": "workspace:^"
     "@rocket.chat/models": "workspace:^"
@@ -7293,6 +7320,7 @@ __metadata:
   version: 0.0.0-use.local
   resolution: "@rocket.chat/stream-hub-service@workspace:ee/apps/stream-hub-service"
   dependencies:
+    "@rocket.chat/core-services": "workspace:^"
     "@rocket.chat/core-typings": "workspace:^"
     "@rocket.chat/emitter": next
     "@rocket.chat/eslint-config": "workspace:^"
@@ -31383,6 +31411,7 @@ __metadata:
   resolution: "rocketchat-services@workspace:apps/meteor/ee/server/services"
   dependencies:
     "@rocket.chat/apps-engine": ^1.32.0
+    "@rocket.chat/core-services": "workspace:^"
     "@rocket.chat/core-typings": "workspace:^"
     "@rocket.chat/emitter": next
     "@rocket.chat/icons": next
-- 
GitLab