diff --git a/LawFirm/LawFirm.sln b/LawFirm/LawFirm.sln
index 93a0ebb..362180a 100644
--- a/LawFirm/LawFirm.sln
+++ b/LawFirm/LawFirm.sln
@@ -11,7 +11,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LawFirmContracts", "LawFirm
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LawFirmBusinessLogic", "LawFirmBusinessLogic\LawFirmBusinessLogic.csproj", "{1A498224-4BAC-48FF-B6BC-E829BF86C5E4}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LawFirmListImplements", "LawFirmListImplements\LawFirmListImplements.csproj", "{43B2BE7C-83F0-4A91-B2F1-F2F2A2BE5CAE}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LawFirmListImplements", "LawFirmListImplements\LawFirmListImplements.csproj", "{43B2BE7C-83F0-4A91-B2F1-F2F2A2BE5CAE}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LawFirmFileImplement", "LawFirmFileImplement\LawFirmFileImplement.csproj", "{E75AF81D-A466-470A-A3F7-EC0E6F33C866}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -39,6 +41,10 @@ Global
 		{43B2BE7C-83F0-4A91-B2F1-F2F2A2BE5CAE}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{43B2BE7C-83F0-4A91-B2F1-F2F2A2BE5CAE}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{43B2BE7C-83F0-4A91-B2F1-F2F2A2BE5CAE}.Release|Any CPU.Build.0 = Release|Any CPU
+		{E75AF81D-A466-470A-A3F7-EC0E6F33C866}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{E75AF81D-A466-470A-A3F7-EC0E6F33C866}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{E75AF81D-A466-470A-A3F7-EC0E6F33C866}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{E75AF81D-A466-470A-A3F7-EC0E6F33C866}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
diff --git a/LawFirm/LawFirmFileImplement/LawFirmFileImplement.csproj b/LawFirm/LawFirmFileImplement/LawFirmFileImplement.csproj
new file mode 100644
index 0000000..7c491f4
--- /dev/null
+++ b/LawFirm/LawFirmFileImplement/LawFirmFileImplement.csproj
@@ -0,0 +1,14 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\LawFirmContracts\LawFirmContracts.csproj" />
+    <ProjectReference Include="..\LawFirmDataModels\LawFirmDataModels.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/LawFirm/LawFirmFileImplement/Models/Blank.cs b/LawFirm/LawFirmFileImplement/Models/Blank.cs
new file mode 100644
index 0000000..2e7bbfd
--- /dev/null
+++ b/LawFirm/LawFirmFileImplement/Models/Blank.cs
@@ -0,0 +1,74 @@
+using LawFirmContracts.BindingModels;
+using LawFirmContracts.ViewModels;
+using LawFirmDataModels.Models;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+
+namespace LawFirmFileImplement.Models
+{
+    public class Blank : IBlankModel
+    {
+        public string BlankName { get; private set; } = String.Empty;
+
+        public double Cost { get; set; }
+
+        public int Id { get; private set; }
+
+        public static Blank? Create(BlankBindingModel? model)
+        {
+            if (model == null)
+            {
+                return null;
+            }
+            return new Blank()
+            {
+                Id = model.Id,
+                BlankName = model.BlankName,
+                Cost = model.Cost
+            };
+        }
+
+        public static Blank? Create(XElement element)
+        {
+            if (element == null)
+            {
+                return null;
+            }
+            return new Blank()
+            {
+                Id = Convert.ToInt32(element.Attribute("Id")!.Value),
+                BlankName = element.Element("BlankName")!.Value,
+                Cost = Convert.ToDouble(element.Element("Cost")!.Value)
+            };
+        }
+
+        public void Update(BlankBindingModel? model)
+        {
+            if (model == null)
+            {
+                return;
+            }
+            BlankName = model.BlankName;
+            Cost = model.Cost;
+        }
+        public BlankViewModel GetViewModel => new()
+        {
+            Id = Id,
+            BlankName = BlankName,
+            Cost = Cost
+        };
+
+        public XElement GetXElement => new(
+            "Blank",
+             new XAttribute("Id", Id),
+             new XElement("BlankName", BlankName),
+             new XElement("Cost", Cost.ToString())
+        );
+
+    }
+}
diff --git a/LawFirm/LawFirmFileImplement/Models/Document.cs b/LawFirm/LawFirmFileImplement/Models/Document.cs
new file mode 100644
index 0000000..6484a59
--- /dev/null
+++ b/LawFirm/LawFirmFileImplement/Models/Document.cs
@@ -0,0 +1,105 @@
+using LawFirmContracts.BindingModels;
+using LawFirmContracts.ViewModels;
+using LawFirmDataModels.Models;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+
+namespace LawFirmFileImplement.Models
+{
+    public class Document : IDocumentModel
+    {
+        public string DocumentName { get; private set; } = string.Empty;
+
+        public double Price { get; private set; }
+
+        public int Id { get; private set; }
+
+        public Dictionary<int, int> Blanks { get; private set; } = new();
+
+        private Dictionary<int, (IBlankModel, int)>? _documentBlanks = null;
+        public Dictionary<int, (IBlankModel, int)> DocumentBlanks
+        {
+            get
+            {
+                if (_documentBlanks == null)
+                {
+                    var source = DataFileSingleton.GetInstance();
+                    _documentBlanks = Blanks.ToDictionary(
+                        x => x.Key, 
+                        y => ((source.Blanks.FirstOrDefault(z => z.Id == y.Key) as IBlankModel)!, y.Value)
+                    );
+                }
+                return _documentBlanks;
+            }
+        }
+
+
+        public static Document? Create(DocumentBindingModel? model)
+        {
+            if (model == null)
+            {
+                return null;
+            }
+            return new Document()
+            {
+                Id = model.Id,
+                DocumentName = model.DocumentName,
+                Price = model.Price,
+                Blanks = model.DocumentBlanks.ToDictionary(x => x.Key, x => x.Value.Item2)
+            };
+        }
+
+        public static Document? Create(XElement element)
+        {
+            if (element == null)
+            {
+                return null;
+            }
+            return new Document()
+            {
+                Id = Convert.ToInt32(element.Attribute("Id")!.Value),
+                DocumentName = element.Element("DocumentName")!.Value,
+                Price = Convert.ToDouble(element.Element("Price")!.Value),
+                Blanks = element.Element("DocumentBlanks")!.Elements("DocumentBlank").ToDictionary(
+                    x => Convert.ToInt32(x.Element("Key")?.Value), 
+                    x => Convert.ToInt32(x.Element("Value")?.Value)
+                )
+            };
+        }
+
+
+        public void Update(DocumentBindingModel? model)
+        {
+            if (model == null)
+            {
+                return;
+            }
+            DocumentName = model.DocumentName;
+            Price = model.Price;
+            Blanks = model.DocumentBlanks.ToDictionary(x => x.Key, x => x.Value.Item2);
+            _documentBlanks = null;
+        }
+        public DocumentViewModel GetViewModel => new()
+        {
+            Id = Id,
+            DocumentName = DocumentName,
+            Price = Price,
+            DocumentBlanks = DocumentBlanks
+        };
+
+        public XElement GetXElement => new(
+            "Document",
+             new XAttribute("Id", Id),
+             new XElement("DocumentName", DocumentName),
+             new XElement("Price", Price.ToString()),
+             new XElement("DocumentBlanks", Blanks.Select(x =>
+             new XElement("DocumentBlank",
+             new XElement("Key", x.Key),
+             new XElement("Value", x.Value)))
+            .ToArray()));
+    }
+}
diff --git a/LawFirm/LawFirmFileImplement/Models/Order.cs b/LawFirm/LawFirmFileImplement/Models/Order.cs
new file mode 100644
index 0000000..28a6a3a
--- /dev/null
+++ b/LawFirm/LawFirmFileImplement/Models/Order.cs
@@ -0,0 +1,110 @@
+using LawFirmContracts.BindingModels;
+using LawFirmContracts.ViewModels;
+using LawFirmDataModels.Enums;
+using LawFirmDataModels.Models;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+
+namespace LawFirmFileImplement.Models
+{
+    public class Order : IOrderModel
+    {
+        public int DocumentId { get; private set; }
+
+        public string DocumentName { get; private set; } = string.Empty;
+
+        public int Count { get; private set; }
+
+        public double Sum { get; private set; }
+
+        public OrderStatus Status { get; private set; } = OrderStatus.Неизвестен;
+
+        public DateTime DateCreate { get; private set; } = DateTime.Now;
+
+        public DateTime? DateImplement { get; private set; }
+
+        public int Id { get; private set; }
+
+        public static Order? Create(OrderBindingModel? model)
+        {
+            if (model == null)
+            {
+                return null;
+            }
+            return new Order
+            {
+                DocumentId = model.DocumentId,
+                DocumentName = model.DocumentName,
+                Count = model.Count,
+                Sum = model.Sum,
+                Status = model.Status,
+                DateCreate = model.DateCreate,
+                DateImplement = model.DateImplement,
+                Id = model.Id,
+            };
+        }
+
+        public static Order? Create(XElement element)
+        {
+            if (element == null)
+            {
+                return null;
+            }
+            return new Order()
+            {
+                Id = Convert.ToInt32(element.Attribute("Id")!.Value),
+                DocumentName = element.Element("DocumentName")!.Value,
+                DocumentId = Convert.ToInt32(element.Element("DocumentId")!.Value),
+                Sum = Convert.ToDouble(element.Element("Sum")!.Value),
+                Count = Convert.ToInt32(element.Element("Count")!.Value),
+                Status = (OrderStatus)Enum.Parse(typeof(OrderStatus), element.Element("Status")!.Value),
+                DateCreate = Convert.ToDateTime(element.Element("DateCreate")!.Value),
+                DateImplement = Convert.ToDateTime(element.Element("DateCreate")!.Value)
+            };
+        }
+
+        public void Update(OrderBindingModel? model)
+        {
+            if (model == null)
+            {
+                return;
+            }
+            DocumentId = model.DocumentId;
+            DocumentName = model.DocumentName;
+            Count = model.Count;
+            Sum = model.Sum;
+            Status = model.Status;
+            DateCreate = model.DateCreate;
+            DateImplement = model.DateImplement;
+            Id = model.Id;
+        }
+
+        public OrderViewModel GetViewModel => new()
+        {
+            DocumentId = DocumentId,
+            DocumentName = DocumentName,
+            Count = Count,
+            Sum = Sum,
+            DateCreate = DateCreate,
+            DateImplement = DateImplement,
+            Id = Id,
+            Status = Status,
+        };
+
+        public XElement GetXElement => new(
+            "Order",
+             new XAttribute("Id", Id),
+             new XElement("DocumentName", DocumentName),
+             new XElement("DocumentId", DocumentId.ToString()),
+             new XElement("Count", Count.ToString()),
+             new XElement("Sum", Sum.ToString()),
+             new XElement("Status", Status.ToString()),
+             new XElement("DateCreate", DateCreate.ToString()),
+             new XElement("DateImplement", DateImplement.ToString())
+        );
+    }
+}