@okta/stormpath-migration
Version:
Migration tool to import Stormpath data into an Okta tenant
43 lines (39 loc) • 1.73 kB
JavaScript
/*!
* Copyright (c) 2017, Okta, Inc. and/or its affiliates. All rights reserved.
* The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
*
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*
* See the License for the specific language governing permissions and limitations under the License.
*/
const Promise = require('bluebird');
const createOktaGroup = require('../functions/create-okta-group');
const logger = require('../util/logger');
const stormpathExport = require('../stormpath/stormpath-export');
const config = require('../util/config');
const addUsersFromOrganization = require('./util/add-users-from-organization');
const cache = require('./util/cache');
async function migrateOrg(org) {
const lg = logger.group(`Stormpath organization id=${org.id} name=${org.name}`);
try {
const name = `org:${org.name}`;
const description = org.nameKey;
const group = await createOktaGroup(name, description);
cache.organizationMap[org.id] = group.id;
await addUsersFromOrganization(org.id);
} catch (err) {
logger.error(err);
} finally {
lg.end();
}
}
async function migrateOrganizations() {
logger.header('Starting organizations import');
const organizations = await stormpathExport.getOrganizations();
logger.info(`Importing ${organizations.length} organizations`);
return organizations.each(migrateOrg, { limit: 1 });
}
module.exports = migrateOrganizations;