USP_SYSTEMROLE_COPY
Copies an existing system role to a new system role.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | |
@SYSTEMROLEID | uniqueidentifier | IN | |
@ROLENAME | nvarchar(255) | IN | |
@DESCRIPTION | nvarchar(max) | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@COPYUSERS | bit | IN |
Definition
Copy
CREATE procedure dbo.USP_SYSTEMROLE_COPY
(
@ID uniqueidentifier output,
@SYSTEMROLEID uniqueidentifier,
@ROLENAME nvarchar(255),
@DESCRIPTION nvarchar(max) = '',
@CHANGEAGENTID uniqueidentifier = null,
@COPYUSERS bit = 0
)
as
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
if @ID is null
set @ID = newid();
begin try
-- Create system role
insert into dbo.SYSTEMROLE
(ID, NAME, DESCRIPTION, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values
(@ID, @ROLENAME, @DESCRIPTION, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
-- Copy tasks
insert into dbo.SYSTEMROLETASK
(ID,SYSTEMROLEID,TASKID,DISPLAYONHOMEPAGE,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
(select
newid(),
@ID,
TASKID,
DISPLAYONHOMEPAGE,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
dbo.SYSTEMROLETASK
where SYSTEMROLEID = @SYSTEMROLEID and TASKID not in (select TASKID from dbo.SYSTEMROLETASK where SYSTEMROLEID = @ID));
-- Copy users and site assignments
if @COPYUSERS = 1 begin
declare @IDMAP table (OLDID uniqueidentifier, NEWID uniqueidentifier);
insert into @IDMAP(OLDID, NEWID)
select ID, newid() from dbo.SYSTEMROLEAPPUSER where SYSTEMROLEID = @SYSTEMROLEID and SYSTEMROLEAPPUSER.APPUSERID not in (select APPUSERID from dbo.SYSTEMROLEAPPUSER where SYSTEMROLEID = @ID);
insert into dbo.SYSTEMROLEAPPUSER(ID, SYSTEMROLEID, APPUSERID, SECURITYMODECODE, BRANCHSITEID, CONSTITUENTSECURITYMODECODE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
select
IDMAP.NEWID,
@ID,
APPUSERID,
SECURITYMODECODE,
BRANCHSITEID,
CONSTITUENTSECURITYMODECODE,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
dbo.SYSTEMROLEAPPUSER
inner join @IDMAP as IDMAP on IDMAP.OLDID = SYSTEMROLEAPPUSER.ID
insert into dbo.SYSTEMROLEAPPUSERSITE (ID, SYSTEMROLEAPPUSERID, SITEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
select
newid(),
IDMAP.NEWID,
SYSTEMROLEAPPUSERSITE.SITEID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
@IDMAP as IDMAP
inner join dbo.SYSTEMROLEAPPUSERSITE on SYSTEMROLEAPPUSERSITE.SYSTEMROLEAPPUSERID = IDMAP.OLDID;
insert into dbo.SYSTEMROLEAPPUSERCONSTITUENTSECURITY (ID, SYSTEMROLEAPPUSERID, CONSTITUENTSECURITYATTRIBUTEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
select
newid(),
IDMAP.NEWID,
SYSTEMROLEAPPUSERCONSTITUENTSECURITY.CONSTITUENTSECURITYATTRIBUTEID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
@IDMAP as IDMAP
inner join dbo.SYSTEMROLEAPPUSERCONSTITUENTSECURITY on SYSTEMROLEAPPUSERCONSTITUENTSECURITY.SYSTEMROLEAPPUSERID = IDMAP.OLDID;
end
-- Copy groups
declare @ADIDMAP table (OLDID uniqueidentifier, NEWID uniqueidentifier);
insert into @ADIDMAP(OLDID, NEWID)
select ID, newid() from dbo.SYSTEMROLEADGROUP where SYSTEMROLEID = @SYSTEMROLEID and GROUPID not in (select GROUPID from dbo.SYSTEMROLEADGROUP where SYSTEMROLEID = @ID);
insert into dbo.SYSTEMROLEADGROUP
(ID, SYSTEMROLEID, GROUPID, LDAPQUERY, DISPLAYNAME, SEARCHROOT, INCLUDESUBCONTAINERS, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, SECURITYMODECODE, BRANCHSITEID)
select
ADIDMAP.NEWID,
@ID,
GROUPID,
LDAPQUERY,
DISPLAYNAME,
SEARCHROOT,
INCLUDESUBCONTAINERS,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE,
SECURITYMODECODE,
BRANCHSITEID
from
dbo.SYSTEMROLEADGROUP
inner join @ADIDMAP as ADIDMAP on ADIDMAP.OLDID = SYSTEMROLEADGROUP.ID
where
SYSTEMROLEID = @SYSTEMROLEID and GROUPID not in (select GROUPID from dbo.SYSTEMROLEADGROUP where SYSTEMROLEID = @ID);
insert into dbo.SYSTEMROLEADGROUPSITE (ID, SYSTEMROLEADGROUPID, SITEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
select
newid(),
IDMAP.NEWID,
SYSTEMROLEADGROUPSITE.SITEID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
@IDMAP as IDMAP
inner join dbo.SYSTEMROLEADGROUPSITE on SYSTEMROLEADGROUPSITE.SYSTEMROLEADGROUPID = IDMAP.OLDID;
-- Copy features
-- Record operations
insert into dbo.SYSTEMROLEPERM_RECORDOPERATION
(ID,SYSTEMROLEID,RECORDOPERATIONCATALOGID,GRANTORDENY,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
(select
newid(),
@ID,
RECORDOPERATIONCATALOGID,
GRANTORDENY,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
dbo.SYSTEMROLEPERM_RECORDOPERATION
where SYSTEMROLEID = @SYSTEMROLEID and RECORDOPERATIONCATALOGID not in (select RECORDOPERATIONCATALOGID from dbo.SYSTEMROLEPERM_RECORDOPERATION where SYSTEMROLEID = @ID));
-- Forms
insert into dbo.SYSTEMROLEPERM_DATAFORMINSTANCE
(ID,SYSTEMROLEID,DATAFORMINSTANCECATALOGID,GRANTORDENY,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
(select
newid(),
@ID,
DATAFORMINSTANCECATALOGID,
GRANTORDENY,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
dbo.SYSTEMROLEPERM_DATAFORMINSTANCE
where SYSTEMROLEID = @SYSTEMROLEID and DATAFORMINSTANCECATALOGID not in (select DATAFORMINSTANCECATALOGID from dbo.SYSTEMROLEPERM_DATAFORMINSTANCE where SYSTEMROLEID = @ID));
-- Datalists
insert into dbo.SYSTEMROLEPERM_DATALIST
(ID,SYSTEMROLEID,DATALISTCATALOGID,GRANTORDENY,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
(select
newid(),
@ID,
DATALISTCATALOGID,
GRANTORDENY,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
dbo.SYSTEMROLEPERM_DATALIST
where SYSTEMROLEID = @SYSTEMROLEID and DATALISTCATALOGID not in (select DATALISTCATALOGID from dbo.SYSTEMROLEPERM_DATALIST where SYSTEMROLEID = @ID));
-- Business processes
insert into dbo.SYSTEMROLEPERM_BUSINESSPROCESS
(ID,SYSTEMROLEID,BUSINESSPROCESSCATALOGID,GRANTORDENY,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
(select
newid(),
@ID,
BUSINESSPROCESSCATALOGID,
GRANTORDENY,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
dbo.SYSTEMROLEPERM_BUSINESSPROCESS
where SYSTEMROLEID = @SYSTEMROLEID and BUSINESSPROCESSCATALOGID not in (select BUSINESSPROCESSCATALOGID from dbo.SYSTEMROLEPERM_BUSINESSPROCESS where SYSTEMROLEID = @ID));
-- Dashboards
insert into dbo.SYSTEMROLEPERM_DASHBOARD
(ID,SYSTEMROLEID,DASHBOARDCATALOGID,GRANTORDENY,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
(select
newid(),
@ID,
DASHBOARDCATALOGID,
GRANTORDENY,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
dbo.SYSTEMROLEPERM_DASHBOARD
where SYSTEMROLEID = @SYSTEMROLEID and DASHBOARDCATALOGID not in (select DASHBOARDCATALOGID from dbo.SYSTEMROLEPERM_DASHBOARD where SYSTEMROLEID = @ID));
-- Smart queries
insert into dbo.SYSTEMROLEPERM_SMARTQUERY
(ID,SYSTEMROLEID,SMARTQUERYCATALOGID,GRANTORDENY,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
(select
newid(),
@ID,
SMARTQUERYCATALOGID,
GRANTORDENY,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
dbo.SYSTEMROLEPERM_SMARTQUERY
where SYSTEMROLEID = @SYSTEMROLEID and SMARTQUERYCATALOGID not in (select SMARTQUERYCATALOGID from dbo.SYSTEMROLEPERM_SMARTQUERY where SYSTEMROLEID = @ID));
-- KPIs
insert into dbo.SYSTEMROLEPERM_KPI
(ID,SYSTEMROLEID,KPICATALOGID,GRANTORDENY,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
(select
newid(),
@ID,
KPICATALOGID,
GRANTORDENY,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
dbo.SYSTEMROLEPERM_KPI
where SYSTEMROLEID = @SYSTEMROLEID and KPICATALOGID not in (select KPICATALOGID from dbo.SYSTEMROLEPERM_KPI where SYSTEMROLEID = @ID));
-- Query views
insert into dbo.SYSTEMROLEPERM_QUERYVIEW
(ID,SYSTEMROLEID,QUERYVIEWCATALOGID,GRANTORDENY,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
(select
newid(),
@ID,
QUERYVIEWCATALOGID,
GRANTORDENY,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
dbo.SYSTEMROLEPERM_QUERYVIEW
where SYSTEMROLEID = @SYSTEMROLEID and QUERYVIEWCATALOGID not in (select QUERYVIEWCATALOGID from dbo.SYSTEMROLEPERM_QUERYVIEW where SYSTEMROLEID = @ID));
--JamesWill 04/21/2008 CR297382-040708 Search lists
insert into dbo.SYSTEMROLEPERM_SEARCHLIST
(ID, SYSTEMROLEID, SEARCHLISTCATALOGID, GRANTORDENY, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
(select
newid(),
@ID,
SEARCHLISTCATALOGID,
GRANTORDENY,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
dbo.SYSTEMROLEPERM_SEARCHLIST
where SYSTEMROLEID = @SYSTEMROLEID and SEARCHLISTCATALOGID not in (select SEARCHLISTCATALOGID from dbo.SYSTEMROLEPERM_SEARCHLIST where SYSTEMROLEID = @ID));
--JamesWill 04/21/2008 CR297384-040708 Report params
insert into dbo.SYSTEMROLEPERM_REPORT
(ID, SYSTEMROLEID, REPORTCATALOGID, GRANTORDENY, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
(select
newid(),
@ID,
REPORTCATALOGID,
GRANTORDENY,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
dbo.SYSTEMROLEPERM_REPORT
where SYSTEMROLEID = @SYSTEMROLEID and REPORTCATALOGID not in (select REPORTCATALOGID from dbo.SYSTEMROLEPERM_REPORT where SYSTEMROLEID = @ID));
-- Code tables
insert into dbo.SYSTEMROLEPERM_CODETABLE
(ID,SYSTEMROLEID,CODETABLECATALOGID,ADDPERMISSIONCODE,UPDATEPERMISSIONCODE,DELETEPERMISSIONCODE,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
(select
newid(),
@ID,
CODETABLECATALOGID,
ADDPERMISSIONCODE,
UPDATEPERMISSIONCODE,
DELETEPERMISSIONCODE,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
dbo.SYSTEMROLEPERM_CODETABLE
where SYSTEMROLEID = @SYSTEMROLEID and CODETABLECATALOGID not in (select CODETABLECATALOGID from dbo.SYSTEMROLEPERM_CODETABLE where SYSTEMROLEID = @ID));
-- Batch types
insert into dbo.SYSTEMROLEPERM_BATCHTYPE
(ID,SYSTEMROLEID,BATCHTYPECATALOGID,GRANTORDENY,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
(select
newid(),
@ID,
BATCHTYPECATALOGID,
GRANTORDENY,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
dbo.SYSTEMROLEPERM_BATCHTYPE
where SYSTEMROLEID = @SYSTEMROLEID and BATCHTYPECATALOGID not in (select BATCHTYPECATALOGID from dbo.SYSTEMROLEPERM_BATCHTYPE where SYSTEMROLEID = @ID));
-- KPI instances
insert into dbo.SYSTEMROLEKPIINSTANCE
(ID,SYSTEMROLEID,KPIINSTANCEID,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
(select
newid(),
@ID,
KPIINSTANCEID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
dbo.SYSTEMROLEKPIINSTANCE
where SYSTEMROLEID = @SYSTEMROLEID and KPIINSTANCEID not in (select KPIINSTANCEID from dbo.SYSTEMROLEKPIINSTANCE where SYSTEMROLEID = @ID));
-- Code table entries
insert into dbo.SYSTEMROLEPERM_CODETABLEENTRY
(ID,SYSTEMROLEID,CODETABLECATALOGID,CODETABLEENTRYID,ISDENIED,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
(select
newid(),
@ID,
CODETABLECATALOGID,
CODETABLEENTRYID,
ISDENIED,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
dbo.SYSTEMROLEPERM_CODETABLEENTRY
where SYSTEMROLEID = @SYSTEMROLEID and CODETABLEENTRYID not in (select CODETABLEENTRYID from dbo.SYSTEMROLEPERM_CODETABLEENTRY where SYSTEMROLEID = @ID));
-- Feature Permissions
insert into dbo.SYSTEMROLEPERM_FEATUREGROUP
(ID,SYSTEMROLEID,FEATUREGROUPCATALOGID,GRANTORDENY,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
(select
newid(),
@ID,
FEATUREGROUPCATALOGID,
GRANTORDENY,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
dbo.SYSTEMROLEPERM_FEATUREGROUP
where SYSTEMROLEID = @SYSTEMROLEID and FEATUREGROUPCATALOGID not in (select FEATUREGROUPCATALOGID from dbo.SYSTEMROLEPERM_FEATUREGROUP where SYSTEMROLEID = @ID));
-- System Privileges (JamesWill WI358431)
insert into dbo.SYSTEMROLEPERM_SYSTEMPRIVILEGE
(ID,SYSTEMROLEID,SYSTEMPRIVILEGECATALOGID,GRANTORDENY,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
(select
newid(),
@ID,
SYSTEMPRIVILEGECATALOGID,
GRANTORDENY,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
dbo.SYSTEMROLEPERM_SYSTEMPRIVILEGE
where SYSTEMROLEID = @SYSTEMROLEID and SYSTEMPRIVILEGECATALOGID not in (select SYSTEMPRIVILEGECATALOGID from dbo.SYSTEMROLEPERM_SYSTEMPRIVILEGE where SYSTEMROLEID = @ID));
-- Map Entities (JamesWill WI358431)
insert into dbo.SYSTEMROLEPERM_MAPENTITY
(ID,SYSTEMROLEID,MAPENTITYCATALOGID,GRANTORDENY,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
(select
newid(),
@ID,
MAPENTITYCATALOGID,
GRANTORDENY,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from
dbo.SYSTEMROLEPERM_MAPENTITY
where SYSTEMROLEID = @SYSTEMROLEID and MAPENTITYCATALOGID not in (select MAPENTITYCATALOGID from dbo.SYSTEMROLEPERM_MAPENTITY where SYSTEMROLEID = @ID));
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;