Command line tool (Cake console command), implemented as a standalone experimental plugin as of version 4.4.0, that supports two modes:
- Mode 1: Export configuration for the specified CO to a JSON file
- Configuration only, no data
- CO Groups are configuration, CO Group Members are data
- COUs are configuration
- Departments and Organizations are data, not configuration
- Mode 2: Import configuration from a JSON file to a specified CO
This plugin is experimental, and may change in incompatible ways across minor releases.
Installation
This is a non-core plugin, see Installing and Enabling Registry Plugins for more information.
Available Modes
Export Mode
Export Configuration to json file
Command Line Usage
$ cd /path/to/comanage/app && ./Console/cake job ConfigurationHandler.Export --coid 2 -l All -s -e 1235477978
co: --coid, Numeric CO ID to run the export configuration forlist: -l, list of Models to export the configuration forencryption: -e, salt string used to encrypt sensitive fields, e.g. passwords
An exported JSON file that is not modified should "just work" on import
A typo that results in invalid JSON would get rejected because the JSON fails to parse
A typo that isn't detectable (eg: the wrong server name) will get loaded as is - the tool is not responsible for figuring this out
On any error (eg: data validation) the whole process stops, eg If a CO Group fails to load, a later CO Enrollment Flow that references it will also fail
Import Mode
Import Configuration from JSON file
Command Line Usage
$ cd /path/to/comanage/app && ./Console/cake job ConfigurationHandler.Import --coid 72 --filename configuration_co2_1694967754.json -s -d -e 1235477978
dry run: -d, If present it will run a test importconfig file: --config-file, The name of the JSON Configuration file. The path lives under the/path/to/comanage/local/Configdirectoryco: --coid, Numeric CO ID to run the export configuration forlist: -l, list of Models to export the configuration forencryption: -e, salt string used to decrypt sensitive fields, e.g. passwords. It matches the one we provided on encryption
Supported Models
const SUPPORTED_MODELS = array(
"ApiUser",
"AttributeEnumeration",
"CoDashboard" => array("CoDashboardWidget"),
"CoEnrollmentFlow" => array(
"CoPipeline",
"CoEnrollmentFlowWedge",
"CoEnrollmentSource",
"CoEnrollmentAttribute" => array("CoEnrollmentAttributeDefault")
),
"CoExpirationPolicy",
"CoExtendedType",
"CoGroup" => array(
"CoGroupNesting",
"CoGroupOisMapping",
),
"CoIdentifierAssignment",
"CoIdentifierValidator",
"CoLocalization",
"CoMessageTemplate",
"CoNavigationLink",
"CoPipeline",
"CoProvisioningTarget",
"DataFilter" => array(
"OrgIdentitySourceFilter",
"CoProvisioningTargetFilter",
),
"CoSelfServicePermission",
"CoSetting",
"CoTermsAndConditions",
"CoTheme",
"Cou" => array(
"CoTermsAndConditions"
),
"Dictionary" => array(
"DictionaryEntry",
),
"OrgIdentitySource" => array(
"CoGroupOisMapping",
"OrgIdentitySourceFilter",
),
"Server" => array(
"SqlServer",
"Oauth2Server",
"HttpServer",
"KafkaServer",
"MatchServer" => array("MatchServerAttribute"),
),
"VettingStep"
);