Однозначно не рекомендую варианты с файлом и внешним сервисом. Файл нельзя достать из песочницы + возникают дополнительные сложности с мульти-тенант развертыванием (несколько баз организации на одном сервере) и переносом решения. Кроме того, будет серьезная просадка производительности за счет чтения из файла. Для плагинов это не столь критично, так как каждый инстанс создается один раз, а вот для рабочих процессов ситуация будет однозначно хуже.
MS использует сущности с атрибутами (отдельные объекты под группу настроек). Перенос рекомендуется делать через Package Deployer / Configaration Migration.
Не совсем понятно, почему Action не защищен от пользователей? C лукапами, пожалуй, тоже нет проблем. Вцелом, я рассматривую Action как альтернативу сущностям, но они создают определенные сложности при обновлении:
- Если вынести их в отдельное решение - вы создаете зависимость базового решения от дочернего.
- Появление новой настройки вынуждает вас обновить решение и затереть настройки текущего инстанса
- Не очень подходит для CI/CD сценариев
В конечном итоге, я, в большей степени склоняюсь к сущностям. Настройки - это больше данные, чем метаданные, так что им не место в решении. Плюс больше гибкость с точки зрения разделения доступа (разделение привилегий, FLS).