Отвечай на вопросы, используя следующий контекст:
diff --git a/sources/App/Directory.Build.props b/sources/App/Directory.Build.props
index 647d0ad72a..4c913046c7 100644
--- a/sources/App/Directory.Build.props
+++ b/sources/App/Directory.Build.props
@@ -1,7 +1,7 @@
 <Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 
   <PropertyGroup>
-    <iRISInsuranceCoreVersion>2.0.6460-33d43bb</iRISInsuranceCoreVersion>
+    <iRISInsuranceCoreVersion>2.0.6476-merge-requests-1555-142e8de</iRISInsuranceCoreVersion>
     <iRISFrameworkVersion>0.114.37</iRISFrameworkVersion>
     <SiebelClientVersion>1.0.34</SiebelClientVersion>
     <AutoDictionaryClientVersion>1.0.8</AutoDictionaryClientVersion>
diff --git a/sources/App/src/Modules/iRIS.KaskoCore.OSS/Code/Mappers/KaskoOssMapper.cs b/sources/App/src/Modules/iRIS.KaskoCore.OSS/Code/Mappers/KaskoOssMapper.cs
index aa5a53e3f5..3d7fe8b8ef 100644
--- a/sources/App/src/Modules/iRIS.KaskoCore.OSS/Code/Mappers/KaskoOssMapper.cs
+++ b/sources/App/src/Modules/iRIS.KaskoCore.OSS/Code/Mappers/KaskoOssMapper.cs
@@ -436,8 +436,14 @@ namespace iRIS.KaskoCore.OSS.Code.Mappers
             kasko.StoaInsurer = MapHelper.ConvertBoolToYesNo(dealOptions.Contains(OptionCodes.TECHCENTER) || HasMatch(compensationOptions, OptionCodes.TECHCENTER, OptionCodes.RepairStoaNotChoise));
             kasko.StoaInsurant = MapHelper.ConvertBoolToYesNo(HasMatch(compensationOptions, OptionCodes.INSURANTTECHCENTER, OptionCodes.RepairStoaChoise));
             kasko.StoaCalculate = MapHelper.ConvertBoolToYesNo(dealRisks.Contains(RiskCodes.CARJACKING) || dealRisks.Contains(RiskCodes.TOTAL));
-            kasko.StaffDriverStaj = "0";
-            kasko.StaffDriverAge = "18";
+
+            kasko.StaffDriverAge = deal.AutoDeal.DriverMinAge.HasValue
+                            ? deal.AutoDeal.DriverMinAge.ToString()
+                            : AutoDealConstants.DriverMinAge.ToString();
+            kasko.StaffDriverStaj = deal.AutoDeal.DriverMinExperience.HasValue
+                ? deal.AutoDeal.DriverMinExperience.ToString()
+                : AutoDealConstants.DriverMinExperience.ToString();
+
             kasko.Evacuation = MapHelper.ConvertBoolToYesNo(dealOptions.Contains(OptionCodes.EVACUATION));
             kasko.BrokenGlass = brokenGlass;
             kasko.AvarkomCall = avarkomCall;
diff --git a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Constants/ChangesCaptions.cs b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Constants/ChangesCaptions.cs
index 6772577de7..3fb3d103a2 100644
--- a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Constants/ChangesCaptions.cs
+++ b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Constants/ChangesCaptions.cs
@@ -10,5 +10,18 @@
 
         public const string InsurantRegistrationAddress = "Адрес регистрации страхователя";
         public const string InsurantFactAddress = "Фактический адрес страхователя";
+
+        public const string TheftOfKeys = "Кража ключей";
+        public const string KeysCountChangeToTwoOrMore = "Количество ключей меняется на 2 или более";
+        public const string KeysCountChangeFromTwoToOne = "Количество ключей меняется с 2 - х на 1";
+
+        public const string InsurantChangeNonOwner = "Смена Страхователя, не являющегося Собственником";
+        public const string InsurantChangeOwner = "Смена Страхователя, являющегося Собственником";
+        public const string OwnerAndBeneficiaryChange = "Смена Собственника и Выгодоприобретателя";
+
+        public const string MinAgeIncrease = "Увеличение минимального возраста";
+        public const string MinAgeDecrease = "Уменьшение минимального возраста";
+        public const string MinExperienceIncrease = "Увеличение минимального стажа";
+        public const string MinExperienceDecrease = "Уменьшение минимального стажа";
     }
 }
diff --git a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Constants/ChangesPaths.cs b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Constants/ChangesPaths.cs
index 950ff8501d..25d391781a 100644
--- a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Constants/ChangesPaths.cs
+++ b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Constants/ChangesPaths.cs
@@ -2,6 +2,9 @@
 {
     public class ChangesPaths
     {
+        public const string DateStart = "Period.DateStart";
+        public const string DateEnd = "Period.DateEnd";
+
         public const string DriverLastName = "Driver.Subject.IndividualEntity.Person.LastName";
         public const string DriverName = "Driver.Subject.IndividualEntity.Person.Name";
         public const string DriverMiddleName = "Driver.Subject.IndividualEntity.Person.MiddleName";
@@ -31,6 +34,12 @@
         public const string AutoYearOfIssueCode = "Auto.AutoYearOfIssueCode";
         public const string AutoYearOfIssueValue = "Auto.AutoYearOfIssueValue";
         public const string AutoTransmissionTypeCode = "Auto.AutoTransmissionTypeCode";
+        public const string HasAntiTheftSystem = "Auto.HasAntiTheftSystem";
+        public const string AutoCost = "Auto.AutoCost";
+        public const string AutoBrandName = "Auto.AutoBrandName";
+        public const string AutoModelName = "Auto.AutoModelName";
+        public const string IsCreditAuto = "Auto.IsCreditAuto";
+        public const string ReplacingLocks = "Auto.ReplacingLocks";
 
         public const string OwnerEnteredAddress0 = "Owner.Subject.IndividualEntity.Person.Addresses[0].EnteredAddress";
         public const string OwnerEnteredAddress1 = "Owner.Subject.IndividualEntity.Person.Addresses[1].EnteredAddress";
@@ -46,6 +55,7 @@
         public const string OwnerMiddleName = "Owner.Subject.IndividualEntity.Person.MiddleName";
         public const string OwnerLastName = "Owner.Subject.IndividualEntity.Person.LastName";
         public const string OwnerDateOfBirth = "Owner.Subject.IndividualEntity.Person.DateOfBirth";
+        public const string OwnerInnNumber = "Owner.Subject.IndividualEntity.Person.InnNumber";
 
         public const string InsurantIdentityDocumentSeries = "Insurant.IdentityDocument.Series";
         public const string InsurantIdentityDocumentNumber = "Insurant.IdentityDocument.Number";
@@ -61,6 +71,7 @@
         public const string InsurantEnteredAddress0 = "Insurant.Subject.IndividualEntity.Person.Addresses[0].EnteredAddress";
         public const string InsurantEnteredAddress1 = "Insurant.Subject.IndividualEntity.Person.Addresses[1].EnteredAddress";
         public const string InsurantEnteredAddress2 = "Insurant.Subject.IndividualEntity.Person.Addresses[2].EnteredAddress";
+        public const string InsurantInnNumber = "Insurant.Subject.IndividualEntity.Person.InnNumber";
 
         public const string AutoDealInsurancePeriodType = "AutoDeal.InsurancePeriodType.Code";
         public const string AutoDealInsurancePeriodTypeName = "AutoDeal.InsurancePeriodType.Name";
@@ -69,5 +80,7 @@
         public const string AutoDealIsMultidrive = "AutoDeal.IsMultidrive";
         public const string AutoDealTsIdentityCardType = "AutoDeal.TsIdentityCard.TsIdentityCardTypeCode";
         public const string AutoDealDrivers = "AutoDeal.Drivers";
+        public const string DriverMinAge = "AutoDeal.DriverMinAge";
+        public const string DriverMinExperience = "AutoDeal.DriverMinExperience";
     }
 }
diff --git a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Constants/ModificationCodes.cs b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Constants/ModificationCodes.cs
index f66571d0ea..093717f73b 100644
--- a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Constants/ModificationCodes.cs
+++ b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Constants/ModificationCodes.cs
@@ -311,25 +311,33 @@ namespace iRIS.KaskoLink2.Modification.Code.Constants
         /// <returns>Код изменения.</returns>
         public static int? GetByChangePath(string changePath, string caption = null) => changePath switch
         {
+            ChangesPaths.DateStart => PolicyPeriodChange,
+            ChangesPaths.DateEnd => PolicyPeriodChange,
+
             ChangesPaths.InsurantLastName => PersonNameOrBirthDateChange,
             ChangesPaths.InsurantName => PersonNameOrBirthDateChange,
             ChangesPaths.InsurantMiddleName => PersonNameOrBirthDateChange,
-            ChangesPaths.InsurantDateOfBirth => PersonNameOrBirthDateChange,
             ChangesPaths.InsurantIdentityDocumentType => InsurantOwnerIdentityDocumentChange,
+            ChangesPaths.InsurantDateOfBirth when caption == ChangesCaptions.InsurantChangeNonOwner => InsurantNotBeingOwnerChange,
+            ChangesPaths.InsurantDateOfBirth when caption == ChangesCaptions.InsurantChangeOwner => InsurantBeingOwnerChange,
+            ChangesPaths.InsurantDateOfBirth => PersonNameOrBirthDateChange,
             ChangesPaths.InsurantEnteredAddress0 when caption == ChangesCaptions.InsurantRegistrationAddress => InsurantOwnerRegistrationAddressChange,
             ChangesPaths.InsurantEnteredAddress0 when caption == ChangesCaptions.InsurantFactAddress => InsurantOwnerFactAddressChange,
             ChangesPaths.InsurantEnteredAddress1 when caption == ChangesCaptions.InsurantRegistrationAddress => InsurantOwnerRegistrationAddressChange,
             ChangesPaths.InsurantEnteredAddress1 when caption == ChangesCaptions.InsurantFactAddress => InsurantOwnerFactAddressChange,
+            ChangesPaths.InsurantInnNumber => TaxIdentificationNumberChange,
 
             ChangesPaths.OwnerLastName => PersonNameOrBirthDateChange,
             ChangesPaths.OwnerName => PersonNameOrBirthDateChange,
             ChangesPaths.OwnerMiddleName => PersonNameOrBirthDateChange,
+            ChangesPaths.OwnerDateOfBirth when caption == ChangesCaptions.OwnerAndBeneficiaryChange => OwnerAndBeneficiaryChange,
             ChangesPaths.OwnerDateOfBirth => PersonNameOrBirthDateChange,
             ChangesPaths.OwnerIdentityDocumentType => InsurantOwnerIdentityDocumentChange,
             ChangesPaths.OwnerEnteredAddress0 when caption == ChangesCaptions.OwnerRegistrationAddress => InsurantOwnerRegistrationAddressChange,
             ChangesPaths.OwnerEnteredAddress0 when caption == ChangesCaptions.OwnerFactAddress => InsurantOwnerFactAddressChange,
             ChangesPaths.OwnerEnteredAddress1 when caption == ChangesCaptions.OwnerRegistrationAddress => InsurantOwnerRegistrationAddressChange,
             ChangesPaths.OwnerEnteredAddress1 when caption == ChangesCaptions.OwnerFactAddress => InsurantOwnerFactAddressChange,
+            ChangesPaths.OwnerInnNumber => TaxIdentificationNumberChange,
 
             ChangesPaths.DriverLastName => PersonNameOrBirthDateChange,
             ChangesPaths.DriverName => PersonNameOrBirthDateChange,
@@ -344,7 +352,20 @@ namespace iRIS.KaskoLink2.Modification.Code.Constants
             ChangesPaths.AutoEngineTypeCode => AutoEngineTypeOrPowerChange,
             ChangesPaths.AutoRegistrationNumber => AutoRegistrationChange,
             ChangesPaths.AutoDealTsIdentityCardType => AutoTsIdentityCardChange,
-
+            ChangesPaths.HasAntiTheftSystem => AntiTheftSystemDismantling,
+            ChangesPaths.AutoPurposeOfUsingCode => AutoPurposeOfUsingChange,
+            ChangesPaths.AutoCost => DamageAndTheftCoverageIncrease,
+            ChangesPaths.AutoBrandName => AutoBrandOrModelChange,
+            ChangesPaths.AutoModelName => AutoBrandOrModelChange,
+            ChangesPaths.AutoOriginalKeysAmount when caption == ChangesCaptions.TheftOfKeys => KeysTheft,
+            ChangesPaths.AutoOriginalKeysAmount when caption == ChangesCaptions.KeysCountChangeToTwoOrMore => NumberOfKeysChange,
+            ChangesPaths.AutoOriginalKeysAmount when caption == ChangesCaptions.KeysCountChangeFromTwoToOne => KeysNumberReductionToOne,
+            ChangesPaths.DriverMinAge when caption == ChangesCaptions.MinAgeDecrease => AgeExperienceReduction,
+            ChangesPaths.DriverMinAge when caption == ChangesCaptions.MinAgeIncrease => AgeExperienceIncrease,
+            ChangesPaths.DriverMinExperience when caption == ChangesCaptions.MinExperienceDecrease => AgeExperienceReduction,
+            ChangesPaths.DriverMinExperience when caption == ChangesCaptions.MinExperienceIncrease => AgeExperienceIncrease,
+            ChangesPaths.IsCreditAuto => BeneficiaryChange,
+            ChangesPaths.ReplacingLocks => LockCylindersReplacementOrImmobilizerReprogramming,
             _ => null
         };
 
diff --git a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/CustomProcesses/GetChangesCustomProcess.cs b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/CustomProcesses/GetChangesCustomProcess.cs
index 723ec59b30..72670565e9 100644
--- a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/CustomProcesses/GetChangesCustomProcess.cs
+++ b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/CustomProcesses/GetChangesCustomProcess.cs
@@ -91,7 +91,7 @@ namespace iRIS.KaskoLink2.Modification.Code.CustomProcesses
                 var changes = dealComparer.GetChanges(expectedDeal, actualDeal);
 
                 var displayedChangesFormatter =
-                    new KaskoDisplayedChangesFormatter(processContext.ServiceProvider.GetService<IPathManager>());
+                    new KaskoDisplayedChangesFormatter(processContext.ServiceProvider.GetService<IPathManager>(), changes, expectedBasket);
                 var displayedChanges = displayedChangesFormatter.ToDisplayedChanges(changes);
 
                 var modifications = GetModifications(displayedChanges, basketModifications, actualBasket.Number, actualDeal.Id);
@@ -168,6 +168,11 @@ namespace iRIS.KaskoLink2.Modification.Code.CustomProcesses
                 agreementNames.Add(ModificationAgreementNames.RiskDegreeChangeAgreement);
             }
 
+            if (modifications.Any(x => x.ModificationListForKaskoCode == ModificationCodes.AntiTheftSystemDismantling))
+            {
+                agreementNames.Add(ModificationAgreementNames.RiskDegreeChangeAgreement);
+            }
+
             if (modifications.Any(x => x.ModificationListForKaskoCode == ModificationCodes.DriversListChange))
             { 
                 agreementNames.Add(ModificationAgreementNames.DriversListChangeAgreement);
diff --git a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/CustomProcesses/MapOssDataProcess.cs b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/CustomProcesses/MapOssDataProcess.cs
index 830961bcfc..98a905ea09 100644
--- a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/CustomProcesses/MapOssDataProcess.cs
+++ b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/CustomProcesses/MapOssDataProcess.cs
@@ -84,6 +84,11 @@ namespace iRIS.KaskoLink2.Modification.Code.CustomProcesses
                     deal.EntityContext.Add("prevSpecialProgram", uni.Policy.Kasko.SpecialProgram);
                 }
 
+                if (uni.Policy.PolicyStatus != null)
+                {
+                    deal.EntityContext.Add("ossPolicyStatus", uni.Policy.PolicyStatus);
+                }
+
                 deal.EntityContext.Add("signDate", uni.Policy.Date);
 
                 var processor = processContext.ServiceProvider.GetRequiredService<IOssKaskoOptionsProcessor>();
@@ -94,10 +99,17 @@ namespace iRIS.KaskoLink2.Modification.Code.CustomProcesses
                 deal.AutoDeal.PreviousOssOptions.AddRange(ossKaskoOptionsExcept);
 
                 processor.SetOssKaskoOptions(basket);
-                
+
                 await mapper.MapToDealAsync(uni, basket);
 
                 deal.IsEPolicy = true;
+                var existingPeriod = deal.ConditionBlock.DealPeriods.FirstOrDefault();
+                if (existingPeriod != null)
+                {
+                    existingPeriod.DateStart = deal.DateStart;
+                    existingPeriod.DateEnd = deal.DateEnd;
+                }
+
                 basket.Number = number;
             }
             catch (Exception ex)
diff --git a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Implementations/ChangeValidations/KaskoModificationChangesLink2Validator.cs b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Implementations/ChangeValidations/KaskoModificationChangesLink2Validator.cs
index 0b002c036f..477a619ad4 100644
--- a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Implementations/ChangeValidations/KaskoModificationChangesLink2Validator.cs
+++ b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Implementations/ChangeValidations/KaskoModificationChangesLink2Validator.cs
@@ -67,6 +67,18 @@ namespace iRIS.KaskoLink2.Modification.Code.Implementations.ChangeValidations
                 return ChangeValidationResult.Empty();
             }
 
+            if (HasInsurantChangedCompletely(insurantChanges))
+            {
+                return ChangeValidationResult.Empty();
+            }
+
+            if (!CheckLevenshteinDistanceForInsurantInnChanges(insurantChanges))
+            {
+                var errorMessage = "Не допускается изменение более " + AllowedLevenshteinDistance + " символов в поле Инн страхователя.";
+
+                resultErrors.Add(errorMessage);
+            }          
+
             if (!CheckLevenshteinDistanceForInsurantFullNameChanges(insurantChanges, isInsurantGettingMarried))
             {
                 var errorMessage = isInsurantGettingMarried == true
@@ -78,6 +90,53 @@ namespace iRIS.KaskoLink2.Modification.Code.Implementations.ChangeValidations
             return new ChangeValidationResult(resultErrors);
         }
 
+        private bool CheckLevenshteinDistanceForInsurantInnChanges(List<ObjectCompareResult> insurantChanges)
+        {
+            var allowedInsurantChanges = insurantChanges
+            .Where(dr => dr.ChangedFields.Any(f => f == ChangesPaths.InsurantInnNumber)).ToList();
+
+            var fieldsValues = new Dictionary<string, Func<Insurant, string>>
+            {
+                [ChangesPaths.InsurantInnNumber] = i => i.Subject.IndividualEntity.Person.InnNumber
+            };
+
+            var checkLevenshtein = CheckLevenshteinDistanceFor(
+                allowedInsurantChanges,
+                fieldsValues);
+
+            return checkLevenshtein;
+        }
+
+        /// <summary>
+        /// Проверяем полное изменение страхователя или частичное.
+        /// </summary>
+        /// <param name="insurantChanges"></param>
+        /// <returns></returns>
+        private bool HasInsurantChangedCompletely(List<ObjectCompareResult> insurantChanges)
+        {
+            var fullNameChanges = insurantChanges.Any(change =>
+                change.ChangedFields.Any(field => field == ChangesPaths.InsurantLastName || field == ChangesPaths.InsurantName || field == ChangesPaths.InsurantMiddleName));
+            var dateOfBirthChange = insurantChanges.Any(change => change.ChangedFields.Any(field => field == ChangesPaths.InsurantDateOfBirth));
+
+            var identityDocumentChanges = insurantChanges.Any(change => change.ChangedFields.Any(field => field == ChangesPaths.InsurantIdentityDocumentSeries || field == ChangesPaths.InsurantIdentityDocumentNumber));
+            return fullNameChanges && dateOfBirthChange && identityDocumentChanges;
+        }
+
+        /// <summary>
+        /// Проверяем полное изменение собственника или частичное.
+        /// </summary>
+        /// <param name="insurantChanges"></param>
+        /// <returns></returns>
+        private bool HasOwnerChangedCompletely(List<ObjectCompareResult> ownerChanges)
+        {
+            var fullNameChanges = ownerChanges.Any(change =>
+                change.ChangedFields.Any(field => field == ChangesPaths.OwnerLastName || field == ChangesPaths.OwnerName || field == ChangesPaths.OwnerMiddleName));
+            var dateOfBirthChange = ownerChanges.Any(change => change.ChangedFields.Any(field => field == ChangesPaths.OwnerDateOfBirth));
+
+            var identityDocumentChanges = ownerChanges.Any(change => change.ChangedFields.Any(field => field == ChangesPaths.OwnerIdentityDocumentSeries || field == ChangesPaths.OwnerIdentityDocumentNumber));
+            return fullNameChanges && dateOfBirthChange && identityDocumentChanges;
+        }
+
         /// <summary>
         /// Выполняет проверку допустимости изменений данных собственника.
         /// </summary>
@@ -92,6 +151,18 @@ namespace iRIS.KaskoLink2.Modification.Code.Implementations.ChangeValidations
                 return ChangeValidationResult.Empty();
             }
 
+            if (HasOwnerChangedCompletely(ownerChanges))
+            {
+                return ChangeValidationResult.Empty();
+            }
+
+            if (!CheckLevenshteinDistanceForOwnerInnChanges(ownerChanges))
+            {
+                var errorMessage = "Не допускается изменение более " + AllowedLevenshteinDistance + " символов в поле Инн собственника.";
+
+                resultErrors.Add(errorMessage);
+            }
+
             if (!CheckLevenshteinDistanceForOwnerFullNameChanges(ownerChanges, isOwnerGettingMerried))
             {
                 var errorMessage = isOwnerGettingMerried == true
@@ -103,6 +174,23 @@ namespace iRIS.KaskoLink2.Modification.Code.Implementations.ChangeValidations
             return new ChangeValidationResult(resultErrors);
         }
 
+        private bool CheckLevenshteinDistanceForOwnerInnChanges(List<ObjectCompareResult> ownerChanges)
+        {
+            var allowedOwnerChanges = ownerChanges
+                .Where(dr => dr.ChangedFields.Any(f => f == ChangesPaths.OwnerInnNumber)).ToList();
+
+            var fieldsValues = new Dictionary<string, Func<Insurant, string>>
+            {
+                [ChangesPaths.OwnerInnNumber] = i => i.Subject.IndividualEntity.Person.InnNumber
+            };
+
+            var checkLevenshtein = CheckLevenshteinDistanceFor(
+                allowedOwnerChanges,
+                fieldsValues);
+
+            return checkLevenshtein;
+        }
+
         /// <summary>
         /// Выполняет проверку допустимости изменений данных водителей.
         /// </summary>
@@ -150,9 +238,9 @@ namespace iRIS.KaskoLink2.Modification.Code.Implementations.ChangeValidations
             }
 
             var autoDealChanges = GetChangedItems(DealPathConstants.AutoDeal);
-            var isAutoNumberChanged = autoChanges.Any(a => a.ChangedFields.Any(f => _autoNumberFields.Contains(f)));            
+            var isAutoNumberChanged = autoChanges.Any(a => a.ChangedFields.Any(f => _autoNumberFields.Contains(f)));
             var isAutoDocumentChanged = autoDealChanges.Any(a => a.ChangedFields.Any(f => _autoDocumentFields.Contains(f)));
-            
+
             if (isAutoDocumentChanged && isAutoNumberChanged)
             {
                 resultErrors.Add("Не допускается одновременное изменение VIN  и ПТС.");
@@ -173,12 +261,37 @@ namespace iRIS.KaskoLink2.Modification.Code.Implementations.ChangeValidations
                 resultErrors.Add($"Не допускается изменение признака автозапуска и количества ключей.");
             }
 
+            if (!CheckAntiTheftSystemChanges(autoChanges))
+            {
+                resultErrors.Add($"Возможно только изменение признака демонтажа ПСС и / или ПУУ.");
+            }
+
             return new ChangeValidationResult(resultErrors);
         }
 
+        private bool CheckAntiTheftSystemChanges(List<ObjectCompareResult> autoChanges)
+        {
+            var fieldValues = new Dictionary<string, Func<Auto, bool>>
+            {
+                [ChangesPaths.HasAntiTheftSystem] = i => i.HasAntiTheftSystem ?? false,
+            };
+
+            return !autoChanges.Any(change =>
+            {
+                var exp = (Auto)change.ExpectedObject;
+                var act = (Auto)change.ActualObject;
+
+                return fieldValues.Any(
+                    fieldValue =>
+                        change.ChangedFields.Contains(fieldValue.Key)
+                        && !fieldValue.Value(exp)
+                        && fieldValue.Value(act));
+            });
+        }
+
         private bool CheckHasAutostartChangesAndKeysAmount(List<ObjectCompareResult> autoChanges)
         {
-            return !autoChanges.Any(dr => dr.ChangedFields.Any(f => f == ChangesPaths.AutoHasAutostart) 
+            return !autoChanges.Any(dr => dr.ChangedFields.Any(f => f == ChangesPaths.AutoHasAutostart)
                 && dr.ChangedFields.Any(f => f == ChangesPaths.AutoOriginalKeysAmount));
         }
 
diff --git a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Implementations/Comparison/KaskoDisplayedChangesFormatter.cs b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Implementations/Comparison/KaskoDisplayedChangesFormatter.cs
index 314040c193..9fc5322673 100644
--- a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Implementations/Comparison/KaskoDisplayedChangesFormatter.cs
+++ b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Implementations/Comparison/KaskoDisplayedChangesFormatter.cs
@@ -16,16 +16,21 @@ namespace iRIS.KaskoLink2.Modification.Code.Implementations.Comparison
 {
     public class KaskoDisplayedChangesFormatter : DisplayedChangesFormatter
     {
-        public KaskoDisplayedChangesFormatter(IPathManager pathManager)
+        public KaskoDisplayedChangesFormatter(IPathManager pathManager, Dictionary<string, List<ObjectCompareResult>> changes, Basket expectedBasket)
             : base(pathManager, 30)
         {
             // Periods
             AddRule(
+                "Изменение срока действия договора страхования",
                 period => FormatPeriod(period as Period),
                 "Period.DateStart",
                 "Period.DateEnd");
 
             // Insurant
+            changes.TryGetValue("Insurant", out var insurantChanges);
+            var actualInsurant = insurantChanges?.FirstOrDefault()?.ActualObject as Insurant;
+            var expectedInsurant = insurantChanges?.FirstOrDefault()?.ExpectedObject as Insurant;
+
             AddRuleWithInfo(
                 "ФИО страхователя",
                 "Данные были изменены в профиле личного кабинета",
@@ -71,8 +76,23 @@ namespace iRIS.KaskoLink2.Modification.Code.Implementations.Comparison
             AddRule(
                 "СНИЛС страхователя",
                 "Insurant.Subject.IndividualEntity.Person.SnilsNumber");
+            AddRule(
+                "Инн страхователя",
+                "Insurant.Subject.IndividualEntity.Person.InnNumber");
+            AddRuleWithCustomCaption(              
+                insurant => IsInsurantChangedCompletely(actualInsurant, expectedInsurant) && !IsOwnerAndInsurantTheSamePerson(actualInsurant, expectedBasket.GetKaskoDeal().GetOwner())
+                    ? "Смена Страхователя, не являющегося Собственником"
+                    : "Смена Страхователя, являющегося Собственником",
+                insurant => FormatPersonName((insurant as Insurant)?.Subject),
+                "Insurant.Subject.IndividualEntity.Person.LastName",
+                "Insurant.Subject.IndividualEntity.Person.Name",
+                "Insurant.Subject.IndividualEntity.Person.MiddleName");
 
             // Owner
+            changes.TryGetValue("InsuranceObjects[0].Owners[0]", out var ownerChanges);
+            var actualOwner = ownerChanges?.FirstOrDefault()?.ActualObject as Owner;
+            var expectedOwner = ownerChanges?.FirstOrDefault()?.ExpectedObject as Owner;
+
             AddRule(
                 "ФИО собственника",
                 owner => FormatPersonName((owner as Owner)?.Subject),
@@ -108,11 +128,27 @@ namespace iRIS.KaskoLink2.Modification.Code.Implementations.Comparison
             AddRule(
                 "СНИЛС собственника",
                 "Owner.Subject.IndividualEntity.Person.SnilsNumber");
+            AddRule(
+                "Инн собственника",
+                "Owner.Subject.IndividualEntity.Person.InnNumber");
             AddRule(
                 "Email собственника",
                 "Owner.Subject.IndividualEntity.Person.Email1");
+            if (IsOwnerChangedCompletely(actualOwner, expectedOwner))
+            {
+                AddRule(
+                    "Смена Собственника и Выгодоприобретателя",
+                    owner => FormatPersonName((owner as Owner)?.Subject),
+                    "Owner.Subject.IndividualEntity.Person.LastName",
+                    "Owner.Subject.IndividualEntity.Person.Name",
+                    "Owner.Subject.IndividualEntity.Person.MiddleName");
+            }
 
             // Auto
+            changes.TryGetValue("InsuranceObjects[0].Auto", out var autoChanges);
+            var actualAuto = autoChanges?.FirstOrDefault()?.ActualObject as Auto;
+            var expectedAuto = autoChanges?.FirstOrDefault()?.ExpectedObject as Auto;
+
             AddRule("Год выпуска ТС", "Auto.AutoYearOfIssueCode");
             AddRule("VIN", "Auto.Vin");
             AddRule("Шасси (рама)", "Auto.ChassisNumber");
@@ -134,6 +170,37 @@ namespace iRIS.KaskoLink2.Modification.Code.Implementations.Comparison
                 "Auto.TsIdentityCards[0].DateOfIssued");
             AddRule("Номер диагностической карты", "Auto.DiagnosticCard.Number");
             AddRule("Дата окончания диагностической карты", "Auto.DiagnosticCard.DateEnd");
+            AddRule("Увеличение страховой суммы по рискам «Ущерб» и «Угон / Хищение»", "Auto.AutoCost");
+            AddRule("Демонтаж ПСС и / или ПУУ", "Auto.HasAntiTheftSystem");
+            AddRule("Марка и / или Модель", "Auto.AutoBrandName");
+            AddRule("Марка и / или Модель", "Auto.AutoModelName");
+            AddRule("Смена Выгодоприобретателя", "Auto.IsCreditAuto");           
+
+            if (actualAuto?.ReplacingLocks == true)
+            {
+                AddRule("Замена личинок замков, либо перепрограммирование штатного иммобилайзера", "Auto.ReplacingLocks");
+            }
+
+            if (actualAuto?.OriginalKeysAmount == 0 &&
+                (expectedAuto?.OriginalKeysAmount > 0 ||
+                expectedAuto?.OriginalKeysAmount == null))
+            {
+                AddRule("Кража ключей", "Auto.OriginalKeysAmount");
+            }
+
+            if (actualAuto?.OriginalKeysAmount >= 2 &&
+                (expectedAuto?.OriginalKeysAmount < 2 ||
+                expectedAuto?.OriginalKeysAmount == null))
+            {
+                AddRule("Количество ключей меняется на 2 или более", "Auto.OriginalKeysAmount");
+            }
+
+            if (actualAuto?.OriginalKeysAmount == 1 &&
+                (expectedAuto?.OriginalKeysAmount == 2 ||
+                expectedAuto?.OriginalKeysAmount == null))
+            {
+                AddRule("Количество ключей меняется с 2 - х на 1", "Auto.OriginalKeysAmount");
+            }
 
             // Drivers
             AddRule(
@@ -161,6 +228,10 @@ namespace iRIS.KaskoLink2.Modification.Code.Implementations.Comparison
                 "Driver.DrivingExperiences[0].DrivingExperienceDateStart");
 
             // AutoDeal
+            changes.TryGetValue("AutoDeal", out var autoDealChanges);
+            var actualAutodeal = autoDealChanges?.FirstOrDefault()?.ActualObject as AutoDeal;
+            var expectedAutodeal = autoDealChanges?.FirstOrDefault()?.ExpectedObject as AutoDeal;
+
             AddRule(
                 "Изменен тип использования",
                 autoDeal => FormatPeriodType(autoDeal as AutoDeal),
@@ -178,6 +249,8 @@ namespace iRIS.KaskoLink2.Modification.Code.Implementations.Comparison
                 "AutoDeal.TsIdentityCard.Number",
                 "AutoDeal.TsIdentityCard.DateOfIssued");
 
+            AddRuleForMinAgeExperience(actualAutodeal, expectedAutodeal);
+
             // TransformRules
             AddTransformRule(new DisplayedChangesFormatterTransformRule
             {
@@ -197,6 +270,76 @@ namespace iRIS.KaskoLink2.Modification.Code.Implementations.Comparison
             });
         }
 
+        private void AddRuleForMinAgeExperience(AutoDeal actualAutodeal, AutoDeal expectedAutodeal)
+        {
+            var driverMinAge = expectedAutodeal?.DriverMinAge ?? 18;
+            var driverMinExperience = expectedAutodeal?.DriverMinExperience ?? 0;
+
+            if (actualAutodeal?.DriverMinAge > driverMinAge)
+            {
+                AddRule("Увеличение минимального возраста", "AutoDeal.DriverMinAge");
+            }
+            else if (actualAutodeal?.DriverMinAge < driverMinAge)
+            {
+                AddRule("Уменьшение минимального возраста", "AutoDeal.DriverMinAge");
+            }
+
+            if (actualAutodeal?.DriverMinExperience > driverMinExperience)
+            {
+                AddRule("Увеличение минимального стажа", "AutoDeal.DriverMinExperience");
+            }
+            else if (actualAutodeal?.DriverMinExperience < driverMinExperience)
+            {
+                AddRule("Уменьшение минимального стажа", "AutoDeal.DriverMinExperience");
+            }
+        }
+
+        private bool IsInsurantChangedCompletely(Insurant actualInsurant, Insurant expectedInsurant)
+        {
+            if (actualInsurant == null || expectedInsurant == null)
+            {
+                return false;
+            }
+
+            var fullNameChanges = InsuranceApp.Infrastructure.Procedures.LevenshteinDistance(FormatPersonName(actualInsurant.Subject), FormatPersonName(expectedInsurant.Subject)) > 2;
+            var dateOfBirthChange = actualInsurant.Subject.IndividualEntity.Person.DateOfBirth != expectedInsurant.Subject.IndividualEntity.Person.DateOfBirth;
+            var identityDocumentChanges = actualInsurant.IdentityDocument.Series != expectedInsurant.IdentityDocument.Series;
+
+            return fullNameChanges && dateOfBirthChange && identityDocumentChanges;
+        }
+
+        private bool IsOwnerChangedCompletely(Owner actualOwner, Owner expectedOwner)
+        {
+            if (actualOwner == null || expectedOwner == null)
+            {
+                return false;
+            }
+
+            var fullNameChanges = InsuranceApp.Infrastructure.Procedures.LevenshteinDistance(FormatPersonName(actualOwner.Subject), FormatPersonName(expectedOwner.Subject)) > 2;
+            var dateOfBirthChange = actualOwner.Subject.IndividualEntity.Person.DateOfBirth != expectedOwner.Subject.IndividualEntity.Person.DateOfBirth;
+            var identityDocumentChanges = actualOwner.IdentityDocument.Series != expectedOwner.IdentityDocument.Series || actualOwner.IdentityDocument.Number != expectedOwner.IdentityDocument.Number;
+
+            return fullNameChanges && dateOfBirthChange && identityDocumentChanges;
+        }
+
+        private bool IsOwnerAndInsurantTheSamePerson(Insurant actualInsurant, Owner expectedOwner)
+        {
+            if (actualInsurant == null || expectedOwner == null)
+            {
+                return false;
+            }
+
+            var actualInsurantPerson = actualInsurant.Subject.IndividualEntity.Person;
+            var expectedOwnerPerson = expectedOwner.Subject.IndividualEntity.Person;
+
+            return actualInsurantPerson.LastName == expectedOwnerPerson.LastName &&
+                   actualInsurantPerson.Name == expectedOwnerPerson.Name &&
+                   actualInsurantPerson.MiddleName == expectedOwnerPerson.MiddleName &&
+                   actualInsurantPerson.DateOfBirth == expectedOwnerPerson.DateOfBirth &&
+                   actualInsurant.IdentityDocument.Series == expectedOwner.IdentityDocument.Series &&
+                   actualInsurant.IdentityDocument.Number == expectedOwner.IdentityDocument.Number;
+        }
+
         private string GetAddressCaption(Address address, string typeName) =>
             address.AddressTypeCode switch
             {
@@ -236,7 +379,7 @@ namespace iRIS.KaskoLink2.Modification.Code.Implementations.Comparison
             switch (path)
             {
                 case DealPathConstants.DealPeriods:
-                    return "Периоды использования";
+                    return "Срок страхования";
 
                 case DealPathConstants.Insurant:
                     return "Страхователь";
@@ -261,11 +404,6 @@ namespace iRIS.KaskoLink2.Modification.Code.Implementations.Comparison
                 return "водитель";
             }
 
-            if (path == DealPathConstants.DealPeriods)
-            {
-                return "период";
-            }
-
             return null;
         }
 
@@ -283,6 +421,11 @@ namespace iRIS.KaskoLink2.Modification.Code.Implementations.Comparison
                     return FormatPeriod(compareResult.ExpectedObject as Period);
                 }
 
+                if (compareResult.IsChanged)
+                {
+                    return "Изменение срока действия договора страхования";
+                }
+
                 return null;
             }
 
diff --git a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Implementations/Comparison/ObjectComparerBuilder.cs b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Implementations/Comparison/ObjectComparerBuilder.cs
index 69ae7adf75..22d3fbf42d 100644
--- a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Implementations/Comparison/ObjectComparerBuilder.cs
+++ b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Implementations/Comparison/ObjectComparerBuilder.cs
@@ -146,7 +146,13 @@ namespace iRIS.KaskoLink2.Modification.Code.Implementations.Comparison
                     && expected?.HasAutostart == actual?.HasAutostart
                     && expected?.OriginalKeysAmount == actual?.OriginalKeysAmount
                     && StringCompare(expected?.AutoTransmissionTypeCode, actual?.AutoTransmissionTypeCode)
-                    && expected?.HasTrailer == actual?.HasTrailer;
+                    && expected?.HasTrailer == actual?.HasTrailer
+                    && expected?.AutoCost >= actual?.AutoCost
+                    && expected?.HasAntiTheftSystem == actual?.HasAntiTheftSystem
+                    && StringCompare(expected?.AutoBrandName, actual?.AutoBrandName)
+                    && StringCompare(expected?.AutoModelName, actual?.AutoModelName)
+                    && expected?.IsCreditAuto == actual?.IsCreditAuto
+                    && expected?.ReplacingLocks == actual?.ReplacingLocks;
             }
         }
 
@@ -164,7 +170,9 @@ namespace iRIS.KaskoLink2.Modification.Code.Implementations.Comparison
                     && StringCompare(expectedTsIdentityCard?.Series, actualTsIdentityCard?.Series)
                     && StringCompare(expectedTsIdentityCard?.Number, actualTsIdentityCard?.Number)
                     && expectedTsIdentityCard?.DateOfIssued == actualTsIdentityCard?.DateOfIssued
-                    && StringCompare(expectedTsIdentityCard?.TsIdentityCardTypeCode, actualTsIdentityCard?.TsIdentityCardTypeCode);
+                    && StringCompare(expectedTsIdentityCard?.TsIdentityCardTypeCode, actualTsIdentityCard?.TsIdentityCardTypeCode)
+                    && expected?.DriverMinAge == actual.DriverMinAge
+                    && expected?.DriverMinExperience == actual.DriverMinExperience;
             }
         }
 
@@ -198,7 +206,8 @@ namespace iRIS.KaskoLink2.Modification.Code.Implementations.Comparison
                         expectedPerson?.Addresses?.FirstOrDefault(a => a.AddressTypeCode == AddressTypeCodes.Fact)?.EnteredAddress,
                         actualPerson?.Addresses?.FirstOrDefault(a => a.AddressTypeCode == AddressTypeCodes.Fact)?.EnteredAddress)
                     && StringCompare(expectedPerson?.Phone1, actualPerson?.Phone1)
-                    && StringCompare(expectedPerson.Email1, actualPerson?.Email1);
+                    && StringCompare(expectedPerson.Email1, actualPerson?.Email1)
+                    && StringCompare(expectedPerson.InnNumber, actualPerson?.InnNumber);
             }
         }
 
@@ -231,7 +240,8 @@ namespace iRIS.KaskoLink2.Modification.Code.Implementations.Comparison
                     && StringCompare(
                         expectedPerson?.Addresses?.FirstOrDefault(a => a.AddressTypeCode == AddressTypeCodes.Fact)?.EnteredAddress,
                         actualPerson?.Addresses?.FirstOrDefault(a => a.AddressTypeCode == AddressTypeCodes.Fact)?.EnteredAddress)
-                    && StringCompare(expectedPerson?.RegistrationRegionCode, actualPerson?.RegistrationRegionCode);
+                    && StringCompare(expectedPerson?.RegistrationRegionCode, actualPerson?.RegistrationRegionCode)
+                    && StringCompare(expectedPerson.InnNumber, actualPerson?.InnNumber);
             }
         }
         #endregion
diff --git a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/KaskoModificationAutoModel.cs b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/KaskoModificationAutoModel.cs
index 9a1d003578..72e9d48901 100644
--- a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/KaskoModificationAutoModel.cs
+++ b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/KaskoModificationAutoModel.cs
@@ -22,6 +22,20 @@
 
         public string YearOfIssueCode { get; set; }
 
+        public int? AutoCost { get; set; }
+
+        public string PurposeOfUsingCode { get; set; }
+
+        public bool? InCredit { get; set; }
+
+        public string BankOfCredit { get; set; }
+
+        public string BankOfCreditBik { get; set; }
+
+        public bool? ReplacingLocks { get; set; }
+
+        public bool? HasAntiTheftSystem { get; set; }
+
         public KaskoModificationTsIdentityCardModel TsIdentityCard { get; set; }
     }
 }
diff --git a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/KaskoModificationBasketModel.cs b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/KaskoModificationBasketModel.cs
index d3f13e1709..15fde5e012 100644
--- a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/KaskoModificationBasketModel.cs
+++ b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/KaskoModificationBasketModel.cs
@@ -1,9 +1,13 @@
-﻿namespace iRIS.KaskoLink2.Modification.Code.Models
+﻿using System.Collections.Generic;
+
+namespace iRIS.KaskoLink2.Modification.Code.Models
 {
     public class KaskoModificationBasketModel
     {
         public string ParentPolicyNumber { get; set; }
 
         public KaskoModificationDealModel Deal { get; set; }
-    } 
+
+        public List<KaskoModificationPaymentScheduleModel> PaymentSchedule { get; set; }
+    }
 }
diff --git a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/KaskoModificationDealModel.cs b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/KaskoModificationDealModel.cs
index 31ee4fdd52..3a169eafb9 100644
--- a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/KaskoModificationDealModel.cs
+++ b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/KaskoModificationDealModel.cs
@@ -9,6 +9,10 @@ namespace iRIS.KaskoLink2.Modification.Code.Models
 
         public DateTime ChangeDate { get; set; }
 
+        public DateTime DateStart { get; set; }
+
+        public DateTime DateEnd { get; set; }
+
         public KaskoModificationAutoModel Auto { get; set; }
 
         public List<KaskoModificationDriverModel> Drivers { get; set; } = new List<KaskoModificationDriverModel>();
@@ -16,5 +20,11 @@ namespace iRIS.KaskoLink2.Modification.Code.Models
         public KaskoModificationInsurantModel Insurant { get; set; }
 
         public KaskoModificationOwnerModel Owner { get; set; }
+
+        public int? MinimalAge { get; set; }
+
+        public int? MinimalDrivingExperience { get; set; }
+
+        public KaskoModificationPacketModel Packet { get; set; }
     }
 }
diff --git a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/KaskoModificationPacketField.cs b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/KaskoModificationPacketField.cs
new file mode 100644
index 0000000000..e0a6337ca8
--- /dev/null
+++ b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/KaskoModificationPacketField.cs
@@ -0,0 +1,13 @@
+﻿namespace iRIS.KaskoLink2.Modification.Code.Models
+{
+    public class KaskoModificationPacketField
+    {
+        public string Name { get; set; }
+
+        public string Code { get; set; }
+
+        public int? StructId { get; set; }
+
+        public string AvailableValue { get; set; }
+    }
+}
diff --git a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/KaskoModificationPacketFranchise.cs b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/KaskoModificationPacketFranchise.cs
new file mode 100644
index 0000000000..efe0980ae0
--- /dev/null
+++ b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/KaskoModificationPacketFranchise.cs
@@ -0,0 +1,13 @@
+﻿namespace iRIS.KaskoLink2.Modification.Code.Models
+{
+    public class KaskoModificationPacketFranchise
+    {
+        public string Name { get; set; }
+
+        public string Code { get; set; }
+
+        public int? StructId { get; set; }
+
+        public string SelectedSum { get; set; }
+    }
+}
diff --git a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/KaskoModificationPacketModel.cs b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/KaskoModificationPacketModel.cs
new file mode 100644
index 0000000000..0f2342e501
--- /dev/null
+++ b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/KaskoModificationPacketModel.cs
@@ -0,0 +1,15 @@
+﻿using System.Collections.Generic;
+
+namespace iRIS.KaskoLink2.Modification.Code.Models
+{
+    public class KaskoModificationPacketModel
+    {
+        public List<KaskoModificationPacketField> Risks { get; set; }
+
+        public List<KaskoModificationPacketField> Options { get; set; }
+
+        public List<KaskoModificationPacketFranchise> Franchises { get; set; }
+
+        public List<KaskoModificationPacketField> Coverages { get; set; }
+    }
+}
diff --git a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/KaskoModificationPaymentScheduleModel.cs b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/KaskoModificationPaymentScheduleModel.cs
new file mode 100644
index 0000000000..4e43bd6029
--- /dev/null
+++ b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/KaskoModificationPaymentScheduleModel.cs
@@ -0,0 +1,13 @@
+﻿using System;
+
+namespace iRIS.KaskoLink2.Modification.Code.Models
+{
+    public class KaskoModificationPaymentScheduleModel
+    {
+        public string Number { get; set; }
+
+        public decimal? Sum { get; set; }
+
+        public DateTime? RepaymentDate { get; set; }
+    }
+}
diff --git a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/KaskoModificationPersonModel.cs b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/KaskoModificationPersonModel.cs
index 92191d3ca9..4f2f789cac 100644
--- a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/KaskoModificationPersonModel.cs
+++ b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/KaskoModificationPersonModel.cs
@@ -17,6 +17,8 @@ namespace iRIS.KaskoLink2.Modification.Code.Models
 
         public DateTime? DateOfBirth { get; set; }
 
+        public string Inn { get; set; }
+
         public KaskoModificationIdentityDocumentModel IdentityDocument { get; set; }
 
         public List<KaskoModificationAddressModel> Addresses { get; set; } = new List<KaskoModificationAddressModel>();
diff --git a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/Validators/KaskoModificationDealModelValidator.cs b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/Validators/KaskoModificationDealModelValidator.cs
index daf0c04f27..f5cd522dea 100644
--- a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/Validators/KaskoModificationDealModelValidator.cs
+++ b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/Validators/KaskoModificationDealModelValidator.cs
@@ -30,6 +30,14 @@ namespace iRIS.KaskoLink2.Modification.Code.Models.Validators
                 .NotEqual(false)
                     .When(x => x.Drivers.Count == 0, ApplyConditionTo.CurrentValidator)
                         .WithMessage("Не допускается удаление всех водителей");
+
+            RuleFor(x => x.MinimalAge)
+                .InclusiveBetween(18, 99)
+                    .WithMessage("Значение поля MinimalAge должно быть указано в диапазоне от 18 до 99");
+
+            RuleFor(x => x.MinimalDrivingExperience)
+                .GreaterThanOrEqualTo(0)
+                    .WithMessage("Значение поля MinimalDrivingExperience не может быть меньше 0");
         }
     }
 }
diff --git a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/Validators/KaskoModificationInsurantModelValidator.cs b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/Validators/KaskoModificationInsurantModelValidator.cs
index ab4eb203aa..01899145cf 100644
--- a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/Validators/KaskoModificationInsurantModelValidator.cs
+++ b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/Validators/KaskoModificationInsurantModelValidator.cs
@@ -13,6 +13,10 @@ namespace iRIS.KaskoLink2.Modification.Code.Models.Validators
             RuleFor(x => x.Person.DateOfBirth)
                 .LessThan(DT.Now.AddYears(-18))
                     .WithMessage("Страхователь должен быть старше 18 лет");
+            
+            RuleFor(x => x.Person.Inn)
+                .Length(0, 14)
+                    .WithMessage("Длина поля ИНН страхователя не должна превышать 14 символов");
         }
     }
 }
\ No newline at end of file
diff --git a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/Validators/KaskoModificationOwnerModelValidator.cs b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/Validators/KaskoModificationOwnerModelValidator.cs
index b339cc9baa..919c6cd9da 100644
--- a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/Validators/KaskoModificationOwnerModelValidator.cs
+++ b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Models/Validators/KaskoModificationOwnerModelValidator.cs
@@ -13,6 +13,10 @@ namespace iRIS.KaskoLink2.Modification.Code.Models.Validators
             RuleFor(x => x.Person.DateOfBirth)
                 .LessThan(DT.Now.AddYears(-18))
                     .WithMessage("Владелец должен быть старше 18 лет");
+
+            RuleFor(x => x.Person.Inn)
+                .Length(0, 14)
+                    .WithMessage("Длина поля ИНН собственника не должна превышать 14 символов");
         }
     }
 }
\ No newline at end of file
diff --git a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/PipelineExtensions/KaskoPolicyModificationSetRootModelExtension.cs b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/PipelineExtensions/KaskoPolicyModificationSetRootModelExtension.cs
index e8824d81ca..c160af1dac 100644
--- a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/PipelineExtensions/KaskoPolicyModificationSetRootModelExtension.cs
+++ b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/PipelineExtensions/KaskoPolicyModificationSetRootModelExtension.cs
@@ -4,6 +4,7 @@ using iRIS.Framework.RequestPipeline.Abstractions;
 using iRIS.Framework.RequestPipeline.Extensions;
 using iRIS.Framework.RequestPipeline.Pipelines;
 using iRIS.Framework.UI.PresentationModel;
+using iRIS.InsuranceCore.Entities;
 using iRIS.KaskoCore.Code.Extensions;
 using iRIS.KaskoLink2.Code.Link2;
 using iRIS.KaskoLink2.Modification.Code.Models;
@@ -47,6 +48,7 @@ namespace iRIS.KaskoLink2.Modification.Code.PipelineExtensions
 
             vmDict.TryGetValue(nameof(KaskoModificationBasketModel.ParentPolicyNumber), out var policyNumber);
             vmDict.TryGetValue(nameof(KaskoModificationBasketModel.Deal), out var deal);
+            vmDict.TryGetValue(nameof(KaskoModificationBasketModel.PaymentSchedule), out var paymentSchedule);
 
             model.ParentPolicyNumber = policyNumber?.ToString();
             if (deal is KaskoModificationViewModel_Deal dealObject)
@@ -54,6 +56,39 @@ namespace iRIS.KaskoLink2.Modification.Code.PipelineExtensions
                 model.Deal = new KaskoModificationDealModel();
                 FillKaskoModificationDealModel(dealObject, model);
             }
+
+            if (paymentSchedule is List<KaskoModificationViewModel_PaymentSchedule> paymentScheduleList)
+            {
+                model.PaymentSchedule = new List<KaskoModificationPaymentScheduleModel>();
+
+                foreach (var paymentScheduleItem in paymentScheduleList)
+                {
+                    var paymentScheduleModel = new KaskoModificationPaymentScheduleModel();
+                    FillKaskoModificationPaymentScheduleModel(paymentScheduleItem, paymentScheduleModel);
+                    model.PaymentSchedule.Add(paymentScheduleModel);
+                }
+            }
+        }
+
+        private void FillKaskoModificationPaymentScheduleModel(KaskoModificationViewModel_PaymentSchedule paymentScheduleObject, KaskoModificationPaymentScheduleModel model)
+        {
+            var dealDict = paymentScheduleObject.GetDictionary();
+
+            dealDict.TryGetValue(nameof(KaskoModificationPaymentScheduleModel.Number), out var numberVM);
+            dealDict.TryGetValue(nameof(KaskoModificationPaymentScheduleModel.Sum), out var sumVM);
+            dealDict.TryGetValue(nameof(KaskoModificationPaymentScheduleModel.RepaymentDate), out var repaymentDateVM);
+
+            model.Number = numberVM?.ToString();
+
+            if (sumVM is decimal sum)
+            {
+                model.Sum = sum;
+            }
+
+            if (repaymentDateVM is DateTime repaymentDate)
+            {
+                model.RepaymentDate = repaymentDate;
+            }
         }
 
         private void FillKaskoModificationDealModel(KaskoModificationViewModel_Deal dealObject, KaskoModificationBasketModel model)
@@ -62,10 +97,15 @@ namespace iRIS.KaskoLink2.Modification.Code.PipelineExtensions
 
             dealDict.TryGetValue(nameof(KaskoModificationDealModel.IsMultidrive), out var isMultidriveVM);
             dealDict.TryGetValue(nameof(KaskoModificationDealModel.ChangeDate), out var changeDateVM);
+            dealDict.TryGetValue(nameof(KaskoModificationDealModel.DateStart), out var dateStartVM);
+            dealDict.TryGetValue(nameof(KaskoModificationDealModel.DateEnd), out var dateEndVM);
             dealDict.TryGetValue(nameof(KaskoModificationDealModel.Auto), out var autoVM);
             dealDict.TryGetValue(nameof(KaskoModificationDealModel.Drivers), out var driverVM);
             dealDict.TryGetValue(nameof(KaskoModificationDealModel.Insurant), out var insurantVM);
             dealDict.TryGetValue(nameof(KaskoModificationDealModel.Owner), out var ownerVM);
+            dealDict.TryGetValue(nameof(KaskoModificationDealModel.MinimalAge), out var minimalAgeVM);
+            dealDict.TryGetValue(nameof(KaskoModificationDealModel.MinimalDrivingExperience), out var minimalDrivingExperienceVM);
+            dealDict.TryGetValue(nameof(KaskoModificationDealModel.Packet), out var packetVM);
 
             if (isMultidriveVM is bool isMultidrive)
             {
@@ -77,6 +117,26 @@ namespace iRIS.KaskoLink2.Modification.Code.PipelineExtensions
                 model.Deal.ChangeDate = changeDate;
             }
 
+            if (dateStartVM is DateTime dateStart)
+            {
+                model.Deal.DateStart = dateStart;
+            }
+
+            if (dateEndVM is DateTime dateEnd)
+            {
+                model.Deal.DateEnd = dateEnd;
+            }
+
+            if (minimalAgeVM is int minimalAge)
+            {
+                model.Deal.MinimalAge = minimalAge;
+            }
+
+            if (minimalDrivingExperienceVM is int minimalDrivingExperience)
+            {
+                model.Deal.MinimalDrivingExperience = minimalDrivingExperience;
+            }
+
             if (autoVM is KaskoModificationViewModel_Auto auto)
             {
                 model.Deal.Auto = new KaskoModificationAutoModel();
@@ -100,6 +160,46 @@ namespace iRIS.KaskoLink2.Modification.Code.PipelineExtensions
                 model.Deal.Owner = new KaskoModificationOwnerModel();
                 FillKaskoModificationOwnerModel(owner, model);
             }
+
+            if (packetVM is KaskoModificationViewModel_Packet packet)
+            {
+                model.Deal.Packet = new KaskoModificationPacketModel();
+                FillKaskoModificationPacketModel(packet, model);
+            }
+        }
+
+        private void FillKaskoModificationPacketModel(KaskoModificationViewModel_Packet packet, KaskoModificationBasketModel model)
+        {
+            packet.GetDictionary().TryGetValue(nameof(KaskoModificationPacketModel.Risks), out var packetRisksVM);
+            if (packetRisksVM is List<KaskoModificationViewModel_PacketField> risks)
+            {
+                model.Deal.Packet.Risks = new List<KaskoModificationPacketField>();
+                FillKaskoModificationPacketFieldModel(risks, model.Deal.Packet.Risks);
+            }
+        }
+
+        private void FillKaskoModificationPacketFieldModel(List<KaskoModificationViewModel_PacketField> vmRisks, List<KaskoModificationPacketField> risks)
+        {
+            foreach (var vmRisk in vmRisks)
+            {
+                if (!vmRisk.GetDictionary().TryGetValue(nameof(KaskoModificationPacketField.Name), out var name) ||
+                    !vmRisk.GetDictionary().TryGetValue(nameof(KaskoModificationPacketField.Code), out var code) ||
+                    !vmRisk.GetDictionary().TryGetValue(nameof(KaskoModificationPacketField.StructId), out var structId) ||
+                    !vmRisk.GetDictionary().TryGetValue(nameof(KaskoModificationPacketField.AvailableValue), out var availableValue))
+                {
+                    continue;
+                }
+
+                var risk = new KaskoModificationPacketField
+                {
+                    Name = name as string,
+                    Code = code as string,
+                    StructId = structId as int?,
+                    AvailableValue = availableValue as string
+                };
+
+                risks.Add(risk);
+            }
         }
 
         private void FillKaskoModificationOwnerModel(KaskoModificationViewModel_Owner owner, KaskoModificationBasketModel model)
@@ -124,11 +224,13 @@ namespace iRIS.KaskoLink2.Modification.Code.PipelineExtensions
             personDict.TryGetValue(nameof(KaskoModificationPersonModel.DateOfBirth), out var dateOfBirthVM);
             personDict.TryGetValue(nameof(KaskoModificationPersonModel.Addresses), out var addressesVM);
             personDict.TryGetValue(nameof(KaskoModificationPersonModel.IdentityDocument), out var identityDocVM);
+            personDict.TryGetValue(nameof(KaskoModificationPersonModel.Inn), out var innVM);
 
             model.Name = nameVM?.ToString().Capitalize();
             model.LastName = lastNameVM?.ToString().Capitalize();
             model.MiddleName = middleNameVM?.ToString().Capitalize();
             model.Email = emailVM?.ToString();
+            model.Inn = innVM?.ToString();
             
             if (dateOfBirthVM is DateTime dateOfBirth)
             {
@@ -296,6 +398,13 @@ namespace iRIS.KaskoLink2.Modification.Code.PipelineExtensions
             autoDict.TryGetValue(nameof(KaskoModificationAutoModel.TransmissionTypeCode), out var transmissionVM);
             autoDict.TryGetValue(nameof(KaskoModificationAutoModel.HasAutostart), out bool? autostartVM);
             autoDict.TryGetValue(nameof(KaskoModificationAutoModel.OriginalKeysAmount), out int? keysAmountVm);
+            autoDict.TryGetValue(nameof(KaskoModificationAutoModel.AutoCost), out var autoCostVM);
+            autoDict.TryGetValue(nameof(KaskoModificationAutoModel.PurposeOfUsingCode), out var purposeOfUsingCodeVM);
+            autoDict.TryGetValue(nameof(KaskoModificationAutoModel.InCredit), out var inCreditVM);
+            autoDict.TryGetValue(nameof(KaskoModificationAutoModel.BankOfCredit), out var bankOfCreditVM);
+            autoDict.TryGetValue(nameof(KaskoModificationAutoModel.BankOfCreditBik), out var bankOfCreditBikVM);
+            autoDict.TryGetValue(nameof(KaskoModificationAutoModel.ReplacingLocks), out var replacingLocksVM);
+            autoDict.TryGetValue(nameof(KaskoModificationAutoModel.HasAntiTheftSystem), out var hasAntiTheftSystemVM);
 
             model.Brand = brandVM?.ToString();
             model.Model = modelVM?.ToString();
@@ -307,6 +416,29 @@ namespace iRIS.KaskoLink2.Modification.Code.PipelineExtensions
             model.TransmissionTypeCode = transmissionVM?.ToString();
             model.HasAutostart = autostartVM;
             model.OriginalKeysAmount = keysAmountVm;
+            model.PurposeOfUsingCode = purposeOfUsingCodeVM?.ToString();
+            model.BankOfCredit = bankOfCreditVM?.ToString();
+            model.BankOfCreditBik = bankOfCreditBikVM?.ToString();
+
+            if (inCreditVM is bool inCredit)
+            {
+                model.InCredit = inCredit;
+            }
+
+            if (replacingLocksVM is bool replacingLocks)
+            {
+                model.ReplacingLocks = replacingLocks;
+            }
+
+            if (hasAntiTheftSystemVM is bool hasAntiTheftSystem)
+            {
+                model.HasAntiTheftSystem = hasAntiTheftSystem;
+            }
+
+            if (autoCostVM is int autoCost)
+            {
+                model.AutoCost = autoCost;
+            }
 
             if (tsIdentityCardVM is KaskoModificationViewModel_TsIdentityCard tsIdentityCard)
             {
diff --git a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Procedures/KaskoModificationProcedures.cs b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Procedures/KaskoModificationProcedures.cs
index 648735a1cd..9aa6d30b60 100644
--- a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Procedures/KaskoModificationProcedures.cs
+++ b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Code/Procedures/KaskoModificationProcedures.cs
@@ -8,6 +8,7 @@ using iRIS.Framework.Cqrs.Interfaces;
 using iRIS.Framework.Data;
 using iRIS.Framework.Entity.Dictionary.DictionaryVersionProcessor;
 using iRIS.Framework.Entity.Dictionary.EntitySettings;
+using iRIS.Framework.Entity.Dictionary.LocalDictionaryCache;
 using iRIS.Framework.Entity.Metadata;
 using iRIS.Framework.Entity.Metadata.Manager.Interfaces;
 using iRIS.Framework.FileManagement;
@@ -23,10 +24,12 @@ using iRIS.InsuranceCore.Entities.Custom;
 using iRIS.InsuranceCore.Entities.EntityExtensions;
 using iRIS.InsuranceCore.Entities.Enums;
 using iRIS.InsuranceCore.Infrastructure.Helpers;
+using iRIS.InsuranceCore.OSS.Code.Dto.Uni;
 using iRIS.KaskoCore.Code.Extensions;
 using iRIS.KaskoCore.Code.Helpers;
 using iRIS.KaskoCore.Printing.Code;
 using iRIS.KaskoLink2.Code.CreateOn.DealInitialization;
+using iRIS.KaskoLink2.Code.Subscription.Implementations;
 using iRIS.KaskoLink2.Code.TypeExtensions;
 using iRIS.KaskoLink2.Implementations.Code.Implementations.AutoDictionary.Interfaces;
 using iRIS.KaskoLink2.Modification.Code.Constants;
@@ -94,6 +97,8 @@ namespace iRIS.KaskoLink2.Modification.Code.Procedures
 
                 deal.AutoDeal.IsMultidrive = updateDeal.IsMultidrive ?? deal.AutoDeal.IsMultidrive;
                 deal.ChangesStartDate = updateDeal.ChangeDate;
+                deal.AutoDeal.DriverMinAge = updateDeal.MinimalAge ?? deal.AutoDeal.DriverMinAge;
+                deal.AutoDeal.DriverMinExperience = updateDeal.MinimalDrivingExperience ?? deal.AutoDeal.DriverMinExperience;
 
                 var insurant = deal.Insurant;
                 var owner = deal.GetOwner();
@@ -101,17 +106,100 @@ namespace iRIS.KaskoLink2.Modification.Code.Procedures
                 var auto = deal.GetAuto();
                 var tsIdentityCard = deal.AutoDeal?.TsIdentityCard;
 
+                UpdateDealPeriod(updateDeal, deal);
                 UpdateOwner(updateOwner, owner);
                 UpdateInsurant(updateInsurant, insurant);
                 UpdateDrivers(updateDrivers, drivers);
                 UpdateAuto(updateAuto, auto);
                 UpdateTsIdentityCard(updateTsIdentityCard, tsIdentityCard);
+                UpdateSuggestedBank(updateDeal.Auto, deal);
 
                 var autoDictionaryBasketUpdater = ServiceProvider.GetRequiredService<IAutoDictionaryBasketUpdater>();
                 autoDictionaryBasketUpdater.UpdateAutoDictionaryValues(basket);
             }
         }
 
+        private void UpdateDealPeriod(KaskoModificationDealModel updateDeal, Deal deal)
+        {
+            if (updateDeal.DateStart == DateTime.MinValue || updateDeal.DateEnd == DateTime.MinValue)
+            {
+                return;
+            }
+
+            deal.EntityContext.TryGetValue("ossPolicyStatus", out var ossPolicyStatus);
+
+            if ((string)ossPolicyStatus == SubscriptionConstants.OssCheckPolicyActualityValid)
+            {
+                AddCustomError("Недопустимые изменения: невозможно изменение сроков действия договора. Полис находится в статусе “Действует”", ModificationErrorCodes.UnacceptableChanges);
+                return;
+            }
+
+            if (updateDeal?.DateStart < deal?.DateStart || updateDeal?.DateStart > deal.DateStart?.AddMonths(1).AddDays(1))
+            {
+                AddCustomError("Недопустимые изменения: невозможно изменение сроков действия договора более, чем на 1 месяц", ModificationErrorCodes.UnacceptableChanges);
+                return;
+            }
+
+            if (updateDeal.DateEnd < updateDeal.DateStart.AddYears(1).AddDays(-1) 
+                || updateDeal.DateEnd > updateDeal.DateStart.AddYears(1).AddDays(1))
+            {
+                AddCustomError("Недопустимые изменения: доступно изменение даты окончания договора только на +/ -1 день", ModificationErrorCodes.UnacceptableChanges);
+                return;
+            }
+
+            deal.DateStart = updateDeal?.DateStart;
+            deal.DateEnd = updateDeal.DateEnd;
+
+            var existingPeriod = deal.ConditionBlock.DealPeriods.FirstOrDefault();
+            if (existingPeriod != null)
+            {
+                existingPeriod.DateStart = updateDeal.DateStart;
+                existingPeriod.DateEnd = updateDeal.DateEnd;
+            }
+        }
+
+        private void UpdateSuggestedBank(KaskoModificationAutoModel auto, Deal deal)
+        {
+            if (auto == null)
+            {
+                return;
+            }
+
+            var queryBank = ServiceProvider.GetRequiredService<IQueryBank>();
+            var dealAuto = deal.InsuranceObjects[0].Auto;
+
+            var bank = queryBank.GetBankByBIK(auto.BankOfCreditBik) ?? queryBank.GetBankByName(auto.BankOfCredit);
+            if (bank == null)
+            {
+                AddCustomError("Ошибка валидации: название банка или БИК не соответствует справочнику", ModificationErrorCodes.UnacceptableChanges);
+                return;
+            }
+
+            if (auto.InCredit == null)
+            {
+                return;
+            }
+
+            if (auto.InCredit == true && dealAuto.IsCreditAuto == false)
+            {
+                var suggestedBank = new SuggestedBank
+                {
+                    Name = bank.Subject.LegalEntity.Name,
+                    ShortName = bank.Subject.LegalEntity.ShortName,
+                    BIK = bank.BIK,
+                    Bank_Id = bank.Id > 0 ? bank.Id : null
+                };
+
+                deal.SetBank(suggestedBank);
+                dealAuto.IsCreditAuto = true;
+            }
+            else if (auto.InCredit == false && dealAuto.IsCreditAuto == true)
+            {
+                dealAuto.IsCreditAuto = false;
+                deal.SetBank(null);
+            }
+        }
+
         public void CapitalizeNames(Basket basket)
         {
             var deal = basket.GetKaskoDeal();
@@ -279,9 +367,60 @@ namespace iRIS.KaskoLink2.Modification.Code.Procedures
                 auto.Vin = updateAuto.Vin ?? auto.Vin;
                 auto.OriginalKeysAmount = updateAuto.OriginalKeysAmount ?? auto.OriginalKeysAmount;
                 auto.HasAutostart = updateAuto.HasAutostart == true ? updateAuto.HasAutostart : auto.HasAutostart;
+                auto.AutoCost = updateAuto.AutoCost ?? auto.AutoCost;
+                auto.HasAntiTheftSystem = updateAuto.HasAntiTheftSystem ?? auto.HasAntiTheftSystem;
+                auto.ReplacingLocks = updateAuto.ReplacingLocks ?? auto.ReplacingLocks;
+                UpdateAutoPurposeOfUsing(auto, updateAuto);
+                UpdateAutoBrandModel(auto, updateAuto);
             }
         }
 
+        private void UpdateAutoBrandModel(Auto auto, KaskoModificationAutoModel updateAuto)
+        {
+            if (updateAuto.Brand == null || updateAuto.Model == null)
+            {
+                return;
+            }
+
+            var autoDictionaryClient = ServiceProvider.GetRequiredService<IKaskoAutoDictionaryClientV1>();
+
+            var modifications = autoDictionaryClient.GetAutoBrandModelByBrandAndModelNames(
+                updateAuto.Brand, 
+                updateAuto.Model, 
+                auto.MdmDictionariesVersionId,
+                DT.Now);
+
+            if (modifications.Count == 0)
+            {
+                AddCustomError("Недопустимые изменения: не найдена марка/модель авто по справочнику", ModificationErrorCodes.UnacceptableChanges);
+                return;
+            }
+
+            auto.AutoBrandName = modifications[0].AutoBrand.Name;
+            auto.AutoBrandCode = modifications[0].AutoBrand.Code;
+            auto.AutoModelName = modifications[0].AutoModel.Name;
+            auto.AutoModelCode = modifications[0].AutoModel.Code;
+        }
+
+        private void UpdateAutoPurposeOfUsing(Auto auto, KaskoModificationAutoModel updateAuto)
+        {
+            if (updateAuto.PurposeOfUsingCode == null)
+            {
+                return;
+            }
+
+            var dictionariesCacheManager = ServiceProvider.GetRequiredService<IDictionariesCacheManager>();
+            var item = dictionariesCacheManager.GetItems<PurposeOfUsing>(auto.PurposeOfUsing.VersionId).SingleOrDefault(x => x.Code == updateAuto.PurposeOfUsingCode);
+            if (item == null)
+            {
+                AddCustomError("Недопустимые изменения: допускается передача только кода по справочнику для purposeOfUsing", ModificationErrorCodes.UnacceptableChanges);
+                return;
+            }
+
+            auto.PurposeOfUsing = item;
+            auto.PurposeOfUsingCode = item.Code;
+        }
+
         private void UpdateDrivers(List<KaskoModificationDriverModel> updateDrivers, ObservableList<Driver> drivers)
         {
             if (updateDrivers != null)
@@ -387,6 +526,7 @@ namespace iRIS.KaskoLink2.Modification.Code.Procedures
                 person.Email1 = updatePerson.Email ?? person.Email1;
                 person.DateOfBirth = updatePerson.DateOfBirth ?? person.DateOfBirth;
                 person.Age = updatePerson.DateOfBirth != null ? DurationHelper.CalculateAge(updatePerson.DateOfBirth) : person.Age;
+                person.InnNumber = updatePerson.Inn ?? person.InnNumber;
 
                 if (updatePerson.Addresses != null)
                 {
@@ -574,10 +714,10 @@ namespace iRIS.KaskoLink2.Modification.Code.Procedures
 
         private void CheckAndSetMinFilesCountForInsurantDocuments(Basket basket, List<string> changes)
         {
-            if (changes.Contains(ChangesPaths.InsurantEnteredAddress0) || changes.Contains(ChangesPaths.InsurantEnteredAddress1) || changes.Contains(ChangesPaths.InsurantEnteredAddress2) 
+            if (changes.Contains(ChangesPaths.InsurantEnteredAddress0) || changes.Contains(ChangesPaths.InsurantEnteredAddress1) || changes.Contains(ChangesPaths.InsurantEnteredAddress2)
                 || changes.Contains(ChangesPaths.InsurantName) || changes.Contains(ChangesPaths.InsurantMiddleName) || changes.Contains(ChangesPaths.InsurantLastName)
-                || changes.Contains(ChangesPaths.InsurantDateOfBirth) || changes.Contains(ChangesPaths.InsurantIdentityDocumentSeries) 
-                || changes.Contains(ChangesPaths.InsurantIdentityDocumentNumber) || changes.Contains(ChangesPaths.InsurantIdentityDocumentType) || changes.Contains(ChangesPaths.InsurantIdentityDocumentUnitCode) 
+                || changes.Contains(ChangesPaths.InsurantDateOfBirth) || changes.Contains(ChangesPaths.InsurantIdentityDocumentSeries)
+                || changes.Contains(ChangesPaths.InsurantIdentityDocumentNumber) || changes.Contains(ChangesPaths.InsurantIdentityDocumentType) || changes.Contains(ChangesPaths.InsurantIdentityDocumentUnitCode)
                 || changes.Contains(ChangesPaths.InsurantIdentityDocumentDateIssue) || changes.Contains(ChangesPaths.InsurantIdentityDocumentIssuedBy))
             {
                 SetMinFilesCountForInsurantDocuments(basket);
@@ -586,11 +726,11 @@ namespace iRIS.KaskoLink2.Modification.Code.Procedures
 
         private void CheckAndSetMinFilesCountForOwnerDocuments(Basket basket, List<string> changes)
         {
-            if (changes.Contains(ChangesPaths.OwnerEnteredAddress0) || changes.Contains(ChangesPaths.OwnerEnteredAddress1) || changes.Contains(ChangesPaths.OwnerEnteredAddress2) 
-                || changes.Contains(ChangesPaths.OwnerName) || changes.Contains(ChangesPaths.OwnerMiddleName) || changes.Contains(ChangesPaths.OwnerLastName) 
-                || changes.Contains(ChangesPaths.OwnerDateOfBirth) || changes.Contains(ChangesPaths.OwnerIdentityDocumentSeries) 
-                || changes.Contains(ChangesPaths.OwnerIdentityDocumentNumber) || changes.Contains(ChangesPaths.OwnerIdentityDocumentType) 
-                || changes.Contains(ChangesPaths.OwnerIdentityDocumentUnitCode) || changes.Contains(ChangesPaths.OwnerIdentityDocumentDateIssue) 
+            if (changes.Contains(ChangesPaths.OwnerEnteredAddress0) || changes.Contains(ChangesPaths.OwnerEnteredAddress1) || changes.Contains(ChangesPaths.OwnerEnteredAddress2)
+                || changes.Contains(ChangesPaths.OwnerName) || changes.Contains(ChangesPaths.OwnerMiddleName) || changes.Contains(ChangesPaths.OwnerLastName)
+                || changes.Contains(ChangesPaths.OwnerDateOfBirth) || changes.Contains(ChangesPaths.OwnerIdentityDocumentSeries)
+                || changes.Contains(ChangesPaths.OwnerIdentityDocumentNumber) || changes.Contains(ChangesPaths.OwnerIdentityDocumentType)
+                || changes.Contains(ChangesPaths.OwnerIdentityDocumentUnitCode) || changes.Contains(ChangesPaths.OwnerIdentityDocumentDateIssue)
                 || changes.Contains(ChangesPaths.OwnerIdentityDocumentIssuedBy))
             {
                 SetMinFilesCountForOwnerDocuments(basket);
diff --git a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel.Configuration.cs b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel.Configuration.cs
index d8394e6064..ff3d4c414d 100644
--- a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel.Configuration.cs
+++ b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel.Configuration.cs
@@ -22,6 +22,9 @@ namespace iRIS.KaskoLink2.Modification.Generated.ViewModels
 
             HasProp<KaskoModificationViewModel_Deal>("Deal")
                 .WithCaption("Сделка");
+
+            HasProp<List<KaskoModificationViewModel_PaymentSchedule>>("PaymentSchedule")
+                .WithCaption("Данные по платежам");
         }
     }
 }
diff --git a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel_Auto.Configuration.cs b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel_Auto.Configuration.cs
index ad384f12d9..ed0c59ed0c 100644
--- a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel_Auto.Configuration.cs
+++ b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel_Auto.Configuration.cs
@@ -53,6 +53,27 @@ namespace iRIS.KaskoLink2.Modification.Generated.ViewModels
             HasProp<bool>("HasAutostart")
             .WithCaption("Автозапуск");
 
+            HasProp<int>("AutoCost")
+            .WithCaption("Стоимость авто");
+
+            HasProp<string>("PurposeOfUsingCode")
+            .WithCaption("Автозапуск");
+
+            HasProp<bool>("InCredit")
+            .WithCaption("В кредите");
+
+            HasProp<string>("BankOfCredit")
+            .WithCaption("Банк кредитор");
+
+            HasProp<string>("BankOfCreditBik")
+            .WithCaption("БИК банка кредитора");
+
+            HasProp<bool>("ReplacingLocks")
+            .WithCaption("Замена личинок замков");
+
+            HasProp<bool>("HasAntiTheftSystem")
+            .WithCaption("Противоугонная система");
+
             HasProp<KaskoModificationViewModel_TsIdentityCard>("TsIdentityCard");
         }
     }
diff --git a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel_Deal.Configuration.cs b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel_Deal.Configuration.cs
index 60681386f5..97d99f3e30 100644
--- a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel_Deal.Configuration.cs
+++ b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel_Deal.Configuration.cs
@@ -24,6 +24,12 @@ namespace iRIS.KaskoLink2.Modification.Generated.ViewModels
             HasProp<DateTime>("ChangeDate")
                 .WithCaption("Дата изменения");
 
+            HasProp<DateTime>("DateStart")
+                .WithCaption("Дата начала договора");
+
+            HasProp<DateTime>("DateEnd")
+                .WithCaption("Дата окончания договора");
+
             HasProp<bool>("IsTheftDocuments")
                 .WithCaption("Кража документов");
 
@@ -38,6 +44,15 @@ namespace iRIS.KaskoLink2.Modification.Generated.ViewModels
 
             HasProp<KaskoModificationViewModel_Owner>("Owner")
                 .WithCaption("Владелец");
+
+            HasProp<int>("MinimalAge")
+                .WithCaption("Минимальный возраст");
+
+            HasProp<int>("MinimalDrivingExperience")
+                .WithCaption("Минимальный стаж");
+
+            HasProp<KaskoModificationViewModel_Packet>("Packet")
+                .WithCaption("Данные по выбранному пакету");
         }
     }
 }
diff --git a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel_Packet.Configuration.cs b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel_Packet.Configuration.cs
new file mode 100644
index 0000000000..d3817796e9
--- /dev/null
+++ b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel_Packet.Configuration.cs
@@ -0,0 +1,23 @@
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+// </auto-generated>
+//------------------------------------------------------------------------------
+using System.Collections.Generic;
+using iRIS.Framework.ViewModels.Configuration;
+
+namespace iRIS.KaskoLink2.Modification.Generated.ViewModels
+{
+    /// <summary>
+    /// ViewModel implementation KaskoModificationViewModel_Packet.
+    /// </summary>
+    public class KaskoModificationPacketViewModelConfiguration : IntegrationViewmodelConfiguration<KaskoModificationViewModel_Packet>
+    {
+        protected override void Configure()
+        {
+            HasProp<List<KaskoModificationViewModel_PacketField>>("Risks")
+                .WithCaption("Риски");
+
+        }
+    }
+}
diff --git a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel_Packet.cs b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel_Packet.cs
new file mode 100644
index 0000000000..42d6ac9ba1
--- /dev/null
+++ b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel_Packet.cs
@@ -0,0 +1,14 @@
+﻿using iRIS.Framework.UI.PresentationModel;
+
+namespace iRIS.KaskoLink2.Modification.Generated.ViewModels
+{
+    public class KaskoModificationViewModel_Packet : IntegrationViewModel
+    {
+        /// <summary>
+        /// Initializes a new instance of the <see cref="KaskoModificationViewModel_Packet"/> class.
+        /// </summary>
+        public KaskoModificationViewModel_Packet()
+        {
+        }
+    }
+}
diff --git a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel_PacketField.Configuration.cs b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel_PacketField.Configuration.cs
new file mode 100644
index 0000000000..ba155d003c
--- /dev/null
+++ b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel_PacketField.Configuration.cs
@@ -0,0 +1,27 @@
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+// </auto-generated>
+//------------------------------------------------------------------------------
+using iRIS.Framework.ViewModels.Configuration;
+
+namespace iRIS.KaskoLink2.Modification.Generated.ViewModels
+{
+    public class KaskoModificationPacketFieldViewModelConfiguration : IntegrationViewmodelConfiguration<KaskoModificationViewModel_PacketField>
+    {
+        protected override void Configure()
+        {
+            HasProp<string>("Name")
+                .WithCaption("Наименование");
+
+            HasProp<string>("Code")
+                .WithCaption("Код");
+
+            HasProp<int>("StructId")
+                .WithCaption("structId");
+
+            HasProp<string>("AvailableValue")
+                .WithCaption("Стоимость");
+        }
+    }
+}
diff --git a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel_PacketField.cs b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel_PacketField.cs
new file mode 100644
index 0000000000..33236a5d3d
--- /dev/null
+++ b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel_PacketField.cs
@@ -0,0 +1,14 @@
+﻿using iRIS.Framework.UI.PresentationModel;
+
+namespace iRIS.KaskoLink2.Modification.Generated.ViewModels
+{
+    public class KaskoModificationViewModel_PacketField : IntegrationViewModel
+    {
+        /// <summary>
+        /// Initializes a new instance of the <see cref="KaskoModificationViewModel_PacketField"/> class.
+        /// </summary>
+        public KaskoModificationViewModel_PacketField()
+        {
+        }
+    }
+}
diff --git a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel_PaymentSchedule.Configuration.cs b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel_PaymentSchedule.Configuration.cs
new file mode 100644
index 0000000000..b573c914f6
--- /dev/null
+++ b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel_PaymentSchedule.Configuration.cs
@@ -0,0 +1,28 @@
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+// </auto-generated>
+//------------------------------------------------------------------------------
+using System;
+using iRIS.Framework.ViewModels.Configuration;
+
+namespace iRIS.KaskoLink2.Modification.Generated.ViewModels
+{
+    /// <summary>
+    /// ViewModel implementation KaskoModificationViewModel_PaymentSchedule.
+    /// </summary>
+    public class KaskoModificationPaymentScheduleViewModelConfiguration : IntegrationViewmodelConfiguration<KaskoModificationViewModel_PaymentSchedule>
+    {
+        protected override void Configure()
+        {
+            HasProp<string>("Number")
+                .WithCaption("Номер платежа");
+
+            HasProp<decimal>("Sum")
+                .WithCaption("Сумма платежа");
+
+            HasProp<DateTime>("RepaymentDate")
+                .WithCaption("Дата, до которой необходимо совершить платёж");
+        }
+    }
+}
diff --git a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel_PaymentSchedule.cs b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel_PaymentSchedule.cs
new file mode 100644
index 0000000000..da5f57ab5e
--- /dev/null
+++ b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel_PaymentSchedule.cs
@@ -0,0 +1,11 @@
+﻿using iRIS.Framework.UI.PresentationModel;
+
+namespace iRIS.KaskoLink2.Modification.Generated.ViewModels
+{
+    /// <summary>
+    /// Initializes a new instance of the <see cref="KaskoModificationViewModel_PaymentSchedule"/> class.
+    /// </summary>
+    public class KaskoModificationViewModel_PaymentSchedule : IntegrationViewModel
+    {
+    }
+}
diff --git a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel_Person.Configuration.cs b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel_Person.Configuration.cs
index 35fd7ece6c..1aeb2cbe79 100644
--- a/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel_Person.Configuration.cs
+++ b/sources/App/src/Modules/iRIS.KaskoLink2.Modification/Generated/ViewModels/KaskoModificationViewModel_Person.Configuration.cs
@@ -33,6 +33,9 @@ namespace iRIS.KaskoLink2.Modification.Generated.ViewModels
             HasProp<string>("Email")
                 .WithCaption("Почта");
 
+            HasProp<string>("Inn")
+                .WithCaption("ИНН");
+
             HasProp<bool>("IsGettingMarried")
                 .WithCaption("Вступление в брак");
 
diff --git a/sources/App/src/iRIS.KaskoApiApp.Link2/Json/Link2Schemes/KaskoModification.modify.Input.json b/sources/App/src/iRIS.KaskoApiApp.Link2/Json/Link2Schemes/KaskoModification.modify.Input.json
index e05ae6f130..721e499de3 100644
--- a/sources/App/src/iRIS.KaskoApiApp.Link2/Json/Link2Schemes/KaskoModification.modify.Input.json
+++ b/sources/App/src/iRIS.KaskoApiApp.Link2/Json/Link2Schemes/KaskoModification.modify.Input.json
@@ -19,6 +19,20 @@
       "x-nullable": true,
       "$ref": "#/definitions/KaskoModificationViewModel_Deal",
       "description": "Сделка"
+    },
+    "paymentSchedule": {
+      "title": "PaymentSchedule",
+      "type": [
+        "array",
+        "null"
+      ],
+      "items": {
+        "x-nullable": true,
+        "additionalItems": false,
+        "additionalProperties": false,
+        "$ref": "#/definitions/KaskoModificationViewModel_PaymentSchedule"
+      },
+      "description": "Данные по платежам"
     }
   },
   "required": [ "deal" ],
@@ -39,12 +53,40 @@
           "pattern": "^\\d{2}\\.\\d{2}\\.\\d{4}$",
           "format": "dd.MM.yyyy"
         },
+        "dateStart": {
+          "title": "DateStart",
+          "type": "string",
+          "description": "Дата начала договора",
+          "typeDetails": "DateTime",
+          "pattern": "^\\d{2}\\.\\d{2}\\.\\d{4}$",
+          "format": "dd.MM.yyyy"
+        },
+        "dateEnd": {
+          "title": "DateEnd",
+          "type": "string",
+          "description": "Дата окончания договора",
+          "typeDetails": "DateTime",
+          "pattern": "^\\d{2}\\.\\d{2}\\.\\d{4}$",
+          "format": "dd.MM.yyyy"
+        },
         "isMultidrive": {
           "title": "IsMultidrive",
           "type": "boolean",
           "x-nullable": true,
           "description": "Более одного водителя"
         },
+        "minimalAge": {
+          "type": "number",
+          "x-nullable": true,
+          "title": "MinimalAge",
+          "description": "Минимальный возраст"
+        },
+        "minimalDrivingExperience": {
+          "type": "number",
+          "x-nullable": true,
+          "title": "MinimalDrivingExperience",
+          "description": "Минимальный стаж"
+        },
         "drivers": {
           "title": "Drivers",
           "type": [
@@ -418,6 +460,12 @@
           "x-nullable": true,
           "description": "Вступление в брак"
         },
+        "inn": {
+          "type": "string",
+          "x-nullable": true,
+          "title": "Inn",
+          "description": "ИНН"
+        },
         "addresses": {
           "title": "Addresses",
           "type": [
@@ -773,6 +821,48 @@
           "type": "boolean",
           "description": "Автозапуск"
         },
+        "autoCost": {
+          "type": "number",
+          "x-nullable": true,
+          "title": "AutoCost",
+          "description": "Стоимость авто"
+        },
+        "purposeOfUsingCode": {
+          "type": "string",
+          "x-nullable": true,
+          "title": "PurposeOfUsingCode",
+          "description": "Цель использования ТС"
+        },
+        "inCredit": {
+          "type": "boolean",
+          "x-nullable": true,
+          "title": "InCredit",
+          "description": "В кредите"
+        },
+        "bankOfCredit": {
+          "type": "string",
+          "x-nullable": true,
+          "title": "BankOfCredit",
+          "description": "Банк кредитор"
+        },
+        "bankOfCreditBik": {
+          "type": "string",
+          "x-nullable": true,
+          "title": "BankOfCreditBik",
+          "description": "БИК банка кредитора"
+        },
+        "replacingLocks": {
+          "type": "boolean",
+          "x-nullable": true,
+          "title": "ReplacingLocks",
+          "description": "Замена личинок замков"
+        },
+        "hasAntiTheftSystem": {
+          "type": "boolean",
+          "x-nullable": true,
+          "title": "HasAntiTheftSystem",
+          "description": "Противоугонная система"
+        },
         "tsIdentityCard": {
           "title": "TsIdentityCard",
           "type": [
@@ -816,6 +906,35 @@
           "description": "Кража документов"
         }
       }
+    },
+    "KaskoModificationViewModel_PaymentSchedule": {
+      "title": "KaskoModificationViewModel_PaymentSchedule",
+      "additionalItems": false,
+      "additionalProperties": false,
+      "properties": {
+        "number": {
+          "type": "string",
+          "x-nullable": true,
+          "title": "Number",
+          "description": "Номер платежа"
+        },
+        "sum": {
+          "type": "number",
+          "format": "double",
+          "x-nullable": true,
+          "title": "Sum",
+          "description": "Сумма платежа"
+        },
+        "repaymentDate": {
+          "type": "string",
+          "x-nullable": true,
+          "title": "RepaymentDate",
+          "description": "Дата, до которой необходимо совершить платёж",
+          "typeDetails": "DateTime",
+          "pattern": "^\\d{2}.\\d{2}.\\d{4}$",
+          "format": "dd.MM.yyyy"
+        }
+      }
     }
   },
   "examples": {
diff --git a/sources/Tests/Link2/src/models/Link2/Examples/Link2KaskoModifyExample.ts b/sources/Tests/Link2/src/models/Link2/Examples/Link2KaskoModifyExample.ts
index 30ee27c18e..bf1be0cdcb 100644
--- a/sources/Tests/Link2/src/models/Link2/Examples/Link2KaskoModifyExample.ts
+++ b/sources/Tests/Link2/src/models/Link2/Examples/Link2KaskoModifyExample.ts
@@ -300,4 +300,127 @@ export default class Link2KaskoModifyExample {
       },
     };
   }
+
+  static ModifyMultdriveValidExample2(parentPolicyNumber: string = 'MOD_multidrive_kasko'): any {
+    return {
+      model: {
+        parentPolicyNumber: parentPolicyNumber,
+        deal: {
+          changeDate: DateGenerator.FromNowDays(1),
+          isMultidrive: true,
+          insurant: {
+            person: {
+              lastName: 'Якимчук',
+              name: 'Максим',
+              middleName: 'Викторович',
+              dateOfBirth: '19.01.1972',
+              isGettingMarried: true,
+            },
+          },
+          owner: {
+            person: {
+              lastName: 'Якимчук',
+              name: 'Максим',
+              middleName: 'Викторович',
+              dateOfBirth: '19.01.1972',
+            },
+          },
+          auto: {
+            autoCost: 9970000,
+            purposeOfUsingCode: 'TAXI',
+            originalKeysAmount: 0,
+          },
+          minimalAge: 19,
+          minimalDrivingExperience: 3,
+        },
+      },
+    };
+  }
+
+  static ModifyMultdriveInvalidExample2(
+    parentPolicyNumber: string = 'MOD_multidrive_kasko',
+    minimalAge,
+    purposeOfUsingCode,
+    bankOfCreditBik,
+  ): any {
+    return {
+      model: {
+        parentPolicyNumber: parentPolicyNumber,
+        deal: {
+          changeDate: DateGenerator.FromNowDays(1),
+          dateStart: '20.08.2024',
+          dateEnd: '20.08.2025',
+          isMultidrive: true,
+          insurant: {
+            person: {
+              lastName: 'Якимчук',
+              name: 'Максим',
+              middleName: 'Викторович',
+              dateOfBirth: '19.01.1972',
+              isGettingMarried: true,
+            },
+          },
+          owner: {
+            person: {
+              lastName: 'Якимчук',
+              name: 'Максим',
+              middleName: 'Викторович',
+              dateOfBirth: '19.01.1972',
+            },
+          },
+          auto: {
+            purposeOfUsingCode: purposeOfUsingCode,
+            inCredit: true,
+            bankOfCreditBik: bankOfCreditBik,
+          },
+          minimalAge: minimalAge,
+        },
+      },
+    };
+  }
+
+  static ModifyMultdriveValidExample3(parentPolicyNumber: string = 'MOD_multidrive_kasko'): any {
+    return {
+      model: {
+        parentPolicyNumber: parentPolicyNumber,
+        deal: {
+          changeDate: DateGenerator.FromNowDays(1),
+          dateStart: '20.07.2024',
+          dateEnd: '21.07.2025',
+          isMultidrive: true,
+          insurant: {
+            person: {
+              lastName: 'Якимчукппп',
+              name: 'Максим',
+              middleName: 'Викторович',
+              dateOfBirth: '19.01.1979',
+              isGettingMarried: true,
+              identityDocument: {
+                series: '1111',
+                number: '111111',
+              },
+            },
+          },
+          owner: {
+            person: {
+              lastName: 'Якимчукеке',
+              name: 'Максим',
+              middleName: 'Викторович',
+              dateOfBirth: '19.01.1971',
+              identityDocument: {
+                series: '1111',
+                number: '111111',
+              },
+            },
+          },
+          auto: {
+            brand: 'VAZ',
+            model: 'Granta',
+            replacingLocks: true,
+            inCredit: true,
+          },
+        },
+      },
+    };
+  }
 }
diff --git "a/sources/Tests/Link2/tests/Link2/\320\232\320\220\320\241\320\232\320\236 \320\222\320\275\320\265\321\201\320\265\320\275\320\270\320\265 \320\270\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271/01 - \320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214 \321\203\321\201\320\277\320\265\321\210\320\275\320\276 \320\262\320\275\320\276\321\201\320\270\321\202 \320\270\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217 \320\262 \320\277\320\276\320\273\320\270\321\201.spec.ts" "b/sources/Tests/Link2/tests/Link2/\320\232\320\220\320\241\320\232\320\236 \320\222\320\275\320\265\321\201\320\265\320\275\320\270\320\265 \320\270\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271/01 - \320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214 \321\203\321\201\320\277\320\265\321\210\320\275\320\276 \320\262\320\275\320\276\321\201\320\270\321\202 \320\270\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217 \320\262 \320\277\320\276\320\273\320\270\321\201.spec.ts"
index 7ae32881f3..12d0def246 100644
--- "a/sources/Tests/Link2/tests/Link2/\320\232\320\220\320\241\320\232\320\236 \320\222\320\275\320\265\321\201\320\265\320\275\320\270\320\265 \320\270\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271/01 - \320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214 \321\203\321\201\320\277\320\265\321\210\320\275\320\276 \320\262\320\275\320\276\321\201\320\270\321\202 \320\270\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217 \320\262 \320\277\320\276\320\273\320\270\321\201.spec.ts"	
+++ "b/sources/Tests/Link2/tests/Link2/\320\232\320\220\320\241\320\232\320\236 \320\222\320\275\320\265\321\201\320\265\320\275\320\270\320\265 \320\270\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271/01 - \320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214 \321\203\321\201\320\277\320\265\321\210\320\275\320\276 \320\262\320\275\320\276\321\201\320\270\321\202 \320\270\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217 \320\262 \320\277\320\276\320\273\320\270\321\201.spec.ts"	
@@ -93,8 +93,90 @@ feature('Создание ВИ', () => {
           .filter((item) => item.isDeleted === true)
           .map((item) => item.isDeleted);
 
-        expect(deletedDrivers.length).toEqual(2);
-      })
-      .run();
-  });
-});
+          expect(deletedDrivers.length).toEqual(2);
+        })
+        .run();
+    });
+
+    scenario(
+      'Увеличение страховой суммы для ущерба, смена цели использования, изменение минимального возраста/стажа, кража ключей.',
+      async () => {
+        System.Reporter.owner(Owner.DmitryEvdokimov);
+
+        const expectedFieldNames = [
+          'Увеличение страховой суммы по рискам «Ущерб» и «Угон / Хищение»',
+          'Цель использования',
+          'Увеличение минимального возраста',
+          'Увеличение минимального стажа',
+          'Кража ключей',
+        ];
+
+        const client = await Link2WebClient.ModifyKasko.Modify(
+          Link2Partners.Client,
+          Link2KaskoModifyExample.ModifyMultdriveValidExample2(),
+        )
+          .check((response) => {
+            expect(response.isSuccess).toBeTruthy();
+
+            // Получаем список измененных полей из ответа
+            const responseChanges = (response.model as Link2ModificationResponseModel).changes;
+
+            // Извлекаем значения имя из каждого изменения
+            const actualFieldNames = responseChanges
+              .map((change) => change.changedItems)
+              .flat()
+              .map((item) => item.changedFields)
+              .flat()
+              .map((field) => field.name);
+
+            // Проверяем, что каждый элемент из expectedFieldNames присутствует в actualFieldNames
+            expectedFieldNames.forEach((expectedName) => {
+              expect(actualFieldNames).toContain(expectedName);
+            });
+          })
+          .run();
+      },
+    );
+
+    scenario(
+      'Смена страхователя/собственника/выгодоприобретателя, изменение марки/модели, замена личинок замков, изменение срока действия.',
+      async () => {
+        System.Reporter.owner(Owner.DmitryEvdokimov);
+
+        const expectedFieldNames = [
+          'Смена Страхователя, не являющегося Собственником',
+          'Смена Собственника и Выгодоприобретателя',
+          'Марка и / или Модель',
+          'Замена личинок замков, либо перепрограммирование штатного иммобилайзера',
+          'Изменение срока действия договора страхования',
+          'Смена Выгодоприобретателя',
+        ];
+
+        const client = await Link2WebClient.ModifyKasko.Modify(
+          Link2Partners.Client,
+          Link2KaskoModifyExample.ModifyMultdriveValidExample3(),
+        )
+          .check((response) => {
+            expect(response.isSuccess).toBeTruthy();
+
+            // Получаем список измененных полей из ответа
+            const responseChanges = (response.model as Link2ModificationResponseModel).changes;
+
+            // Извлекаем значения имя из каждого изменения
+            const actualFieldNames = responseChanges
+              .map((change) => change.changedItems)
+              .flat()
+              .map((item) => item.changedFields)
+              .flat()
+              .map((field) => field.name);
+
+            // Проверяем, что каждый элемент из expectedFieldNames присутствует в actualFieldNames
+            expectedFieldNames.forEach((expectedName) => {
+              expect(actualFieldNames).toContain(expectedName);
+            });
+          })
+          .run();
+      },
+    );
+  }
+);
diff --git "a/sources/Tests/Link2/tests/Link2/\320\232\320\220\320\241\320\232\320\236 \320\222\320\275\320\265\321\201\320\265\320\275\320\270\320\265 \320\270\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271/02 - \320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214 \320\262\320\275\320\276\321\201\320\270\321\202 \320\270\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217 \321\201 \320\275\320\265\320\272\320\276\321\200\321\200\320\265\320\272\321\202\320\275\321\213\320\274\320\270 \320\264\320\260\320\275\320\275\321\213\320\274\320\270.spec.ts" "b/sources/Tests/Link2/tests/Link2/\320\232\320\220\320\241\320\232\320\236 \320\222\320\275\320\265\321\201\320\265\320\275\320\270\320\265 \320\270\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271/02 - \320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214 \320\262\320\275\320\276\321\201\320\270\321\202 \320\270\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217 \321\201 \320\275\320\265\320\272\320\276\321\200\321\200\320\265\320\272\321\202\320\275\321\213\320\274\320\270 \320\264\320\260\320\275\320\275\321\213\320\274\320\270.spec.ts"
index d2cc1e598c..2c88083fa6 100644
--- "a/sources/Tests/Link2/tests/Link2/\320\232\320\220\320\241\320\232\320\236 \320\222\320\275\320\265\321\201\320\265\320\275\320\270\320\265 \320\270\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271/02 - \320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214 \320\262\320\275\320\276\321\201\320\270\321\202 \320\270\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217 \321\201 \320\275\320\265\320\272\320\276\321\200\321\200\320\265\320\272\321\202\320\275\321\213\320\274\320\270 \320\264\320\260\320\275\320\275\321\213\320\274\320\270.spec.ts"	
+++ "b/sources/Tests/Link2/tests/Link2/\320\232\320\220\320\241\320\232\320\236 \320\222\320\275\320\265\321\201\320\265\320\275\320\270\320\265 \320\270\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271/02 - \320\237\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\214 \320\262\320\275\320\276\321\201\320\270\321\202 \320\270\320\267\320\274\320\265\320\275\320\265\320\275\320\270\321\217 \321\201 \320\275\320\265\320\272\320\276\321\200\321\200\320\265\320\272\321\202\320\275\321\213\320\274\320\270 \320\264\320\260\320\275\320\275\321\213\320\274\320\270.spec.ts"	
@@ -177,16 +177,81 @@ feature('Некорректный расчет ВИ', () => {
   scenario('Попытка внести изменения в полис с неподходящим статусом.', async () => {
     System.Reporter.owner(Owner.DmitryEvdokimov);
 
-    const client = await Link2WebClient.ModifyKasko.Modify(
-      Link2Partners.Client,
-      Link2KaskoModifyExample.ModifyMultdriveInvalidExample('MOD_kasko_terminated'),
-    )
-      .check((response) => {
-        expect(response.isSuccess).toBeFalsy();
-        expect(
-          response.messages.find((x) => x.text == 'Полис в некорректном статусе. ВИ невозможно.').level == 'Error',
-        );
-      })
-      .run();
-  });
-});
+      const client = await Link2WebClient.ModifyKasko.Modify(
+        Link2Partners.Client,
+        Link2KaskoModifyExample.ModifyMultdriveInvalidExample('MOD_kasko_terminated'),
+      )
+        .check((response) => {
+          expect(response.isSuccess).toBeFalsy();
+          expect(
+            response.messages.find((x) => x.text == 'Полис в некорректном статусе. ВИ невозможно.').level == 'Error',
+          );
+        })
+        .run();
+    });
+
+    scenario('Пользователь вводит некорректное значение минимального возраста.', async () => {
+      System.Reporter.owner(Owner.DmitryEvdokimov);
+
+      const client = await Link2WebClient.ModifyKasko.Modify(
+        Link2Partners.Client,
+        Link2KaskoModifyExample.ModifyMultdriveInvalidExample2('MOD_multidrive_kasko', 17, 'TAXI', '043469743'),
+      )
+        .check((response) => {
+          expect(response.isSuccess).toBeFalsy();
+          expect(
+            response.messages.find(
+              (x) =>
+                x.text ==
+                'Недопустимые изменения: Значение поля MinimalAge должно быть указано в диапазоне от 18 до 99.',
+            ).level == 'Error',
+          );
+        })
+        .run();
+    });
+
+    scenario('Пользователь указывает некорректную дату начала срока действия.', async () => {
+      System.Reporter.owner(Owner.DmitryEvdokimov);
+
+      const client = await Link2WebClient.ModifyKasko.Modify(
+        Link2Partners.Client,
+        Link2KaskoModifyExample.ModifyMultdriveInvalidExample2('MOD_multidrive_kasko', 19, 'TAXI', '043469743'),
+      )
+        .check((response) => {
+          expect(response.isSuccess).toBeFalsy();
+          expect(
+            response.messages.find(
+              (x) =>
+                x.text ==
+                'Недопустимые изменения: невозможно изменение сроков действия договора более, чем на 1 месяц.',
+            ).level == 'Error',
+          );
+        })
+        .run();
+    });
+
+    scenario('Пользователь передает некорректное значение purposeOfUsing и БИК банка.', async () => {
+      System.Reporter.owner(Owner.DmitryEvdokimov);
+
+      const client = await Link2WebClient.ModifyKasko.Modify(
+        Link2Partners.Client,
+        Link2KaskoModifyExample.ModifyMultdriveInvalidExample2('MOD_multidrive_kasko', 19, 'TAXI1', '111111111'),
+      )
+        .check((response) => {
+          expect(response.isSuccess).toBeFalsy();
+          expect(
+            response.messages.find(
+              (x) =>
+                x.text == 'Недопустимые изменения: допускается передача только кода по справочнику для purposeOfUsing.',
+            ).level == 'Error',
+          );
+          expect(
+            response.messages.find(
+              (x) => x.text == 'Ошибка валидации: название банка или БИК не соответствует справочнику.',
+            ).level == 'Error',
+          );
+        })
+        .run();
+    });
+  }
+);
diff --git "a/sources/Tests/Link2/tests/Link2/\320\232\320\220\320\241\320\232\320\236 \320\222\320\275\320\265\321\201\320\265\320\275\320\270\320\265 \320\270\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271/FeatureWrapper.ts" "b/sources/Tests/Link2/tests/Link2/\320\232\320\220\320\241\320\232\320\236 \320\222\320\275\320\265\321\201\320\265\320\275\320\270\320\265 \320\270\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271/FeatureWrapper.ts"
index 7f91f6a6da..6bab4d1614 100644
--- "a/sources/Tests/Link2/tests/Link2/\320\232\320\220\320\241\320\232\320\236 \320\222\320\275\320\265\321\201\320\265\320\275\320\270\320\265 \320\270\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271/FeatureWrapper.ts"	
+++ "b/sources/Tests/Link2/tests/Link2/\320\232\320\220\320\241\320\232\320\236 \320\222\320\275\320\265\321\201\320\265\320\275\320\270\320\265 \320\270\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271/FeatureWrapper.ts"	
@@ -1,4 +1,4 @@
 import { featureBuilder } from 'sl-tests-core';
 
-const feature = featureBuilder(['Link2', 'Каско ККП']);
+const feature = featureBuilder(['Link2', 'Каско']);
 export default feature;

На основе изменений гит напиши как реализовано определение изменений Ф.И.О. или дата рождения Страхователя, Собственника, ЛДУ 
Как реализовано определение изменения Смена Собственника и Выгодоприобретателя, напиши все затронутые места в коде и дай обьяснения