diff --git a/CarRepairShop/CarRepairShopBusinessLogic/BusinessLogics/ImplementerLogic.cs b/CarRepairShop/CarRepairShopBusinessLogic/BusinessLogics/ImplementerLogic.cs
new file mode 100644
index 0000000..6042bbe
--- /dev/null
+++ b/CarRepairShop/CarRepairShopBusinessLogic/BusinessLogics/ImplementerLogic.cs
@@ -0,0 +1,124 @@
+using CarRepairShopContracts.BindingModels;
+using CarRepairShopContracts.BusinessLogicsContracts;
+using CarRepairShopContracts.SearchModels;
+using CarRepairShopContracts.StoragesContracts;
+using CarRepairShopContracts.ViewModels;
+using Microsoft.Extensions.Logging;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CarRepairShopBusinessLogic.BusinessLogics
+{
+    public class ImplementerLogic : IImplementerLogic
+    {
+
+        private readonly ILogger _logger;
+        private readonly IImplementerStorage _implementerStorage;
+
+        public ImplementerLogic(ILogger<ImplementerLogic> logger, IImplementerStorage implementerStorage)
+        {
+            _logger = logger;
+            _implementerStorage = implementerStorage;
+        }
+
+        public List<ImplementerViewModel>? ReadList(ImplementerSearchModel? model)
+        {
+            _logger.LogInformation("ReadList. Implementer:{FIO}. Id:{Id}", model?.ImplementerFIO, model?.Id);
+            var list = model == null ? _implementerStorage.GetFullList() : _implementerStorage.GetFilteredList(model);
+            if(list == null)
+            {
+                _logger.LogWarning("ReadList return null list");
+                return null;
+            }
+            _logger.LogInformation("ReadList. Count:{Count}", list.Count);
+            return list;
+        }
+
+        public ImplementerViewModel? ReadElement(ImplementerSearchModel? model)
+        {
+            if (model == null) throw new ArgumentNullException(nameof(model));
+            _logger.LogInformation("ReadElement. Implementer:{ClientFIO}. Id:{Id}", model.ImplementerFIO, model?.Id);
+            var element = _implementerStorage.GetElement(model);
+            if(element == null)
+            {
+                _logger.LogWarning("ReadElement element is not found");
+                return null;
+            }
+            _logger.LogInformation("ReadElement find. Id:{Id}", element.Id);
+            return element;
+        }
+
+        public bool Create(ImplementerBindingModel model)
+        {
+            CheckModel(model);
+            if(_implementerStorage.Insert(model) == null)
+            {
+                _logger.LogWarning("Insert operation failed");
+                return false;
+            }
+            return true;
+        }
+
+        public bool Update(ImplementerBindingModel model)
+        {
+            CheckModel(model);
+            if(_implementerStorage.Update(model) == null)
+            {
+                _logger.LogWarning("Update operation failed");
+                return false;
+            }
+            return true;
+        }
+
+        public bool Delete(ImplementerBindingModel model)
+        {
+            CheckModel(model, false);
+            if (_implementerStorage.Delete(model) == null)
+            {
+                _logger.LogWarning("Delete operation failed");
+                return false;
+            }
+            return true;
+        }
+
+        private void CheckModel(ImplementerBindingModel model, bool withParams = true)
+        {
+            if (model == null)
+            {
+                throw new ArgumentNullException(nameof(model));
+            }
+            if (!withParams)
+            {
+                return;
+            }
+            if (string.IsNullOrEmpty(model.ImplementerFIO))
+            {
+                throw new ArgumentNullException("Нет ФИО исполнителя", nameof(model.ImplementerFIO));
+            }
+            if (string.IsNullOrEmpty(model.Password))
+            {
+                throw new ArgumentNullException("Нет пароля клиента", nameof(model.Password));
+            }
+            if (model.WorkExperience < 0)
+            {
+                throw new ArgumentNullException("Опыт работы должен быть больше 0", nameof(model.WorkExperience));
+            }
+            if (model.Qualification < 0)
+            {
+                throw new ArgumentNullException("Квалификация должна быть больше 0", nameof(model.Qualification));
+            }
+            _logger.LogInformation("Implementer. Implementer:{ImplementerFIO}. WorkExperience:{WorkExperience}. Id{Id}", model.ImplementerFIO, model.WorkExperience, model.Id);
+            var element = _implementerStorage.GetElement(new ImplementerSearchModel
+            {
+                ImplementerFIO = model.ImplementerFIO,
+            });
+            if (element != null && element.Id != model.Id)
+            {
+                throw new InvalidOperationException("Исполнитель с таким ФИО уже есть");
+            }
+        }
+    }
+}
diff --git a/CarRepairShop/CarRepairShopContracts/BindingModels/ImplementerBindingModel.cs b/CarRepairShop/CarRepairShopContracts/BindingModels/ImplementerBindingModel.cs
new file mode 100644
index 0000000..c77d477
--- /dev/null
+++ b/CarRepairShop/CarRepairShopContracts/BindingModels/ImplementerBindingModel.cs
@@ -0,0 +1,22 @@
+using CarRepairShopDataModels.Models;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CarRepairShopContracts.BindingModels
+{
+    public class ImplementerBindingModel : IImplementerModel
+    {
+        public int Id { get; set; }
+        public string ImplementerFIO { get; set; } = string.Empty;
+
+        public string Password { get; set; } = string.Empty;
+
+        public int WorkExperience { get; set; }
+
+        public int Qualification { get; set; }
+
+    }
+}
diff --git a/CarRepairShop/CarRepairShopContracts/BindingModels/OrderBindingModel.cs b/CarRepairShop/CarRepairShopContracts/BindingModels/OrderBindingModel.cs
index be3d586..fb14306 100644
--- a/CarRepairShop/CarRepairShopContracts/BindingModels/OrderBindingModel.cs
+++ b/CarRepairShop/CarRepairShopContracts/BindingModels/OrderBindingModel.cs
@@ -13,6 +13,7 @@ namespace CarRepairShopContracts.BindingModels
         public int Id { get; set; }
         public int RepairId { get; set; }
         public int ClientId { get; set; }
+        public int ImplementerId { get; set; }
         public int Count { get; set; }
         public double Sum { get; set; }
         public OrderStatus Status { get; set; } = OrderStatus.Неизвестен;
diff --git a/CarRepairShop/CarRepairShopContracts/BusinessLogicsContracts/IImplementerLogic.cs b/CarRepairShop/CarRepairShopContracts/BusinessLogicsContracts/IImplementerLogic.cs
new file mode 100644
index 0000000..530d61c
--- /dev/null
+++ b/CarRepairShop/CarRepairShopContracts/BusinessLogicsContracts/IImplementerLogic.cs
@@ -0,0 +1,24 @@
+using CarRepairShopContracts.BindingModels;
+using CarRepairShopContracts.SearchModels;
+using CarRepairShopContracts.ViewModels;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CarRepairShopContracts.BusinessLogicsContracts
+{
+    public interface IImplementerLogic
+    {
+        List<ImplementerViewModel>? ReadList(ImplementerSearchModel? model);
+
+        ImplementerViewModel? ReadElement(ImplementerSearchModel? model);
+
+        bool Create(ImplementerBindingModel model);
+
+        bool Update(ImplementerBindingModel model);
+
+        bool Delete(ImplementerBindingModel model);
+    }
+}
diff --git a/CarRepairShop/CarRepairShopContracts/SearchModels/ImplementerSearchModel.cs b/CarRepairShop/CarRepairShopContracts/SearchModels/ImplementerSearchModel.cs
new file mode 100644
index 0000000..f83cfb6
--- /dev/null
+++ b/CarRepairShop/CarRepairShopContracts/SearchModels/ImplementerSearchModel.cs
@@ -0,0 +1,17 @@
+using System;
+using System.CodeDom.Compiler;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CarRepairShopContracts.SearchModels
+{
+    public class ImplementerSearchModel
+    {
+        public int? Id { get; set; }
+        public string? ImplementerFIO { get; set; }
+        public string? Password { get; set; }
+    }
+}
diff --git a/CarRepairShop/CarRepairShopContracts/StoragesContracts/IImplementerStorage.cs b/CarRepairShop/CarRepairShopContracts/StoragesContracts/IImplementerStorage.cs
new file mode 100644
index 0000000..a272efa
--- /dev/null
+++ b/CarRepairShop/CarRepairShopContracts/StoragesContracts/IImplementerStorage.cs
@@ -0,0 +1,26 @@
+using CarRepairShopContracts.BindingModels;
+using CarRepairShopContracts.SearchModels;
+using CarRepairShopContracts.ViewModels;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CarRepairShopContracts.StoragesContracts
+{
+    public interface IImplementerStorage
+    {
+        List<ImplementerViewModel> GetFullList();
+
+        List<ImplementerViewModel> GetFilteredList(ImplementerSearchModel model);
+
+        ImplementerViewModel? GetElement(ImplementerSearchModel model);
+
+        ImplementerViewModel? Insert(ImplementerBindingModel model);
+
+        ImplementerViewModel? Update(ImplementerBindingModel model);
+
+        ImplementerViewModel? Delete(ImplementerBindingModel model);
+    }
+}
diff --git a/CarRepairShop/CarRepairShopContracts/ViewModels/ImplementerViewModel.cs b/CarRepairShop/CarRepairShopContracts/ViewModels/ImplementerViewModel.cs
new file mode 100644
index 0000000..c6c2c19
--- /dev/null
+++ b/CarRepairShop/CarRepairShopContracts/ViewModels/ImplementerViewModel.cs
@@ -0,0 +1,28 @@
+using CarRepairShopDataModels.Models;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CarRepairShopContracts.ViewModels
+{
+    public class ImplementerViewModel : IImplementerModel
+    {
+        public int Id { get; set; }
+
+        [DisplayName("ФИО исполнителя")]
+        public string ImplementerFIO { get; set; } = string.Empty;
+
+        [DisplayName("Пароль")]
+        public string Password { get; set; } = string.Empty;
+
+        [DisplayName("Опыт работы")]
+        public int WorkExperience { get; set; }
+
+        [DisplayName("Квалификация")]
+        public int Qualification { get; set; }
+
+    }
+}
diff --git a/CarRepairShop/CarRepairShopContracts/ViewModels/OrderViewModel.cs b/CarRepairShop/CarRepairShopContracts/ViewModels/OrderViewModel.cs
index b303510..ee8f2ca 100644
--- a/CarRepairShop/CarRepairShopContracts/ViewModels/OrderViewModel.cs
+++ b/CarRepairShop/CarRepairShopContracts/ViewModels/OrderViewModel.cs
@@ -17,6 +17,7 @@ namespace CarRepairShopContracts.ViewModels
 
         public int RepairId { get; set; }
         public int ClientId { get; set; }
+        public int ImplementerId { get; set; }
 
         [DisplayName("ФИО клиента")]
         public string ClientFIO {  get; set; } = string.Empty;
diff --git a/CarRepairShop/CarRepairShopDataModels/Models/IImplementerModel.cs b/CarRepairShop/CarRepairShopDataModels/Models/IImplementerModel.cs
new file mode 100644
index 0000000..241a233
--- /dev/null
+++ b/CarRepairShop/CarRepairShopDataModels/Models/IImplementerModel.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CarRepairShopDataModels.Models
+{
+    public interface IImplementerModel : IId
+    {
+        string ImplementerFIO { get; }
+        string Password { get; }
+        int WorkExperience { get; }
+        int Qualification { get; }
+    }
+}
diff --git a/CarRepairShop/CarRepairShopDataModels/Models/IOrderModel.cs b/CarRepairShop/CarRepairShopDataModels/Models/IOrderModel.cs
index b7ccdba..aa89702 100644
--- a/CarRepairShop/CarRepairShopDataModels/Models/IOrderModel.cs
+++ b/CarRepairShop/CarRepairShopDataModels/Models/IOrderModel.cs
@@ -10,6 +10,8 @@ namespace CarRepairShopDataModels.Models
     public interface IOrderModel : IId
     {
         int RepairId { get; }
+        int ClientId { get; }
+        int ImplementerId { get; }
         int Count { get; }
         double Sum { get; }
         OrderStatus Status { get; }
diff --git a/CarRepairShop/CarRepairShopDatabaseImplement/CarRepairShopDatabase.cs b/CarRepairShop/CarRepairShopDatabaseImplement/CarRepairShopDatabase.cs
index 99652f6..ab5d3e2 100644
--- a/CarRepairShop/CarRepairShopDatabaseImplement/CarRepairShopDatabase.cs
+++ b/CarRepairShop/CarRepairShopDatabaseImplement/CarRepairShopDatabase.cs
@@ -27,5 +27,6 @@ namespace CarRepairShopDatabaseImplement
 
         public virtual DbSet<Order> Orders { get; set; }
         public virtual DbSet<Client> Clients { get; set; }
+        public virtual DbSet<Implementer> Implementers { get; set; }
     }
 }
\ No newline at end of file
diff --git a/CarRepairShop/CarRepairShopDatabaseImplement/Implements/ImplementerStorage.cs b/CarRepairShop/CarRepairShopDatabaseImplement/Implements/ImplementerStorage.cs
new file mode 100644
index 0000000..1a2c3b4
--- /dev/null
+++ b/CarRepairShop/CarRepairShopDatabaseImplement/Implements/ImplementerStorage.cs
@@ -0,0 +1,76 @@
+using CarRepairShopContracts.BindingModels;
+using CarRepairShopContracts.SearchModels;
+using CarRepairShopContracts.StoragesContracts;
+using CarRepairShopContracts.ViewModels;
+using CarRepairShopDatabaseImplement.Models;
+using DocumentFormat.OpenXml.Office.CustomUI;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CarRepairShopDatabaseImplement.Implements
+{
+    public class ImplementerStorage : IImplementerStorage
+    {
+        public List<ImplementerViewModel> GetFullList()
+        {
+            using var context = new CarRepairShopDatabase();
+            return context.Implementers.Select(x => x.GetViewModel).ToList();
+        }
+
+        public List<ImplementerViewModel> GetFilteredList(ImplementerSearchModel model)
+        {
+            if (string.IsNullOrEmpty(model.ImplementerFIO))
+            {
+                return new();
+            }
+            using var context = new CarRepairShopDatabase();
+            return context.Implementers.Where(x => x.ImplementerFIO.Contains(model.ImplementerFIO)).Select(x => x.GetViewModel).ToList();
+        }
+
+        public ImplementerViewModel? GetElement(ImplementerSearchModel model)
+        {
+            if(string.IsNullOrEmpty(model.ImplementerFIO))
+            {
+                return null;
+            }
+            using var context = new CarRepairShopDatabase();
+            return context.Implementers.FirstOrDefault(x => (!string.IsNullOrEmpty(model.ImplementerFIO)) && x.ImplementerFIO == model.ImplementerFIO || model.Id.HasValue && x.Id == model.Id)?.GetViewModel;
+        }
+
+        public ImplementerViewModel? Insert(ImplementerBindingModel model)
+        {
+            var newImplementer = Implementer.Create(model);
+            if (newImplementer == null) return null;
+            using var context = new CarRepairShopDatabase();
+            context.Implementers.Add(newImplementer);
+            context.SaveChanges();
+            return newImplementer.GetViewModel;
+        }
+
+        public ImplementerViewModel? Update(ImplementerBindingModel model)
+        {
+            using var context = new CarRepairShopDatabase();
+            var Implementer = context.Implementers.FirstOrDefault(x => x.Id == model.Id);
+            if(Implementer == null) return null;
+            Implementer.Update(model);
+            context.SaveChanges();
+            return Implementer.GetViewModel;
+        }
+
+        public ImplementerViewModel? Delete(ImplementerBindingModel model)
+        {
+            using var context = new CarRepairShopDatabase();
+            var element = context.Implementers.FirstOrDefault(x => x.Id == model.Id);
+            if(element != null)
+            {
+                context.Implementers.Remove(element);
+                context.SaveChanges();
+                return element.GetViewModel;
+            }
+            return null;
+        }
+    }
+}
diff --git a/CarRepairShop/CarRepairShopDatabaseImplement/Models/Implementer.cs b/CarRepairShop/CarRepairShopDatabaseImplement/Models/Implementer.cs
new file mode 100644
index 0000000..c129773
--- /dev/null
+++ b/CarRepairShop/CarRepairShopDatabaseImplement/Models/Implementer.cs
@@ -0,0 +1,67 @@
+using CarRepairShopContracts.BindingModels;
+using CarRepairShopContracts.BusinessLogicsContracts;
+using CarRepairShopContracts.ViewModels;
+using CarRepairShopDataModels.Models;
+using DocumentFormat.OpenXml.Wordprocessing;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Diagnostics.CodeAnalysis;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CarRepairShopDatabaseImplement.Models
+{
+    public class Implementer : IImplementerModel
+    {
+        public int Id { get; private set; }
+
+        [Required]
+        public string ImplementerFIO { get; private set; } = string.Empty;
+
+        [Required]
+        public string Password { get; private set; } = string.Empty;
+
+        [Required]
+        public int WorkExperience { get; private set; }
+
+        [Required]
+        public int Qualification { get; private set; }
+
+        [ForeignKey("ClientId")]
+        public virtual List<Order> Orders { get; set; } = new();
+
+        public static Implementer?  Create(ImplementerBindingModel model)
+        {
+            if (model == null) return null;
+            return new Implementer()
+            {
+                Id = model.Id,
+                ImplementerFIO = model.ImplementerFIO,
+                Password = model.Password,
+                WorkExperience = model.WorkExperience,
+                Qualification = model.Qualification
+            };
+        }
+
+        public void Update(ImplementerBindingModel model)
+        {
+            if (model == null) return;
+            ImplementerFIO = model.ImplementerFIO;
+            Password = model.Password;
+            WorkExperience = model.WorkExperience;
+            Qualification = model.Qualification;
+        }
+
+        public ImplementerViewModel GetViewModel => new()
+        {
+            Id = Id,
+            ImplementerFIO = ImplementerFIO,
+            Password = Password,
+            WorkExperience = WorkExperience,
+            Qualification = WorkExperience
+        };
+    }
+}
diff --git a/CarRepairShop/CarRepairShopDatabaseImplement/Models/Order.cs b/CarRepairShop/CarRepairShopDatabaseImplement/Models/Order.cs
index 3377881..04edf7a 100644
--- a/CarRepairShop/CarRepairShopDatabaseImplement/Models/Order.cs
+++ b/CarRepairShop/CarRepairShopDatabaseImplement/Models/Order.cs
@@ -21,6 +21,9 @@ namespace CarRepairShopDatabaseImplement.Models
         [Required]
         public int ClientId { get; set; }
 
+        [Required]
+        public int ImplementerId { get; set; }
+
         [Required]
         public int Count { get; set; }
 
diff --git a/CarRepairShop/CarRepairShopFileImplement/Models/Order.cs b/CarRepairShop/CarRepairShopFileImplement/Models/Order.cs
index 60f3ab8..1af0867 100644
--- a/CarRepairShop/CarRepairShopFileImplement/Models/Order.cs
+++ b/CarRepairShop/CarRepairShopFileImplement/Models/Order.cs
@@ -16,6 +16,7 @@ namespace CarRepairShopFileImplement.Models
         public int Id { get; private set; }
         public int RepairId { get; private set; }
         public int ClientId { get; private set; }
+        public int ImplementerId { get; set; }
         public int Count { get; private set; }
         public double Sum {  get; private set; }
         public OrderStatus Status { get; private set; } = OrderStatus.Неизвестен;
diff --git a/CarRepairShop/CarRepairShopListImplement/Models/Order.cs b/CarRepairShop/CarRepairShopListImplement/Models/Order.cs
index 7d53908..51f7602 100644
--- a/CarRepairShop/CarRepairShopListImplement/Models/Order.cs
+++ b/CarRepairShop/CarRepairShopListImplement/Models/Order.cs
@@ -4,6 +4,7 @@ using CarRepairShopDataModels.Enums;
 using CarRepairShopDataModels.Models;
 using System;
 using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
 using System.Linq;
 using System.Reflection;
 using System.Text;
@@ -17,6 +18,7 @@ namespace CarRepairShopListImplement.Models
         
         public int RepairId { get; private set; }
         public int ClientId { get; private set; }
+        public int ImplementerId { get; set; }
 
         public int Count { get; private set; }
 
diff --git a/CarRepairShop/CarRepairShopView/Program.cs b/CarRepairShop/CarRepairShopView/Program.cs
index ac6aa8a..9337142 100644
--- a/CarRepairShop/CarRepairShopView/Program.cs
+++ b/CarRepairShop/CarRepairShopView/Program.cs
@@ -43,12 +43,14 @@ namespace CarRepairShopView
             services.AddTransient<IOrderStorage, OrderStorage>();
             services.AddTransient<IRepairStorage, RepairStorage>();
             services.AddTransient<IClientStorage, ClientStorage>();
+            services.AddTransient<IImplementerStorage, ImplementerStorage>();
 
             services.AddTransient<IComponentLogic, ComponentLogic>();
             services.AddTransient<IOrderLogic, OrderLogic>();
             services.AddTransient<IRepairLogic, RepairLogic>();
             services.AddTransient<IReportLogic, ReportLogic>();
             services.AddTransient<IClientLogic, ClientLogic>();
+            services.AddTransient<IImplementerLogic, ImplementerLogic>();
 
             services.AddTransient<AbstractSaveToExcel, SaveToExcel>();
             services.AddTransient<AbstractSaveToWord, SaveToWord>();