Перенос кастомизации между слоями в Dynamics AX 2012

Category: Статьи Post Date: 01.04.2020

Перенос кастомизации между слоями в Dynamics AX 2012

Недавно один из наших клиентов захотел объединить кастомизацию, распределенную между двумя различными слоями (CUS и USR) в один слой (CUS). В идеале, все настройки пользователей должны располагаться в слое CUS, чтобы облегчить процесс использования и процедуру обновления. Поэтому, решено было перенести настройки слоя USR в слой CUS, фактически объединяя два слоя в один.

Часть настроек в слое USR включает в себя кастомные таблицы и поля таблиц. Очень важным при переносе между слоями является сохранить ID объектов для этих артефактов. Если бы ID объектов изменились во время процесса, это привело бы к потере данных при синхронизации словаря данных. Так как в Dynamics AX 2012 объекты не могут экспортироваться вместе с ID объекта, использовать файлы XPO для перемещения объектов между слоями не получится. Поэтому нам пришлось использовать при выполнении этого задания другой подход. Вот как мы это сделали поэтапно:

1. Начали с приложения-источника и удалили все лишние артефакты в слое  USR.

2. Создали отдельную идентичную копию источника «в песочнице» взяв modelstore из приложения-источника.

3. Удалили слой USR из «песочницы».

4. Экспортировали все объекты слоя USR из приложения-источника в файлы XPO.

5. В «песочнице» вошли в слой CUS и импортировали файлы XPO из предыдущего шага.

– Провели полную компиляцию, чтобы убедиться, что в слое CUS нет ошибок.

6. Экспортировали модели слоя CUS из песочницы в файлы AXMODEL, а затем импортировали их в приложение-источник, при этом, слой USR остался на месте. Это гарантировало, что:

– все объекты будут перемещены в слой CUS.

– они сохранят свои изначальные ID объектов, так как теперь они располагаются в слое USR (AX 2012 будет повторно использовать ID объекта, если объект уже существует в системе, но располагается в другом слое).

7. После того, как модели были успешно экспортированы в слой CUS в приложении-источнике, удалили слой USR.

8. Провели полную компиляцию и генерацию CIL

Надписи на картинке:

Sandbox Enviroment – Песочница

Source Enviroment – Приложение-источник

CUS Layer – Слой CUS

USR Layer – Слой USR

a. Delete USR Layer from sandbox – Удалить слой USR из песочницы

b. Import USR layer xpo From source – Импортировать файлы XPO слоя USR из источника

c. Import CUS layer models from sandbox – Импортировать модели слоя CUS из псочницы

d. Delete the USR Layer from source – Удалить слой USR из источника

В результате мы получаем приложение, где все объекты, которые до этого находились в слое USR, были перенесены в слой CUS и ID объектов при этом не изменилось. Более подробную информацию вы можете найти в этой статье с сайта Technet: Maintaining Installation-Specific Element IDs and Element Handles.

Это достаточно упрощенный сценарий. Тем не менее, его легко можно наложить и повторить для кастомизации, которая затрагивает различные слои для исправлений (соответственно, VAP, CUP, USP).

 

Оригинальная статья по ссылке.

Подписывайтесь на канал @d365neti в Telegram

Подписаться

Добавить комментарий