Недавно один из наших клиентов захотел объединить кастомизацию, распределенную между двумя различными слоями (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).
Оригинальная статья по ссылке.
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.