diff --git a/src/Components/Employee/DependencyInjection/services.xml b/src/Components/Employee/DependencyInjection/services.xml
index 6609e2b2e..90fb874c7 100644
--- a/src/Components/Employee/DependencyInjection/services.xml
+++ b/src/Components/Employee/DependencyInjection/services.xml
@@ -65,6 +65,7 @@
             <argument type="service" id="B2bSellersCore\Components\Employee\Service\EmployeeService"/>
             <argument type="service" id="Shopware\Core\System\SystemConfig\SystemConfigService"/>
             <argument type="service" id="B2bSellersCore\Components\Employee\Filter\EmployeeCustomerFilterHandler"/>
+            <argument type="service" id="Shopware\Core\System\SalesChannel\StoreApiCustomFieldMapper"/>
         </service>
 
         <service id="B2bSellersCore\Components\Employee\SalesChannel\EmployeePasswordRecoveryMailRoute" public="true">
diff --git a/src/Components/Employee/SalesChannel/EmployeeRoute.php b/src/Components/Employee/SalesChannel/EmployeeRoute.php
index 83cc352c3..520ff92f0 100644
--- a/src/Components/Employee/SalesChannel/EmployeeRoute.php
+++ b/src/Components/Employee/SalesChannel/EmployeeRoute.php
@@ -35,6 +35,7 @@ use Shopware\Core\Framework\Validation\DataValidationDefinition;
 use Shopware\Core\Framework\Validation\DataValidator;
 use Shopware\Core\System\SalesChannel\NoContentResponse;
 use Shopware\Core\System\SalesChannel\SalesChannelContext;
+use Shopware\Core\System\SalesChannel\StoreApiCustomFieldMapper;
 use Shopware\Core\System\SalesChannel\SuccessResponse;
 use Shopware\Core\System\SystemConfig\SystemConfigService;
 use Symfony\Component\HttpFoundation\Request;
@@ -48,6 +49,25 @@ class EmployeeRoute extends AbstractEmployeeRoute
 {
     use B2bContextTrait;
 
+    private const UPDATE_WHITELIST = [
+        'salutationId',
+        'title',
+        'firstName',
+        'lastName',
+        'department',
+        'phoneNumber',
+        'mobilePhoneNumber',
+        'preferredCustomerId',
+        'loginTarget',
+        'trackActivity',
+        'languageId',
+    ];
+
+    private const SELF_UPDATE_WHITELIST = [
+        'email',
+        'password',
+    ];
+
     public function __construct(
         private readonly EntityRepository $employeeRepository,
         private readonly EntityRepository $employeeCustomerRepository,
@@ -58,6 +78,7 @@ class EmployeeRoute extends AbstractEmployeeRoute
         private readonly EmployeeServiceInterface $employeeService,
         private readonly SystemConfigService $systemConfigService,
         private readonly EmployeeCustomerFilterHandlerInterface $filterHandler,
+        private readonly StoreApiCustomFieldMapper $storeApiCustomFieldMapper,
     ) {
     }
 
@@ -189,17 +210,16 @@ class EmployeeRoute extends AbstractEmployeeRoute
             $requestDataBag->set('customers', [$customerMapping]);
         }
 
-        $this->validateUpdateFields($requestDataBag, $context);
+        $currentEmployeeId = $this->getEmployee($context)?->getId();
+        $isSelf            = $currentEmployeeId !== null && $currentEmployeeId === $employee->getId();
+
+        $this->validateUpdateFields($requestDataBag, $isSelf, $context);
 
-        if ($requestDataBag->has('email')) {
+        if ($isSelf && $requestDataBag->has('email')) {
             $this->checkCustomerWithEmployeeMailExists($requestDataBag->get('email'), $context);
         }
 
-        $requestDataBag->set('id', $employee->getId());
-
-        $requestDataBag->remove('boundSalesChannelId');
-
-        $data = $requestDataBag->all();
+        $data = $this->mapUpdateData($requestDataBag, $employee, $isSelf);
 
         $this->employeeRepository->update([$data], $context->getContext());
 
@@ -342,16 +362,16 @@ class EmployeeRoute extends AbstractEmployeeRoute
         $this->validator->validate($data->all(), $definition);
     }
 
-    private function validateUpdateFields(RequestDataBag $data, SalesChannelContext $context): void
+    private function validateUpdateFields(RequestDataBag $data, bool $isSelf, SalesChannelContext $context): void
     {
         $definition = new DataValidationDefinition('employee.update');
 
-        if ($data->has('password')) {
+        if ($isSelf && $data->has('password')) {
             $minPasswordLength = $this->systemConfigService->get('core.loginRegistration.passwordMinLength', $context->getSalesChannel()->getId());
             $definition->add('password', new Length(['min' => $minPasswordLength]));
         }
 
-        if ($data->has('email')) {
+        if ($isSelf && $data->has('email')) {
             $definition->add('email', new Email());
         }
 
@@ -366,6 +386,39 @@ class EmployeeRoute extends AbstractEmployeeRoute
         $this->validator->validate($data->all(), $definition);
     }
 
+    private function mapUpdateData(RequestDataBag $requestDataBag, EmployeeEntity $employee, bool $isSelf): array
+    {
+        $data = $requestDataBag->only(...self::UPDATE_WHITELIST);
+
+        $customers = $requestDataBag->get('customers');
+        if ($customers instanceof DataBag) {
+            $data['customers'] = $customers->all();
+        }
+
+        if ($requestDataBag->get('customFields') instanceof RequestDataBag) {
+            $data['customFields'] = $this->storeApiCustomFieldMapper->map(
+                $this->employeeDefinition->getEntityName(),
+                $requestDataBag->get('customFields')
+            );
+
+            if ($data['customFields'] === []) {
+                unset($data['customFields']);
+            }
+        }
+
+        if ($isSelf) {
+            foreach (self::SELF_UPDATE_WHITELIST as $field) {
+                if ($requestDataBag->has($field)) {
+                    $data[$field] = $requestDataBag->get($field);
+                }
+            }
+        }
+
+        $data['id'] = $employee->getId();
+
+        return $data;
+    }
+
     private function sendPasswordActivationMail($employeeId, SalesChannelContext $salesChannelContext): void
     {
         /** @var EmployeeEntity $employee */
