You are viewing limited content. For full access, please sign in.

Question

Question

SQL query to find all publicly published processes

asked on September 11, 2023

What's the easiest way to use a SQL query to find all published and marked-as-public (non-restricted) Forms processes? I see the tables I'll probably need but I'm assuming some sort of JOIN is needed.

 

Thanks in advance!

0 0

Replies

replied on September 11, 2023

Hi Jesse,

This SQL Stored Procedure should be enough to point you in the right direction.

USE [LFForms]
GO
/****** Object:  StoredProcedure [dbo].[LF_GETFORMSSTATUS]    Script Date: 12/09/2023 9:33:35 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[LF_GETFORMSSTATUS] 
AS
BEGIN
	SET NOCOUNT ON;
	SELECT
  bp.[name] AS [process_name],
  bp.[date_updated] AS [Last_Updated],
  bp.[unique_id] AS [form_ID],
  bp.[created_by_snapshot_id] AS created_by,
  bp.[updated_by_snapshot_id] AS updated_by,
  u.[username] AS [username],
  u.[displayname],
  CASE
    WHEN uir.[role_id] = 1 THEN 'Process Admin'
    WHEN uir.[role_id] = 3 THEN 'Submitter'
    WHEN uir.[role_id] = 7 THEN 'Business Manager'
    ELSE CAST(uir.[role_id] AS VARCHAR(20))
  END AS [role]
FROM [LFForms].[dbo].[cf_business_processes] AS bp
LEFT JOIN [LFForms].[dbo].[cf_users_in_role] AS uir ON uir.[bizprocess_applied] = bp.[bp_id]
LEFT JOIN [LFForms].[dbo].[cf_users] AS u ON u.[user_id] = uir.[user_id]
WHERE bp.[is_deleted] = 0       --Exclude deleted processes
  AND bp.[is_activated] = 1     --Only review published processes
  AND bp.[is_triggerpublic] = 1 --Public Forms
  AND uir.[role_id] IS NOT NULL --Exclude processes with no user assignments
  AND uir.[role_id] <> 0        --Exclude deleted assignments 
  AND uir.[role_id] <> 3        --Exclude submitters 
  AND uir.[role_id] <> 7        --Exclude business managers 
 
UNION 

SELECT
  bp.[name] AS [process_name],
  bp.[date_updated] AS [Last_Updated],
  bp.[unique_id] AS [form_ID],
  bp.[created_by_snapshot_id] AS created_by,
  bp.[updated_by_snapshot_id] AS updated_by,
  'GROUP' AS [username],
  g.[full_group_name] AS [displayname],
  CASE
    WHEN gir.[role_id] = 1 THEN 'Process Admin'
    WHEN gir.[role_id] = 3 THEN 'Submitter'
    WHEN gir.[role_id] = 7 THEN 'Business Manager'
    ELSE CAST(gir.[role_id] AS VARCHAR(20))
  END AS [role] 
FROM [LFForms].[dbo].[cf_business_processes] AS bp
LEFT JOIN [LFForms].[dbo].[cf_usergroups_in_role] AS gir ON gir.[bizprocess_applied] = bp.[bp_id]
LEFT JOIN [LFForms].[dbo].[cf_usergroups] AS g ON g.[group_id] = gir.[group_id]
WHERE bp.[is_deleted] = 0       --Exclude deleted processes
  AND bp.[is_activated] = 1     --Only review published processes
   AND bp.[is_triggerpublic] = 1 --Public Forms
  AND gir.[role_id] IS NOT NULL --Exclude processes with no group assignments
  AND gir.[role_id] <> 0        --Exclude deleted assignments 
  AND gir.[role_id] <> 3        --Exclude submitters
  AND gir.[role_id] <> 7        --Exclude business managers
  --AND g.[full_group_name] <> 'Forms Administration'   --Exclude name of group who is allowed to be Process Admin
END

Let me know if you need any further assistance with this query.

1 0
You are not allowed to follow up in this post.

Sign in to reply to this post.