Migrate
Updating to the Second-Generation Managed Package
Old Permission Set Name
New Permission Set Name
Automatically Migrating Permission Sets
2
Run the Script
private class GRAXLegacyPerm {
Map<String, Id> psIDs;
Map<String, Set<Id>> existingConsole;
public GRAXLegacyPerm() {
List<PermissionSet>lps=[
SELECT Id, Name
FROM PermissionSet
WHERE name in ('GRAX_Configuration_Admin', 'GRAX_Advanced_User', 'GRAX_User', 'GRAX_Console_Admin_User', 'GRAX_Console_Power_User', 'GRAX_Console_Standard_User')
];
psIDs = new Map<String, Id>();
for(PermissionSet ps : lps){
System.debug('PermissionSet '+ps.Name +' Id: ' + ps.Id);
psIDs.put(ps.Name, ps.Id);
}
existingConsole = new Map<String, Set<Id>>();
for (String name : new String[]{'GRAX_Console_Admin_User', 'GRAX_Console_Power_User', 'GRAX_Console_Standard_User'}) {
List<PermissionSetAssignment> ecpsa = [
SELECT AssigneeId
FROM PermissionSetAssignment
WHERE IsActive=true
AND PermissionSetId = :psIDs.get(name)
];
Set<Id> ecpsuID = new Set<Id>();
for (PermissionSetAssignment a : ecpsa) {
ecpsuID.add(a.AssigneeId);
}
existingConsole.put(name, ecpsuID);
System.debug('Existing '+name +' User Ids: ' + ecpsa);
}
}
public String migratePermSet(String oldPS, String newPS) {
List<PermissionSetAssignment> migratePS = new List<PermissionSetAssignment>();
List<PermissionSetAssignment> lpsuID = [
SELECT AssigneeId
FROM PermissionSetAssignment
WHERE IsActive=true
AND PermissionSetId = :psIDs.get(oldPS)
AND AssigneeId NOT IN :existingConsole.get(newPS)
];
for(PermissionSetAssignment a : lpsuID){
System.debug('Migrate '+oldPS+' User: ' + a.AssigneeId + ' to '+newPS);
migratePS.add( new PermissionSetAssignment (
PermissionSetId = psIDs.get(newPS),
AssigneeId = a.AssigneeId
));
if( migratePS.size() > 200) {
upsert migratePS;
migratePS.clear();
}
}
if( migratePS.size() > 0) {
try {
insert migratePS;
} catch(DmlException e) {
System.debug('error: ' + e);
}
migratePS.clear();
}
return 'done';
}
}
GRAXLegacyPerm glp = new GRAXLegacyPerm();
glp.migratePermSet('GRAX_Configuration_Admin', 'GRAX_Console_Admin_User');
glp.migratePermSet('GRAX_Advanced_User', 'GRAX_Console_Power_User');
glp.migratePermSet('GRAX_User', 'GRAX_Console_Standard_User');Last updated
Was this helpful?

