Инструкция по обновлению

Данная инструкция поможет вам обновить приложение Creatio до последней версии независимо от того, какая версия приложения установлена у вас сейчас. С обзором изменений и улучшений, реализованных в новой версии Creatio, вы можете ознакомиться в описании релизов.

На заметку. Для обновления Creatio на сервере приложения нужны .NET Framework версии 4.7.2 и Runtime, при необходимости скачайте актуальную версию приложения: скачать .NET Framework 4.7.2.

Также обновите Developer pack: скачать Developer pack.

Начиная с версии 7.16.0 для корректной компиляции конфигурации необходимо скачать и установить .NET Core SDK 3.1 x64: скачать .NET Core SDK 3.1 x64. После установки SDK необходимо выполнить перезагрузку хоста. 

Если в вашем приложении есть установленные культуры, которые не используются сотрудниками компании, то рекомендуем перед началом обновления удалить эти культуры. Это позволит ускорить обновление, так как не потребуется загружать данные для неактуальных культур. Подробнее: Инструменты очистки дискового пространства.

Также, прежде чем приступить к обновлению, перейдите в раздел Конфигурация и выполните последовательно действия Сгенерировать исходный код для всех элементов и Компилировать все. Если в результате выполнения этих действий возникнут ошибки, их необходимо исправить, и только после этого начинать процедуру обновления.

На заметку. Некоторые шаги процесса отличаются для MS SQL Server, Oracle Database и PostgreSQL.

Важно. Для обновления приложения с версий ниже, чем 7.8.0, обратитесь в службу поддержки Terrasoft за дополнительными инструкциями.

Как выполнить обновление 

Рекомендуем выполнять обновление в два этапа:

  1. Сначала выполните обновление на тестовом сайте с копией актуальной базы данных.

  2. Если первый этап завершился успешно, то обновите продуктивную (production) версию приложения.

    Важно. Обновление продуктивной версии нужно проводить не в бизнес-время, так как при этом сайт будет недоступен.

В общем случае процесс обновления состоит из следующих шагов:

  1. Создайте копию базы данных и бинарных файлов продуктивного сайта, которые понадобятся для развертывания тестового сайта. Для создания резервной копии бинарных файлов просто заархивируйте их в любой другой директории.Подробнее: Создание резервной копии базы данных.

  2. Создайте тестовый сайт в IIS. Подробнее: Установка и настройка приложения Creatio on-site.

  3. Установите обновление на тестовый сайт. Подробнее: Установка обновления.

  4. Проверьте корректность работы тестового сайта. Если основные и часто используемые функции выполняются без ошибок, то можно приступить к обновлению продуктивного сайта. Подробнее: Запуск, компиляция и проверка работы сайта.

  5. Создайте копии базы данных и приложения. Они понадобятся для возврата на рабочую версию в случае неполадок. Подробнее: Создание резервной копии базы данных.

  6. Остановите рабочую версию приложения. Подробнее: Остановка сайта.

  7. Установите обновление на продуктивную версию. Подробнее: Установка обновления.

  8. Запустите сайт и проверьте работоспособность обновленного приложения. Подробнее: Запуск, компиляция и проверка работы сайта.

Если ваше приложение работает в режиме веб-фермы, то после успешного обновления тестового и одного из продуктивных сайтов необходимо выполнить еще несколько шагов:

  1. Установить значения Data Source и Initial Catalog в файле Terrasoft.Tools.WorkspaceConsole.exe.config.

  2. Отключить все сайты, кроме того, который был обновлен.

  3. Скопировать в них содержимое папки myapp\webapp\conf с обновленного сайта.

  4. Включить все сайты.

    На заметку. Для возможности доменной авторизации при входе в систему необходимо перенести настройки аутентификации Windows в обновленное приложение. Подробнее: Как настроить аутентификацию Windows.

Создание резервной копии базы данных 

Резервная копия базы данных продуктивного приложения нужна не только для возврата на рабочую версию сайта в случае неполадок, но также для создания тестового сайта.

На заметку. Если вы разворачиваете резервную копию БД продуктивного сайта и не хотите, чтобы на ней работали ваши интеграции, то выполните скрипт Disable_Synchronization.sql: скачать скрипт.

Создание резервной копии базы данных MS SQL Server 

  1. Запустите Microsoft SQL Server Management Studio.

  2. Выберите команду Back Up в разделе Tasks в контекстном меню каталога базы данных приложения.

  3. Укажите название копии базы данных и каталог, в котором будет создана резервная копия. Нажмите OK, чтобы начать резервное копирование (Рис. 1).

Рис. 1 — Создание резервной копии базы данных
update_guide_backup

На заметку. Убедитесь, что директория для сохранения резервной копии базы данных уже существует. Сервер SQL не имеет прав на создание каталогов.

В случае обновления продуктивной версии Creatio рекомендуем также создать копию приложения при помощи любого файлового менеджера.

Чтобы в дальнейшем открыть резервную копию базы данных:

  1. Запустите и авторизируйтесь в Microsoft SQL Studio.

  2. Создайте новую базу данных, если необходимо извлечь часть данных из бэкапа, или выберите имеющуюся базу данных, если необходимо восстановить утерянные данные.

  3. В контекстном меню нужной базы данных выберите команду Restore Database.

  4. В окне восстановления укажите путь к файлу резервной копии.

  5. Нажмите OK и дождитесь восстановления данных.

Развертывание базы данных из резервной копии подробно описано в отдельной статье Развернуть базу данных MS SQL.

Создание резервной копии базы данных Oracle Database 

  1. Подключитесь к серверу Oracle с помощью утилиты SqlPlus:

    sqlplus "SYS/SYS_PASSWORD@ORACLE_HOST:ORACLE_PORT/SERVICE_NAME AS SYSDBA"
    • SYS_PASSWORD — пароль для авторизации на сервере Oracle;
    • ORACLE_HOST — адрес сервера Oracle;
    • ORACLE_PORT — порт сервера Oracle;
    • SERVICE_NAME — имя сервиса Oracle.
  2. Выполните в SqlPlus следующие команды:
    CREATE OR REPLACE DIRECTORY DIRECTORY_ALIAS AS 'PATH_TO_BACKUP_DIRECTORY';
    
    GRANT READ, WRITE ON DIRECTORY DIRECTORY_ALIAS to BACKUP_SCHEMA_NAME; 
    
    • DIRECTORY_ALIAS — псевдоним директории, в которой будет размещена резервная копия;
    • PATH_TO_BACKUP_DIRECTORY — путь к директории, в которой будет размещена резервная копия;
    • BACKUP_SCHEMA_NAME — имя схемы, для которой выполняется резервное копирование.
  3. Выполните резервное копирование схемы с помощью утилиты expdp:
    expdp "BACKUP_SCHEMA_NAME/BACKUP_SCHEMA_PASSWORD@//ORACLE_HOST:ORACLE_PORT/SERVICE_NAME" SCHEMAS=BACKUP_SCHEMA_NAME DIRECTORY=DIRECTORY_ALIAS dumpfile=BACKUP_FILE_NAME NOLOGFILE=YES
    • ORACLE_HOST — адрес сервера Oracle;
    • ORACLE_PORT — порт сервера Oracle;
    • SERVICE_NAME — имя сервиса Oracle;
    • DIRECTORY_ALIAS — псевдоним директории, в которой будет размещена резервная копия;
    • BACKUP_SCHEMA_NAME — имя схемы, для которой выполняется резервное копирование;
    • BACKUP_SCHEMA_PASSWORD — пароль схемы, для которой выполняется резервное копирование;
    • BACKUP_FILE_NAME — имя файла, в который будет выгружена схема.

В результате работы утилиты expdp будет создана резервная копия схемы BACKUP_SCHEMANAME с именем файла BACKUP_FILE_NAME в директории PATH_TO_BACKUP_DIRECTORY.

Развертывание базы данных из резервной копии подробно описано в отдельной статье Развернуть базу данных Oracle.

Создание резервной копии базы данных PostgreSQL 

Для создания резервной копии базы данных необходима утилита pg_dump. Она находится в каталоге установленного программного обеспечения PostgreSQL.

 

  1. Установите пароль подключения к серверу базы данных в переменную окружения:

    set PGPASSWORD=pg_password ("export PGPASSWORD=pg_password" – для linux)
  2. Выполните следующую команду:

     

    "C:\PostgreSQL\pg_dump.exe" --host=#ServerIP# --port #ServerPort# --username #SysUserName# --format=c --blobs --verbose -c -f #BackupFilePath# #DatabaseName#
    • ServerIP — адрес сервера PostgreSQL;
    • ServerPort — порт сервера PostgreSQL;
    • SysUserName — имя системного пользователя PostgreSQL (задается при установке PostgreSQL сервера);
    • SysUserPassword — пароль системного пользователя PostgreSQL (задается при установке PostgreSQL сервера);
    • BackupFilePath — директория, в которой будет размещена резервная копия;
    • DatabaseName — имя базы данных, для которой выполняется резервное копирование.

В результате работы утилиты будет создана резервная копия базы данных в директории BackupFilePath.

Развертывание базы данных из резервной копии подробно описано в отдельных статьях Развернуть базу данных PostgreSQL (Linux) и Развернуть базу данных PostgreSQL (Windows).

Установка обновления 

Чтобы установить обновление:

  1. Удалите временные файлы Creatio из каталога сайта.

    Адреса файлов, которые необходимо удалить, указаны в настройке tempDirectory в блоке compilation (настройка находится в web.config loader-a и web.app).

    Если настройка tempDirectory не указана, то очистите файлы, хранящиеся по приведенным ниже адресам (где %ApplicationName% — имя сайта в IIS):

    ​64 bit

    • ​%windir%\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files%ApplicationName%
    • %windir%\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files%ApplicationName%_0

    ​32 bit

    • ​%windir%\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files%ApplicationName%
    • %windir%\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files%ApplicationName%_0

    При отсутствии доступа к интернету на сервере приложения 

    Чтобы скачать все необходимые для обновления данные, вам понадобится компьютер, который подключен к интернету. Выполняйте на компьютере с доступом к интернету все инструкции шага "Установка обновления" до п. 4 включительно.

    После п. 4 перейдите на сервер приложения. Как это сделать, читайте в инструкции ниже.

  2. Скачайте сервис выгрузки дистрибутивов для обновления: скачать сервис.

  3. Откройте файл скрипта downloader.json для редактирования. Заполните в нем все параметры соответствующими значениями:

    • WebRootDirectory — путь к корневой папке сайта. Не указывайте этот параметр, если на сервере вашего приложения отсутствует доступ к интернету и вы выгружаете данные с другого компьютера.
    • WorkDirectory — путь к папке, где будут сохраняться инсталяционные пакеты и утилита обновления.

    • Site — имя вашего сайта в IIS.

    • Product — название продукта, на котором развернут сайт. Скопируйте нужное название из блока enum Product в файле Downloader.ps1.
    • DbEngineType — тип СУБД. Скопируйте нужное название из блока enum DbEngineType в файле Downloader.ps1.

    • VersionBuild — текущая версия вашего приложения.
    • SkipBinary — добавьте вручную этот параметр со значением “true” в downloader.json, если у вас уже есть дистрибутивные файлы и вы не хотите выкачивать их повторно.
    • ConnectionString — строка подключения к базе данных. Внимательно скопируйте данную строку с вашего подключения к базе. Не указывайте этот параметр, если на сервере вашего приложения отсутствует доступ к интернету и вы выгружаете данные с другого компьютера.
    • CurrentSchemaName — текущая схема в БД. Для MS SQL — “dbo”, для PostgreSql — “public”, для Oracle — ваша схема.
    • RedisServer — Redis-сервер.
    • RedisDB — номер базы Redis.
    • RedisPassword – пароль на Redis.
    • RedisPort — порт Redis.
    • UseAWS — добавьте вручную этот параметр со значением “true”, если вы используете AWS.

    Обратите внимание, что параметры ниже не являются обязательными. Если их не указывать в downloader.json, то они будут определены автоматически по пути WebRootDirectory.

    • ConnectionString
    • CurrentSchemaName
    • DbEngineType
    • RedisServer
    • RedisDB
    • RedisPassword
    • RedisPort

    Пример заполнения файла downloader.json:

    {
    "WebRootDirectory": "c:\\inetpub\\wwwroot\\delivery",
    "WorkDirectory": "c:\\temp\\delivery",
    "Site": "имя вашего сайта в IIS",
    "Product": "Studio",
    "VersionBuild": "7.14.1.935"
    }

    При отсутствии доступа к интернету на сервере приложения 

    Пример заполнения файла downloader.json, если на сервере вашего приложения отсутствует доступ к интернету, и вы выгружаете данные с другого компьютера:

    {
    "workDirectory": "c:\\temp\\delivery",
    "Site": "имя вашего сайта в IIS",
    "Product": "Studio",
    "DbEngineType": "MSSQL",
    "VersionBuild": "7.14.1.935",
    "CurrentSchemaName": "dbo",
    "RedisServer": "localhost",
    "RedisDB": 1,
    "RedisPort": 6379
    }

    Важно. Обратите внимание, что во всех путях знак “\” указывается как “\\”.

  4. Запустите Powershell-скрипт Downloader.ps1. Для корректной отработки данного скрипта должен быть установлен PowerShell 5.1 и выше.

    После выполнения скрипта в папке, которую вы указали в workDirectory, создается папка с набором пакетов обновлений InstallPackages и папка с утилитой обновления.

    В папке InstallPackages будет создана следующая структура папок/файлов:

    • На каждую версию появляется отдельная папка в алфавитном порядке соответственно плану обновления.

    • В каждой папке версии находится: архив с файлами соответствующей версии (в процессе обновления архив автоматически распакуется в папки App, Pkg, Template) и папка со сценарием (Scenario).

    Пример файловой структуры:

    folder_icon.png ​7.16.0

    • 7.16.0.284_SalesTeam _SoftKey_MSSQL_ENU.zip

    • Scenario

    folder_icon.png ​7.16.1

    • 7.16.1.299 SalesTeam _SoftKey_MSSQL_ENU.zip

    • Scenario

    folder_icon.png ​7.16.2

    • 7.16.2.574_SalesTeam _SoftKey_MSSQL_ENU.zip

    • Scenario

    При отсутствии доступа к интернету на сервере приложения 

    Перед переходом к следующему шагу перейдите на сервер приложения. Для этого:

    1. Скопируйте сформированную папку (с набором пакетов обновлений InstallPackages, папкой с утилитой обновления Updater и файлом Start.bat) и переместите ее на сервер, где находится ваше приложение.

    2. Откройте файл скрипта install.xml из папки Updater для редактирования. Заполните в нем следующие параметры соответствующими значениями:

      • WebRootDirectory — путь к корневой папке сайта.
      • InstallPackagesPath — путь к папке, где сохранены инсталляционные пакеты и утилита обновления.
      • ConnectionString — строка подключения к базе данных. Внимательно скопируйте данную строку с вашего подключения к базе.
    3. Сохраните внесенные изменения.

    Перед обновлением на версию 7.15.3 

    Перед обновлением на версию 7.15.3 вам необходимо убедиться в отсутствии кастомизаций ReportService в вашей конфигурации.

    Для этого используйте один из скриптов ниже в зависимости от того, какую систему управления базами данных вы используете: MSSQL или PostgreSQL.

    Скрипт для MSSQL:
    {
    
    declare @val as varchar(max) = ''
    
    select @val = concat(@val, SchemaName, ', ')
    
    from
    
    (select SysSchema.Name as SchemaName
    
    from SysSchemaContent with (nolock)
    
    inner join SysSchema with(nolock) on SysSchemaContent.SysSchemaId = SysSchema.Id
    
    inner join SysPackage with(nolock) on SysSchema.SysPackageId = SysPackage.Id
    
    where
    
    SysPackage.Maintainer != 'Terrasoft' and
    
    SysSchema.ManagerName in ('EntitySchemaManager', 'PageSchemaManager',
    
    'ProcessSchemaManager', 'ProcessUserTaskSchemaManager', 'SourceCodeSchemaManager') and
    
    (
    
    cast(SysSchemaContent.Content as varchar(max)) like '%Terrasoft.Reports%' or
    
    cast(SysSchemaContent.Content as varchar(max)) like '%ReportSchemaManager%'
    
    )
    
    union
    
    select SysSchema.Name as SchemaName
    
    from SysSchema with(nolock)
    
    inner join SysPackage with(nolock) on SysSchema.SysPackageId = SysPackage.Id
    
    where
    
    SysPackage.Maintainer != 'Terrasoft' and
    
    SysSchema.ManagerName in ('EntitySchemaManager', 'PageSchemaManager',
    
    'ProcessSchemaManager', 'ProcessUserTaskSchemaManager', 'SourceCodeSchemaManager') and
    
    (
    
    cast(SysSchema.MetaData as varchar(max)) like '%Terrasoft.Reports%' or
    
    cast(SysSchema.MetaData as varchar(max)) like '%ReportSchemaManager%'
    
    )
    
    ) as contentList
    
    select DB_NAME(), @val as SchemaContent
    
    }
    Скрипт для PostgreSQL:
    do $$
    
    begin
    
    declare
    
    v_val text := '';
    
    begin
    
    select v_val = concat(v_val, "SchemaName", ', ') into v_val
    
    from(
    
    select "SysSchema"."Name" as "SchemaName"
    
    from "SysSchemaContent"
    
    inner join "SysSchema" on "SysSchemaContent"."SysSchemaId" = "SysSchema"."Id"
    
    inner join "SysPackage" on "SysSchema"."SysPackageId" = "SysPackage"."Id"
    
    where
    
    "SysPackage"."Maintainer" != 'Terrasoft' and
    
    "SysSchema"."ManagerName" in ('EntitySchemaManager', 'PageSchemaManager',
    
    'ProcessSchemaManager', 'ProcessUserTaskSchemaManager', 'SourceCodeSchemaManager') and
    
    (cast("SysSchemaContent"."Content" as text) like '%Terrasoft.Reports%' or
    
    cast("SysSchemaContent"."Content" as text) like '%ReportSchemaManager%')
    
    union
    
    select "SysSchema"."Name" as "SchemaName"
    
    from "SysSchema"
    
    inner join "SysPackage" on "SysSchema"."SysPackageId" = "SysPackage"."Id"
    
    where
    
    "SysPackage"."Maintainer" != 'Terrasoft' and
    
    "SysSchema"."ManagerName" in ('EntitySchemaManager', 'PageSchemaManager',
    
    'ProcessSchemaManager', 'ProcessUserTaskSchemaManager', 'SourceCodeSchemaManager') and
    
    (cast("SysSchema"."MetaData" as text) like '%Terrasoft.Reports%' or
    
    cast("SysSchema"."MetaData" as text) like '%ReportSchemaManager%')
    
    ) as "contentList";
    
    end;
    
    end $$;

    Скрипт  для Oracle:

    begin
    	declare
    		v_val VARCHAR2(4000) := '';
    	begin
    		EXECUTE IMMEDIATE 'CREATE OR REPLACE FUNCTION blob_to_clob (blob_in IN BLOB)
    		RETURN CLOB
    		AS
    			 v_clob CLOB;
    			 v_varchar VARCHAR2(32767);
    			 v_start PLS_INTEGER := 1;
    			 v_buffer PLS_INTEGER := 32767;
    		BEGIN
    			IF blob_in IS NULL THEN
    				RETURN NULL;
    			END IF;
    			 DBMS_LOB.CREATETEMPORARY(v_clob, TRUE);
    			
    			 FOR i IN 1..CEIL(DBMS_LOB.GETLENGTH(blob_in) / v_buffer)
    			 LOOP
    				
    				v_varchar := UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(blob_in, v_buffer, v_start));
    				DBMS_LOB.WRITEAPPEND(v_clob, LENGTH(v_varchar), v_varchar);
    				v_start := v_start + v_buffer;
    			 END LOOP;
    			RETURN v_clob;
    		END blob_to_clob;';
    
    		select v_val = concat(concat(v_val, ','), "SchemaName") into v_val
    		from(
    			select "SysSchema"."Name" as "SchemaName"
    			from "SysSchemaContent"
    			inner join "SysSchema" on "SysSchemaContent"."SysSchemaId" = "SysSchema"."Id"
    			inner join "SysPackage" on "SysSchema"."SysPackageId" = "SysPackage"."Id"
    			where
    				"SysPackage"."Maintainer" != 'Terrasoft' and
    				"SysSchema"."ManagerName" in (
    					'EntitySchemaManager',
    					'PageSchemaManager',
    					'ProcessSchemaManager',
    					'ProcessUserTaskSchemaManager',
    					'SourceCodeSchemaManager') and
    				(blob_to_clob("SysSchemaContent"."Content") LIKE '%Terrasoft.Reports%' or
    				 blob_to_clob("SysSchemaContent"."Content") LIKE '%ReportSchemaManager%')
    		union
    		select "SysSchema"."Name" as "SchemaName"
    		from "SysSchema"
    		inner join "SysPackage" on "SysSchema"."SysPackageId" = "SysPackage"."Id"
    		where
    			"SysPackage"."Maintainer" != 'Terrasoft' and
    			"SysSchema"."ManagerName" in (
    				'EntitySchemaManager',
    				'PageSchemaManager',
    				'ProcessSchemaManager',
    				'ProcessUserTaskSchemaManager',
    				'SourceCodeSchemaManager') and
    			(blob_to_clob("SysSchema"."MetaData") LIKE '%Terrasoft.Reports%' or
    			 blob_to_clob("SysSchema"."MetaData") LIKE '%ReportSchemaManager%')
    		);
    	end;
    end;

    Если скрипт не вернул результатов, то можете перейти к следующим шагам обновления.
    Если скрипт вернул список замещенных схем, то вам необходимо выполнить анализ схем (сравнить их с коробочной).

    1. Проверить, в каких пакетах находятся схемы из выборки:

      1. Если в выборку попали схемы из базовых пакетов: проверить заблокирован ли базовый пакет и значение Maintainer базового пакета должно быть «Terrasoft».

      2. Если в выборку попали только схемы из кастомных пакетов, тогда необходимо проанализировать схемы из выборки.

    1. В случае, если в кастомной в схеме присутствует using Terrasoft.Reports: вам необходимо удалить using (данное действие носит рекомендательных характер и не повлияет на обновление).

    1. В случае, если в замещенной в схеме присутствуют упоминания других инструментов для генерирования отчетов, но при этом логика использования не меняется по сравнению с коробочной, тогда вам необходимо воспользоваться инструкцией.

    1. В случае, если в замещенной в схеме присутствуют упоминания других инструментов для генерирования отчетов и при этом логика формирования отчетов изменена, тогда вам необходимо провести анализ замещений и адаптировать их под работу с пакетом (пакет уже включен в вашу конфигурацию начиная с версии 7.15.0).

  5. Перед запуском обновления рекомендуем проверить, что компоненты ваших серверов соответствуют параметрам, перечисленным в контейнере “prerequisites” файла Updater.dll.config, который находится в папке Updater:

    <prerequisites>
    
          <add name="NetFramework" version="4.7.2"/>
    
          <add name="NetCore" version="2.2.300"/>
    
          <add name="VisualCpp" version="Microsoft Visual C++ 2010 Redistributable (x64)"/>
    
          <add name="Database" version="mssql=2012 SP3;oracle=10;postgresql=9.6"/>
    
          <add name="IIS" version="7.0.0"/>
    
          <!-- Redis check does not work in AWS -->
    
          <!--<add name="Redis" version="3.0.0"/>-->
    
    </prerequisites>

    В параметрах указаны минимально необходимые версии компонентов Creatio:

    • NetFramework — версия .NET Framework;
    • NetCore — версия .NET Core;
    • VisualCpp — версия Visual C++;
    • Database — версия базы данных;
    • IIS — версия сервера IIS;
    • Redis — версия Redis.

    Проверку версий утилита Updater выполняет на основании значений “version” параметров.

    Проверка версии для Redis работает только в том случае, если сервер приложений и сервер Redis установлены на одном компьютере. В противном случае закомментируйте параметр “Redis”.

  6. В папке с утилитой обновления Updater найдите и запустите файл Updater.exe от имени администратора. Также для корректного выполнения обновления у пользователя должны быть права на модификацию папок.

    На заметку. Чтобы запустить файл от имени администратора, кликните по нему правой кнопкой мыши и в меню выберите “Запуск от имени администратора”.

    В ходе выполнения обновления будет последовательно запущено несколько команд, дождитесь завершения процесса.

    Если при запуске обновления вы получили ошибку "Installed components/software have an outdated/incorrect version. In order to start the Creatio update, please upgrade it", то проверьте в списке программных компонентов (над текстом ошибки) какого именно ПО не хватает и установите его.

    Если в процессе обновления возникли другие ошибки, то необходимо прекратить процедуру и обратиться в службу поддержки, предоставив папку с логами обновления: Каталог CreatioUpdater\InstallPackages\%Version%\Log.

    Если обновление прошло успешно, то необходимо очистить Redis.

    После успешного обновления необходимо убедиться, что используются микросервисные компоненты последней версии. В противном случае их также необходимо обновить.

Лицензирование приложения при обновлении 

Для версий 7.18.0 и выше при каждом обновлении необходимо перелицензировать приложение. Для версии 7.18.0 заказ и загрузка лицензий выполняются после обновления приложения. Начиная с версии 7.18.1 заказать и загрузить лицензии можно до начала обновления. О том, как сформировать запрос на лицензии и загрузить их в приложение, читайте в статье Лицензировать Creatio.

Восстановление системы перед повторным запуском обновления 

1.Удалите все файлы приложения и скопируйте на их место бинарные файлы из резервной копии, сделанной перед обновлением.

2.Восстановите базу данных из резервной копии.

3.В директории InstallPackages удалите из дочерних папок для всех версий папки App, Log, Pkg, Temp, Template, если они были созданы.

4.Внесите изменения, которые вам перечислит служба поддержки в ответе на письмо с логом обновления.

После выполнения этих шагов можно повторно запускать обновление приложения.

При обновлении на версию 7.8.2 

Если для разработки используется система контроля версий SVN, после установки обновления необходимо дополнительно выполнить утилиту FlatPackageConverter, которая:

1.Перестраивает структуру ресурсов. Ресурсы будут относиться к пакету, а не схеме.

2.Исправляет некорректные свойства SVN файлов ресурсов.

3.Исправляет некорректные имена культур.

4.Удаляет некорректные файлы ресурсов (пустые или без элементов) и ресурсы, у которых нет схем в этом же пакете.

Скачайте и распакуйте архив FlatPackageConverter.rar. Откройте в любом текстовом редакторе файл example.bat, который отвечает за запуск утилиты FlatPackageConverter.exe c нужными параметрами в виде:

FlatPackageConverter.exe relocateResources

--repositoryUri=<repositoryUri> --version=<version> --user=<user>

--password=<password> --commentFilePath=<commentFilePath>

--copyPath=<copyPath> --kind=<kind>

--needDeletedWrongResources=<needDeletedWrongResources>

Описание используемых параметров представлено в таблице.

Параметр

Описание

<repositoryUri>

Путь к вашему репозиторию SVN.

<version>

Версия пакетов, структуру которых необходимо обновить.

<user>

Логин пользователя SVN.

<password>

Пароль пользователя SVN.

<commentFilePath>

Путь к локальному файлу, который содержит комментарий для фиксации изменений в SVN.

<copyPath>

Путь к директории, в которую будут копироваться временные файлы, необходимые для работы утилиты.

<kind>

Определяет тип перемещения ресурсов:

  • "package" — перемещение ресурсов на уровне пакета (7.8.1 –> 7.8.2) с добавлением имени менеджера;

  • "schemas" — перемещение ресурсов из схем в пакеты с добавлением имени менеджера (7.7.x –> 7.8.2);

  • "oldschemas" — перемещение ресурсов из схем в пакеты (7.7.x –> 7.8.0).

<needDeletedWrongResources>

True — удаляет все некорректные файлы ресурсов; записывает всю информацию в журнал удаления. Рекомендуемая опция.

False — выводит информацию об ошибках и предупреждениях, которые затем необходимо исправить вручную.

Пример обновления Creatio версии 7.8.1 на 7.8.2 будет иметь вид:

FlatPackageConverter.exe relocateResources

--repositoryUri=http://svn-server/svn/ts5conf/branches/TestPS_14

--version=7.8.0 --user=login --password=password

--commentFilePath=C:\Temp\111.txt --copyPath=C:\Temp\1 --kind=package --needDeletedWrongResources=True

На заметку. В данном примере параметр --version=7.8.0 не является ошибкой, так как указывает версию пакетов, которую необходимо изменить для обновления. Не забудьте указать свой логин и пароль для доступа к репозиторию.

Важно. После выполнения утилита выдаст список ошибок и предупреждений, детальная информация по каждому пакету будет содержаться в журнале. Под ошибками подразумевается наличие ресурсов в пакете без схем, под предупреждениями — наличие пустых файлов ресурсов, которые не содержат ни единого элемента. Чтобы удалить все некорректные файлы ресурсов, используйте параметр needDeletedWrongResources=True.

При обновлении на версию 7.8.4 

Если для разработки используется система контроля версий SVN, после установки обновления необходимо дополнительно выполнить утилиту FlatPackageConverter, которая удаляет устаревшие файлы ресурсов схем.

Скачайте и распакуйте архив FlatPackageConverter.rar. Откройте в любом текстовом редакторе файл example.bat, который отвечает за запуск утилиты FlatPackageConverter.exe c нужными параметрами в виде:

"Полный путь к FlatPackageConverter.exe" deleteSchemaLegacyResources

--repositoryUri=<repositoryUri> --version=<version> --user=<user>

--password=<password> --commentFilePath=<commentFilePath>

--copyPath=<copyPath>

Описание используемых параметров представлено в таблице.

Параметр

Описание

<repositoryUri>

Путь к вашему репозиторию SVN.

<version>

Версия пакетов, структуру которых необходимо обновить.

<user>

Логин пользователя SVN.

<password>

Пароль пользователя SVN.

<commentFilePath>

Путь к локальному файлу, который содержит комментарий для фиксации изменений в SVN.

<copyPath>

Путь к директории, в которую будут копироваться временные файлы, необходимые для работы утилиты.

Пример обновления Creatio версии 7.8.3 на 7.8.4 будет иметь вид:

FlatPackageConverter.exe deleteSchemaLegacyResources

--repositoryUri=http://svn-server/svn/ts5conf/branches/TestPS_14

--version=7.8.0 --user="login" --password="password"

--commentFilePath=C:\Temp\111.txt --copyPath=C:\Temp\1

На заметку. В данном примере параметр --version=7.8.0 не является ошибкой, так как указывает версию пакетов, которую необходимо изменить для обновления. Не забудьте указать свой логин и пароль для доступа к репозиторию.

Важно. После выполнения утилита выдаст перечень ошибок и предупреждений. Детальная информация по каждому пакету будет указана в журнале Out.txt, который находится той же директории, что и утилита. Ошибка “svn: E195022: is locked in another working copy” в журнале означает, что некоторые файлы в репозитории заблокированы. Их необходимо разблокировать и перезапустить утилиту.

При обновлении на версию 7.9.0 

Если для разработки используется система контроля версий SVN, после установки обновления необходимо дополнительно выполнить утилиту FlatPackageConverter, которая очищает метаданные от неправильно сформированных метаданных локализируемых строк.

Скачайте и распакуйте архив FlatPackageConverter.rar. Откройте в любом текстовом редакторе файл example.bat, который отвечает за запуск утилиты FlatPackageConverter.exe c нужными параметрами в виде:

"Полный путь к FlatPackageConverter.exe" fixResourcesInMetadata

--repositoryUri=<repositoryUri> --version=<version> --user=<user>

--password=<password> --commentFilePath=<commentFilePath>

--copyPath=<copyPath>

Описание используемых параметров представлено в таблице.

Параметр

Описание

<repositoryUri>

Путь к вашему репозиторию SVN.

<version>

Версия пакетов, структуру которых необходимо обновить.

<user>

Логин пользователя SVN.

<password>

Пароль пользователя SVN.

<commentFilePath>

Путь к локальному файлу, который содержит комментарий для фиксации изменений в SVN.

<copyPath>

Путь к директории, в которую будут копироваться временные файлы, необходимые для работы утилиты.

Пример обновления Creatio версии 7.8.4 на 7.9.0 будет иметь вид:

FlatPackageConverter.exe fixResourcesInMetadata

--repositoryUri=http://svn-server/svn/ts5conf/branches/TestPS_14

--version=7.8.0 --user="login" --password="password"

--commentFilePath=C:\Temp\111.txt --copyPath=C:\Temp\1

На заметку. В данном примере параметр --version=7.8.0 не является ошибкой, так как указывает версию пакетов, которую необходимо изменить для обновления. Не забудьте указать свой логин и пароль для доступа к репозиторию.

Важно. После выполнения утилита выдаст перечень ошибок и предупреждений. Детальная информация по каждому пакету будет указана в журнале Out.txt, который находится той же директории, что и утилита. Ошибка “svn: E195022: is locked in another working copy” в журнале означает, что некоторые файлы в репозитории заблокированы. Их необходимо разблокировать и перезапустить утилиту.

При использовании Redis Sentinel 

Если у вас развернута отказоустойчивая конфигурация Redis, то при обновлении системы на версию 7.15.2 и выше обратитесь, пожалуйста, в службу поддержки Creatio за дополнительной информацией относительно системы Redis Sentinel, которая обеспечивает высокую надежность Redis.

Поддержка Redis Sentinel будет прекращена в Creatio версии 7.18.3. Рекомендуем после обновления Creatio до версии 7.18.0 и выше перейти на механизм Redis Cluster.

При обновлении с целью расширения продукта 

На заметку. Чтобы выполнить расширение продукта, например, с Sales Creatio Enterprise edition на CRM-линейку, вам потребуются дистрибутивные файлы нового продукта той же версии, что ваше текущее приложение.

  1. Скачайте сервис выгрузки дистрибутивов для обновления: скачать сервис.
  2. Найдите в папке Updater файл Updater.dll.config.
  3. В блок appSettings добавьте строку:

    <add key="Feature-SkipProductValidation" value="true"/>
    
  4. Обновите приложение по стандартному сценарию. Обновление выполняется на ту же версию, которая была до расширения.

Если в ваши web.config файлы ранее вносились дополнительные настройки, например, настройки интеграций или внешних сервисов, то их необходимо перенести вручную после успешного обновления.

Остановка сайта 

Чтобы избежать потери данных, рекомендуем остановить продуктивный сайт, прежде чем выполнять обновление.

  1. Откройте Internet Information Services (IIS) Manager.
  2.  Остановите продуктивный сайт с помощью команды Stop в области Actions. (Рис. 2).
Рис. 2 — Остановка сайта в IIS
scr_user_upgrade_instruction_site_start

Запуск, компиляция и проверка работы сайта 

После обновления Creatio необходимо запустить сайт, компилировать приложение и убедиться в корректности работы сайта:

  1. Откройте Internet Information Services (IIS) Manager.
  2. Запустите сайт с помощью команды Start в области Actions.
  3. Откройте сайт в браузере с помощью команды Browse в области Actions (Рис. 3).
    Рис. 3 — Открытие тестового сайта в веб-браузере
    scr_user_upgrade_instruction_test_site_browse.png

    Важно. Если в процессе обновления возникли ошибки, то необходимо прекратить процедуру и проверить логи обновления, которые находятся в папке: Каталог CreatioUpdater\InstallPackages\%Version%\Log. При наличии ошибки вида “Error:Error ” или “Ошибка:Ошибка ” в базовых пакетах, обратитесь в службу поддержки, предоставив папку с логами. Если ошибки возникли в пользовательских пакетах, то необходимо обратиться к разработчикам, которые их создали.

  4. Для перегенерации клиентского статического контента выполните действие Компилировать все в разделе Конфигурация.
  5. Войдите в приложение и проверьте корректность выполнения часто используемых операций.

    На заметку. При выполнении обновления могут сбиться настройки состояния сессии (Session state) в IIS. Это приводит к невозможности входа в мобильное приложение. После выполнения обновления проверьте, чтобы в настройках cookies в IIS был установлен режим (mode) "Use Cookies".

  6. Если все работает корректно, можно удалить резервные копии приложения и базы данных.

При обновлении на версию 7.10.1 

После обновления Creatio на версию 7.10.1, адрес и IP сервиса обогащения данных будут изменены. Для получения новых адреса и IP сервиса обратитесь в службу поддержки.

Ранее действующий адрес cloud-service.bpmonline.com (ip: 188.99.10.125) теперь используется только для функциональности Marketing Creatio (например, для email-рассылок).

При обновлении на версию 7.11.1 (для продукта Financial Services Creatio, lending edition) 

Если вы используете Financial Services Creatio, lending edition, и в вашем приложении кастомизирована страница заявки (FinApplicationPage), то после базового сценария обновления необходимо выполнить следующие действия.

  1. Скачайте последнюю ревизию пакетов из svn.

  1. Запустите утилиту UpdateFinAppLendingPage.

    Формат запуска утилиты из командной строки: UpdateFinAppLendingPage.exe "Путь к скачанной рабочей копии svn".

    Пример запуска: UpdateFinAppLendingPage.exe C:\MyPackagesFromSvn\.

  1. Зафиксируйте изменения на сервере svn.

  1. Обновите конфигурацию из svn.

При обновлении на версию 7.16.0 

После обновления Creatio на версию 7.16.0 для корректной работы почтовых сервисов IMAP/SMTP и Exchange необходимо развернуть сервис синхронизации Exchange Listener.

При обновлении на версии 7.16.1 и 7.16.2 

Перед обновлением на версии 7.16.1 и 7.16.2 убедитесь в отсутствии кастомизаций с использованием устаревшей библиотеки и класса Terrasoft.Mail.SmtpClient в вашей конфигурации.

Для этого выполните скрипт.

Скрипт для MSSQL

SELECT SysSchema.Name AS SchemaName FROM SysSchema (NOLOCK) WHERE SysSchema.Id IN ( SELECT SysSchemaId FROM SysSchemaSource WHERE SysSchemaId IN ( SELECT ss.Id FROM SysSchema ss WITH (NOLOCK) INNER JOIN SysPackage sp WITH (NOLOCK) ON ss.SysPackageId = sp.Id WHERE sp.Name NOT IN ('Base', 'ProcessDesigner', 'NUI', 'SSP') AND sp.Maintainer != 'Terrasoft' AND ss.ManagerName NOT IN ('ClientUnitSchemaManager', 'DcmSchemaManager', 'PageSchemaManager') ) AND (Source LIKE '%MailBe%' OR (Source like '%SmtpClient%' AND Source like '%Terrasoft.Mail%')) )

Скрипт для Oracle Database

Выполните первый скрипт, чтобы создать процедуру:

 
BEGIN EXECUTE IMMEDIATE 'CREATE OR REPLACE FUNCTION blob_to_clob (blob_in IN BLOB) RETURN CLOB AS v_clob CLOB; v_varchar VARCHAR2(32767); v_start PLS_INTEGER := 1; v_buffer PLS_INTEGER := 32767; BEGIN IF blob_in IS NULL THEN RETURN NULL; END IF; DBMS_LOB.CREATETEMPORARY(v_clob, TRUE); FOR i IN 1..CEIL(DBMS_LOB.GETLENGTH(blob_in) / v_buffer) LOOP v_varchar := UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(blob_in, v_buffer, v_start)); DBMS_LOB.WRITEAPPEND(v_clob, LENGTH(v_varchar), v_varchar); v_start := v_start + v_buffer; END LOOP; RETURN v_clob; END blob_to_clob;'; END;

Далее выполните основной скрипт:

 
SELECT "SysSchema"."Name" AS "SchemaName" FROM "SysSchema" WHERE "SysSchema"."Id" IN ( SELECT "SysSchemaId" FROM "SysSchemaSource" WHERE "SysSchemaId" IN ( SELECT ss."Id" FROM "SysSchema" ss INNER JOIN "SysPackage" sp ON ss."SysPackageId" = sp."Id" WHERE sp."Name" NOT IN ('Base', 'ProcessDesigner', 'NUI', 'SSP') AND sp."Maintainer" != 'Terrasoft' AND ss."ManagerName" NOT IN ('ClientUnitSchemaManager', 'DcmSchemaManager', 'PageSchemaManager') ) AND (blob_to_clob("Source") LIKE '%MailBe%' OR ( blob_to_clob("Source") LIKE '%SmtpClient%' AND blob_to_clob("Source") LIKE '%Terrasoft.Mail%' ) ) );

Если скрипт не вернул результатов, то можете перейти к следующим шагам обновления.

Если скрипт вернул список схем, то выполните следующие шаги:

  1. Проверьте, в каких пакетах находятся схемы из выборки:

    • Если в выборку попали схемы из базовых пакетов, то проверьте, заблокирован ли базовый пакет и установлено ли значение Maintainer базового пакета как "Terrasoft".

    • Если в выборку попали только схемы из кастомных пакетов, то проанализируйте схемы из выборки.

  2. Если кастомная схема содержит директиву "using", но не включает ее типы, то удалите "using".

  3. Если кастомная схема содержит устаревшие директивы, то измените механизм согласно следующей инструкции: "Отправка email-сообщений".

При обновлении на версию 7.17.1 

Если вы используете продукт Marketing Creatio или CRM-линейку, в которую он входит, то убедитесь, что перед обновлением на версию 7.17.1 приложение было перелицензировано. Иначе после выполнения обновления могут возникнуть ошибки при подсчете количества лицензий активных контактов и отправке рассылок. Подробнее: Лицензирование.

Приятной работы в новой версии Creatio!