function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
timy teenutimy teenu 

convert profile to permission set

When I run this 

List<ObjectPermissions> objPermList = new List<ObjectPermissions>();
List<FieldPermissions> fieldPermList = new List<FieldPermissions>();
//get the object permisisons for a given profile – source
List<ObjectPermissions> objPermissionList = [SELECT Id, SobjectType, PermissionsCreate, PermissionsRead, PermissionsEdit, PermissionsDelete,
PermissionsModifyAllRecords,PermissionsViewAllRecords FROM ObjectPermissions
where ParentId in (select id from PermissionSet where profile.name = ‘System Administrator’)];
//get the field permissions for a given profile – source
List<FieldPermissions> fldPermissionList = [SELECT Id, ParentId, SobjectType, Field, PermissionsEdit, PermissionsRead FROM FieldPermissions
where ParentId in(select id from PermissionSet where profile.name = ‘System Administrator’)];
//destination permisison set
List<PermissionSet> permissionSetList = [select id from PermissionSet where name = ‘System_Administrator’];
PermissionSet permissionSet = permissionSetList.get(0);
//set object permissions
for(ObjectPermissions oP : objPermissionList)
{
ObjectPermissions objPerm = new ObjectPermissions();
objPerm.ParentId = permissionSet.id;
objPerm.SobjectType = oP.SobjectType;
objPerm.PermissionsCreate = true;
objPerm.PermissionsDelete = true;
objPerm.PermissionsEdit = true;
objPerm.PermissionsModifyAllRecords = true;
objPerm.PermissionsRead = true;
objPerm.PermissionsViewAllRecords = true;
objPermList.add(objPerm);
}
Database.upsert(objPermList, false);
//set field permissions
for(FieldPermissions fp : fldPermissionList)
{
FieldPermissions fldPerm = new FieldPermissions();
fldPerm.ParentId = permissionSet.id;
fldPerm.SobjectType = fp.SobjectType;
fldPerm.Field = fp.Field;
fldPerm.PermissionsEdit = true;
fldPerm.PermissionsRead = true;
fieldPermList.add(fldPerm);
}
Database.upsert(fieldPermList, false);

I get the following error message
Line: 7, Column: 70
Invalid identifier '‘System'. Apex identifiers must start with an ASCII letter (a-z or A-Z) followed by any number of ASCII letters (a-z or A-Z), digits (0 - 9), '$', '_'.

What could be wrong in this 
Best Answer chosen by timy teenu
Abdul KhatriAbdul Khatri
You are trying to upsert too many records. Try using Batch for Large Data Sets

All Answers

timy teenutimy teenu
I found the above error message so this is my code now 
List<ObjectPermissions> objPermList = new List<ObjectPermissions>();
List<FieldPermissions> fieldPermList = new List<FieldPermissions>();
 
//get the object permisisons for a given profile – source
List<ObjectPermissions> objPermissionList = [SELECT Id, SobjectType, PermissionsCreate, PermissionsRead, PermissionsEdit, PermissionsDelete,
PermissionsModifyAllRecords,PermissionsViewAllRecords FROM ObjectPermissions
where ParentId in (select id from PermissionSet where profile.name = 'System Administrator')];
 
//get the field permissions for a given profile – source
List<FieldPermissions> fldPermissionList = [SELECT Id, ParentId, SobjectType, Field, PermissionsEdit, PermissionsRead FROM FieldPermissions
where ParentId in(select id from PermissionSet where profile.name = 'System Administrator')];
 
//destination permisison set
List<PermissionSet> permissionSetList = [select id from PermissionSet where name = 'System_Administrator'];
PermissionSet permissionSet = permissionSetList.get(0);
//set object permissions
for(ObjectPermissions oP : objPermissionList)
{
ObjectPermissions objPerm = new ObjectPermissions();
 
objPerm.ParentId = permissionSet.id;
objPerm.SobjectType = oP.SobjectType;
objPerm.PermissionsCreate = true;
objPerm.PermissionsDelete = true;
objPerm.PermissionsEdit = true;
objPerm.PermissionsModifyAllRecords = true;
objPerm.PermissionsRead = true;
objPerm.PermissionsViewAllRecords = true;
 
objPermList.add(objPerm);
}
 
Database.upsert(objPermList, false);
 
//set field permissions
for(FieldPermissions fp : fldPermissionList)
{
FieldPermissions fldPerm = new FieldPermissions();
 
fldPerm.ParentId = permissionSet.id;
fldPerm.SobjectType = fp.SobjectType;
fldPerm.Field = fp.Field;
fldPerm.PermissionsEdit = true;
fldPerm.PermissionsRead = true;
 
fieldPermList.add(fldPerm);
}
 
Database.upsert(fieldPermList, false);

But now I get this error message
System.LimitException: Too many DML rows: 10001
Can you please help on this
Abdul KhatriAbdul Khatri
You are trying to upsert too many records. Try using Batch for Large Data Sets
This was selected as the best answer