121212

   

      

-- ====================================================================================      

-- INITIAL RELEASE: 15/11/2021      AUTHOR: SUCHITRA S C     

    

-- EXEC [CW_SR_TASK_SP] 93     

-- =====================================================================================      

      

CREATE PROCEDURE [dbo].[CW_SR_TASK_SP]      

(      

@DATASOURCEID INT,@runDate date = NULL      

)      

AS      

      

BEGIN      

 DECLARE @ExtractIdOut INT        

 DECLARE @EndDt DATETIME2      

 DECLARE @RecordCount INT = 0      

 DECLARE @ProcedureName SYSNAME = OBJECT_NAME(@@PROCID)      

 DECLARE @intErrorCode INT      

 Declare @returnCode int = 0      

 DECLARE @ExtractProcessControlId UniqueIdentifier      

 SET NOCOUNT ON;      

      

      

 BEGIN TRY      

      

 set @runDate = Coalesce(@runDate,GetDate())      

 set @ExtractProcessControlId = NewID()      

      

 -- Log the beginning of the GSNOW load process, and Mark it as successful      

 EXECUTE [SYN_sp_GSNOW_CW_InsertExtractLog] 'CW SR_TASK Load Started', @runDate, @ExtractIdOut OUTPUT,@ExtractProcessControlId      

 EXECUTE [SYN_SP_GSNOW_CW_UpdateExtractLogById] @ExtractIdOut, @runDate, 'E', 0       

       

 --Log the beginning of the SP load      

 EXECUTE [SYN_sp_GSNOW_CW_InsertExtractLog] @ProcedureName, @runDate, @ExtractIdOut OUTPUT,@ExtractProcessControlId      

      

 BEGIN TRAN      

  

DECLARE @LOAD_START_TIME DATETIME, @LAST_MODIFIED_DATE DATETIME, @MAX_LAST_MODIFIED_DATE DATETIME;      

      

SET @LOAD_START_TIME = GETDATE();      

--SET @LAST_MODIFIED_DATE = (SELECT Convert(varchar,DateAdd(day,-1,DATEADD(s, Last_modified_Date, '1970-01-01 00:00:00')),120) AS LAST_MODIFIED_DATE       

--FROM SYN_SourceTables_CW  WHERE DATASOURCEID = @DATASOURCEID AND SOURCETABLENAME = 'STG_CW_SR_TASK')      

  

SET @LAST_MODIFIED_DATE = (SELECT CONVERT(VARCHAR,CONVERT(DATETIME,CAST('1970-01-01 00:00:00'AS DATETIME)+ (LAST_MODIFIED_DATE/(24 * 60 *60)),100), 120) AS LAST_MODIFIED_DATE     

FROM [SYN_SourceTables_CW]  WHERE DATASOURCEID = @DATASOURCEID AND SOURCETABLENAME = 'STG_CW_SR_TASK')    

  

  

      

--=================TRUNCATING STAGE TABLE==================      

      

TRUNCATE TABLE [STG_CW_SR_TASK]      

      

      

--=================LOADING DATA INTO STAGE=================      

      

      

INSERT INTO [STG_CW_SR_TASK]      

(      

active    

,activity_due    

,additional_assignee_list    

,approval    

,approval_history    

,ASSIGN_TIME      

,ASSIGNED_TO_ID      

,ASSIGNMENT_GROUP_ID      

,business_duration    

,business_service    

,TOTAL_DURATION      

,calendar_stc    

,close_notes    

,closed_at    

,closed_by    

,CMDB_CI          

,comments    

,comments_and_work_notes    

,COMPANY_ID      

,contact_type    

,contract    

,correlation_display    

,correlation_id    

,delivery_plan    

,TASKNAME      

,DESCRIPTION      

,SCHEDULED_END_DATE      

,dv_approval    

,dv_assigned_to    

,dv_assignment_group    

,dv_business_duration    

,dv_business_service    

,dv_calendar_duration    

,dv_closed_by    

,dv_cmdb_ci    

,dv_company    

,dv_contact_type    

,dv_contract    

,dv_delivery_plan    

,dv_delivery_task    

,dv_escalation    

,dv_impact    

,dv_location    

,SUBMITTER      

,dv_parent    

,dv_priority    

,dv_request    

,dv_request_item    

,dv_route_reason    

,dv_sc_catalog    

,dv_service_offering    

,dv_state    

,dv_sys_class_name    

,dv_time_worked    

,dv_u_category    

,dv_u_exclusion_category    

,dv_u_impacted_region    

,dv_u_on_hold_reason    

,dv_u_subcategory    

,dv_u_vendor    

,dv_universal_request    

,dv_upon_approval    

,dv_upon_reject    

,dv_urgency    

,dv_wf_activity    

,escalation    

,SCHEDULED_START_DATE      

,follow_up    

,group_list    

,impact    

,knowledge    

,LOCATION_ID      

,made_sla    

,number    

,opened_at    

,opened_by    

,[order]    

,parent    

,PRIORITY      

,REASSIGNMENT_COUNT      

,request    

,ROOTREQUESTID      

,route_reason    

,sc_catalog    

,service_offering    

,SHORT_DESCRIPTION      

,sla_due    

,STATUS      

,TRANSACTION_TYPE      

,sys_created_by    

,sys_created_on    

,SYS_DOMAIN      

,sys_domain_path    

,TASK_ID      

,sys_mod_count    

,sys_tags    

,LAST_MODIFIED_BY      

,LAST_MODIFIED_DATE      

,task_effective_number    

,time_worked    

,CATEGORY     

,EXCLUDE_FROM_REPORTING        

,EXCLUSION_REASON         

,u_exclusion_category    

,u_exclusion_reason    

,u_impacted_region    

,u_justification_for_closure_update    

,u_on_hold_notes    

,u_on_hold_reason    

,u_resolution_notes    

,u_resolved_on_first_contact    

,u_resolved_on_first_contact_eligible    

,u_subcategory    

,u_vendor    

,u_vendor_point_of_contact    

,u_vendor_ticket    

,universal_request    

,upon_approval    

,upon_reject    

,URGENCY      

,user_input    

,watch_list    

,wf_activity    

,ACTUAL_END_DATE      

,work_notes    

,work_notes_list    

,ACTUAL_START_DATE      

,SUBMIT_DATE      

    

)      

      

SELECT       

 active    

,activity_due    

,additional_assignee_list    

,approval    

,approval_history    

,approval_set    

,assigned_to    

,assignment_group    

,business_duration    

,business_service    

,CAST(CALENDAR_DURATION AS Datetime)      

,calendar_stc    

,close_notes    

,closed_at    

,closed_by    

,cmdb_ci    

,comments    

,comments_and_work_notes    

,company    

,contact_type    

,contract    

,correlation_display    

,correlation_id    

,delivery_plan    

,delivery_task    

,description    

,due_date    

,dv_approval    

,dv_assigned_to    

,dv_assignment_group    

,dv_business_duration    

,dv_business_service    

,dv_calendar_duration    

,dv_closed_by    

,dv_cmdb_ci    

,dv_company    

,dv_contact_type    

,dv_contract    

,dv_delivery_plan    

,dv_delivery_task    

,dv_escalation    

,dv_impact    

,dv_location    

,dv_opened_by    

,dv_parent    

,dv_priority    

,dv_request    

,dv_request_item    

,dv_route_reason    

,dv_sc_catalog    

,dv_service_offering    

,dv_state    

,dv_sys_class_name    

,dv_time_worked    

,dv_u_category    

,dv_u_exclusion_category    

,dv_u_impacted_region    

,dv_u_on_hold_reason    

,dv_u_subcategory    

,dv_u_vendor    

,dv_universal_request    

,dv_upon_approval    

,dv_upon_reject    

,dv_urgency    

,dv_wf_activity    

,escalation    

,expected_start    

,follow_up    

,group_list    

,impact    

,knowledge    

,location    

,made_sla    

,number    

,opened_at    

,opened_by    

,[order]    

,parent    

,priority    

,reassignment_count    

,request    

,request_item    

,route_reason    

,sc_catalog    

,service_offering    

,short_description    

,sla_due    

,state    

,sys_class_name    

,sys_created_by    

,sys_created_on    

,sys_domain    

,sys_domain_path    

,sys_id    

,sys_mod_count    

,sys_tags    

,sys_updated_by    

,sys_updated_on    

,task_effective_number    

,time_worked    

,u_category    

,u_exclude_from_reporting    

,u_exclude_reason    

,u_exclusion_category    

,u_exclusion_reason    

,u_impacted_region    

,u_justification_for_closure_update    

,u_on_hold_notes    

,u_on_hold_reason    

,u_resolution_notes    

,u_resolved_on_first_contact    

,u_resolved_on_first_contact_eligible    

,u_subcategory    

,u_vendor    

,u_vendor_point_of_contact    

,u_vendor_ticket    

,universal_request    

,upon_approval    

,upon_reject    

,urgency    

,user_input    

,watch_list    

,wf_activity    

,work_end    

,work_notes    

,work_notes_list    

,work_start     

,COALESCE(OPENED_AT,SYS_UPDATED_ON)      

FROM SYN_SC_TASK    

WHERE (SYS_UPDATED_ON >= @LAST_MODIFIED_DATE      

AND OPENED_AT IS NOT NULL)      

OR      

(NUMBER IN (SELECT NUMBER FROM [STG_CW_MISSING_RECORDS]       

   WHERE TableName = 'SC_TASK' and Is_Loaded is null)      

 )      

      

      

--===============================FETCHING COMMENTS_AND_WORKNOTES======================================      

      

TRUNCATE TABLE [STG_CW_SYS_JOURNAL_FIELD]      

      

INSERT INTO [STG_CW_SYS_JOURNAL_FIELD]      

(      

sys_created_by    

,sys_created_on    

,element    

,element_id    

,name    

,sys_id    

,sys_tags    

,value     

)      

SELECT       

SJ.sys_created_by    

,SJ.sys_created_on    

,SJ.element    

,SJ.element_id    

,SJ.name    

,SJ.sys_id    

,SJ.sys_tags    

,SJ.value    

FROM [SYN_SN_ST_SYS_JOURNAL_FIELD] SJ      

INNER JOIN [STG_CW_SR_TASK] TASK      

ON SJ.element_id = TASK.TASK_ID      

      

      

      

DECLARE @NewLineChar AS CHAR(2) = CHAR(13) + CHAR(10)      

      

;WITH COMMENTS_CTE      

AS      

(      

SELECT ELEMENT_ID,        

COMMENTS_AND_WORKNOTES =       

  REPLACE(      

   REPLACE(      

      (STUFF(      

        (SELECT @NewLineChar + CONVERT(nvarchar(19),sys_created_on,121 ) + ' || ' +cast(sys_created_by as varchar(50))  + ' || ' + '(' + cast(element as varchar(50)) +  ')' + ' || ' +cast([value] as varchar(max))       

         FROM  [STG_CW_SYS_JOURNAL_FIELD]  t1      

         WHERE t1.element_id = t2.element_id      

         ORDER BY sys_created_on DESC      

         FOR XML PATH (''))      

        , 1, 1, ''      

        )      

      ),       

  '
' ,''),       

 '#x0D;' ,'')       

FROM [STG_CW_SYS_JOURNAL_FIELD] t2      

GROUP BY ELEMENT_ID      

)      

      

UPDATE K      

SET K.COMMENTS_AND_WORKNOTES = COMMENTS_CTE.COMMENTS_AND_WORKNOTES      

FROM [STG_CW_SR_TASK] K      

LEFT OUTER JOIN COMMENTS_CTE      

ON COMMENTS_CTE.ELEMENT_ID = K.TASK_ID      

      

--===============================FETCHING COMMENTS_AND_WORKNOTES======================================      

      

      

--==========UPDATING STAGE WITH SK COLUMNS=========================      

--DECLARE @DATASOURCEID INT = 93     

      

UPDATE SR      

SET SITE_SK = SITE.SITE_SK      

FROM [STG_CW_SR_TASK] SR      

LEFT OUTER JOIN SYN_ODS_CW_SITE SITE        

ON (SITE.DATASOURCEID = @DATASOURCEID  AND SR.LOCATION_ID = SITE.SITE_ID)      

      

    

      

UPDATE SR      

SET COMPANY_SK = COMPANY.COMPANY_SK      

FROM  [STG_CW_SR_TASK] SR      

LEFT OUTER JOIN SYN_ODS_CW_COMPANY COMPANY        

ON (COMPANY.DATASOURCEID = @DATASOURCEID  AND SR.COMPANY_ID = COMPANY.COMPANY_ID)      

      

      

UPDATE SR      

SET COMPANY_SK = COMPANY.COMPANY_SK      

FROM  [STG_CW_SR_TASK] SR      

LEFT OUTER JOIN SYN_ODS_CW_COMPANY COMPANY        

ON (COMPANY.DATASOURCEID = @DATASOURCEID  AND SR.SYS_DOMAIN = COMPANY.SYS_DOMAIN AND COMPANY.COMPANY_ID is NULL)      

WHERE SR.COMPANY_SK is NULL      

      

      

UPDATE SR      

SET SUBMITTER_PERSON_SK = SUBMITTER.PERSON_SK      

FROM  [STG_CW_SR_TASK] SR      

LEFT OUTER JOIN (SELECT MAX(PERSON_SK) AS PERSON_SK,PERSON_ID,DATASOURCEID FROM SYN_PERSON  WHERE DATASOURCEID = @DATASOURCEID GROUP BY PERSON_ID,DATASOURCEID) SUBMITTER      

ON (SUBMITTER.PERSON_ID = SR.SUBMITTED_BY_ID AND SUBMITTER.DATASOURCEID = @DATASOURCEID)      

      

      

UPDATE SR      

SET ASSIGNED_GROUP_ID = ASSIGNED_GROUP.SUPPORT_GROUP_ID      

FROM  [STG_CW_SR_TASK] SR      

LEFT OUTER JOIN SYN_SUPPORTGROUP ASSIGNED_GROUP       

ON (ASSIGNED_GROUP.SUPPORT_GROUP_ID=SR.ASSIGNMENT_GROUP_ID AND ASSIGNED_GROUP.DATASOURCEID = @DATASOURCEID)      

      

      

UPDATE SR      

SET ASSIGNEE_LOGIN_ID = ASSIGNED_LOGIN_ID.PERSON_SK       

FROM [STG_CW_SR_TASK] SR       

LEFT OUTER JOIN (SELECT MAX(PERSON_SK) AS PERSON_SK,PERSON_ID,DATASOURCEID FROM SYN_PERSON  WHERE DATASOURCEID = @DATASOURCEID GROUP BY PERSON_ID,DATASOURCEID) ASSIGNED_LOGIN_ID       

ON (ASSIGNED_LOGIN_ID.PERSON_ID=SR.ASSIGNED_TO_ID AND ASSIGNED_LOGIN_ID.DATASOURCEID=@DATASOURCEID)      

      

  

      

--------------------------------------------------------------------------------------------      

      

      

;WITH DELETE_ROWS      

AS      

(      

      

SELECT ROW_NUMBER() OVER(PARTITION BY  NUMBER ORDER BY LAST_MODIFIED_DATE DESC) AS ROW , * FROM [STG_CW_SR_TASK]      

)      

DELETE FROM DELETE_ROWS      

WHERE DELETE_ROWS.ROW>1;      

      

      

DELETE ITIL FROM SYN_ODS_CW_ITIL_TRANSACTION ITIL       

INNER JOIN [STG_CW_SR_TASK] STG      

ON (ITIL.TRANSACTION_ID = STG.NUMBER AND ITIL.DATASOURCEID=@DATASOURCEID AND ITIL.TRANSACTION_TYPE='SC_TASK')      

      

      

      

INSERT INTO SYN_ODS_CW_ITIL_TRANSACTION    

(      

ASSIGNEE_LOGIN_ID,      

ASSIGNED_GROUP_ID,      

TOTAL_DURATION,      

COMPANY_SK,      

DESCRIPTION,      

IMPACT,      

SITE_SK,      

TRANSACTION_ID,      

SUBMIT_DATE,      

SUBMITTER_PERSON_SK,      

PRIORITY,      

HEADLINE,      

TRANSACTION_TYPE,      

LAST_MODIFIED_BY,      

LAST_MODIFIED_DATE,   

DATASOURCEID,      

URGENCY,         

Categorization_Tier_1,        

Categorization_Tier_2         

,EXCLUDE           

,EXCLUSION_REASON         

,DOMAIN            

,PERSON_SK           

)      

      

SELECT      

ISNULL(ASSIGNEE_LOGIN_ID, 0) AS ASSIGNEE_LOGIN_ID,      

ISNULL(ASSIGNED_GROUP_ID, 0) AS ASSIGNED_GROUP_ID,      

TOTAL_DURATION AS TOTAL_DURATION,      

ISNULL(COMPANY_SK,0) AS COMPANY_SK ,      

DESCRIPTION AS DESCRIPTION,      

IMPACT AS IMPACT,      

ISNULL(SITE_SK, 0) AS SITE_SK,      

NUMBER AS TRANSACTION_ID,      

SUBMIT_DATE AS SUBMIT_DATE,      

ISNULL(SUBMITTER_PERSON_SK, 0) AS SUBMITTER_PERSON_SK,      

PRIORITY AS PRIORITY,      

SHORT_DESCRIPTION AS HEADLINE,      

TRANSACTION_TYPE AS TRANSACTION_TYPE,      

LAST_MODIFIED_BY AS LAST_MODIFIED_BY,      

LAST_MODIFIED_DATE AS LAST_MODIFIED_DATE,      

@DATASOURCEID AS DATASOURCEID,      

URGENCY,          

CATEGORY,          

CMDB_CI            

,EXCLUDE_FROM_REPORTING        

,EXCLUSION_REASON         

,DOMAIN            

,PERSON_SK           

FROM  [STG_CW_SR_TASK]       

where SUBMIT_DATE IS NOT NULL      

      

/*DELETE FROM ODS_CW.DBO.TASK*/      

      

    

DELETE SR FROM SYN_CW_TASK SR       

INNER JOIN [STG_CW_SR_TASK] STG      

ON (STG.NUMBER = SR.TRANSACTION_ID AND SR.DATASOURCEID=@DATASOURCEID)      

WHERE TASKTYPE='SC_TASK'      

    

      

/*INSERT INTO ODS_CW.DBO.TASK*/      

      

INSERT INTO SYN_CW_TASK      

(      

ASSIGN_TIME,      

DURATION_IN_SECONDS,      

REPORTED_SOURCE,      

TASKNAME,      

SCHEDULED_END_DATE,      

SCHEDULED_START_DATE,      

TASK_NUMBER,      

TRANSACTION_ID,      

SUBMIT_DATE,      

SUBMITTER,      

ROOTREQUESTID,      

STATUS,      

TASKTYPE,      

TASK_ID,      

LAST_MODIFIED_BY,      

LAST_MODIFIED_DATE,      

ACTUAL_END_DATE,      

ACTUAL_START_DATE,      

END_TIME,      

START_TIME,      

DATASOURCEID      

,COMMENTS_AND_WORKNOTES      

,Escalation_count      

)      

SELECT       

SCT.ASSIGN_TIME AS ASSIGN_TIME,      

DATEDIFF(s, '1970-01-01 00:00:00', SCT.TOTAL_DURATION),      

SCT.REPORTED_SOURCE AS REPORTED_SOURCE,      

SCT.TASKNAME AS TASKNAME,      

SCT.SCHEDULED_END_DATE AS SCHEDULED_END_DATE,      

SCT.SCHEDULED_START_DATE AS SCHEDULED_START_DATE,      

SCT.NUMBER AS TASK_NUMBER,      

SCT.NUMBER AS TRANSACTION_ID,      

SCT.SUBMIT_DATE AS SUBMIT_DATE,      

left(SCT.SUBMITTER,60) AS SUBMITTER,      

SCT.ROOTREQUESTID AS ROOTREQUESTID,      

SCT.STATUS AS STATUS,      

SCT.TRANSACTION_TYPE AS TASKTYPE,      

SCT.TASK_ID AS TASK_ID,      

SCT.LAST_MODIFIED_BY AS LAST_MODIFIED_BY,      

SCT.LAST_MODIFIED_DATE AS LAST_MODIFIED_DATE,      

SCT.ACTUAL_END_DATE AS ACTUAL_END_DATE,      

SCT.ACTUAL_START_DATE AS ACTUAL_START_DATE,      

SCT.ACTUAL_END_DATE AS END_TIME,      

SCT.ACTUAL_START_DATE AS START_TIME,      

@DATASOURCEID AS DATASOURCEID      

,COMMENTS_AND_WORKNOTES      

,REASSIGNMENT_COUNT      

FROM       

[STG_CW_SR_TASK] SCT       

where SCT.SUBMIT_DATE is NOT NULL      

      

Set @RecordCount = @@ROWCOUNT      

      

      

--===================================================================      

--Updating Missing records after loading into ODS      

--DECLARE @DATASOURCEID INT = 93     

UPDATE MR      

SET IS_LOADED = 1    

FROM [STG_CW_MISSING_RECORDS] MR       

INNER JOIN SYN_CW_TASK I  ON MR.NUMBER = I.TRANSACTION_ID      

WHERE I.DataSOurceID = @DATASOURCEID and MR.TableName = 'sc_task'      

--===================================================================      

      

--=================UPDATING SOURCE_TABLES INFO=================      

      

If (@RecordCount > 0)      

      

Begin      

      

 SET @MAX_LAST_MODIFIED_DATE = (SELECT CONVERT(VARCHAR, MAX(LAST_MODIFIED_DATE), 120) AS LAST_UPDATED FROM [STG_CW_SR_TASK]  )      

      

 UPDATE SYN_SourceTables_CW     

 SET LAST_MODIFIED_DATE=DATEDIFF(SECOND, '1970-01-01 00:00:00',@MAX_LAST_MODIFIED_DATE)      

 WHERE DATASOURCEID=@DATASOURCEID      

 AND PACKAGE_NAME='STG_CW_SR_TASK'      

 AND SOURCETABLENAME='STG_CW_SR_TASK'      

  

  

  

    

      

End      

         

 UPDATE [SYN_SourceTables_CW]   

 SET LOADSTARTTIME=@LOAD_START_TIME,    

 LOADENDTIME=GETDATE()    

 WHERE DATASOURCEID=@DATASOURCEID    

 AND PACKAGE_NAME='STG_CW_SR_TASK'    

 AND SOURCETABLENAME='STG_CW_SR_TASK'    

  

  -- ===================================================================      

 -- Calling Daily Task snapshop sp      

 -- ===================================================================      

      

 --Exec CW_Open_Task_Snapshot_SP      

      

   -- ===================================================================      

 -- Log the Procedure Completion Time      

 -- ===================================================================      

      

  SET @EndDt = GETDATE()      

  EXECUTE [SYN_SP_GSNOW_CW_UpdateExtractLogById] @ExtractIdOut, @EndDt, 'E', @RecordCount       

  COMMIT TRAN      

  SELECT ReturnCode=0      

 END TRY      

      

BEGIN CATCH       

 ROLLBACK TRAN      

      

 DECLARE @ERROR_SEVERITY INT = ERROR_SEVERITY()      

 DECLARE @ERROR_STATE INT = ERROR_STATE()      

 DECLARE @ERROR_NUMBER INT = ERROR_NUMBER()      

 DECLARE @ERROR_LINE INT = ERROR_LINE()      

 DECLARE @ERROR_MESSAGE NVARCHAR(4000) = ERROR_MESSAGE()       

      

 SET  @EndDt = GETDATE()       

      

 --Log error detail in ExtractLogErrors      

 EXECUTE [SYN_SP_GSNOW_CW_InsertExtractLogError]     

      @ProcedureName = @ProcedureName      

     ,@ExtractID = @ExtractIdOut      

     ,@ErrorDateTime = @EndDt      

     ,@ErrorNumber = @ERROR_NUMBER      

     ,@ErrorState = @ERROR_STATE      

     ,@ErrorSeverity = @ERROR_SEVERITY      

     ,@LineNumber = @ERROR_LINE      

     ,@ErrorMessage = @ERROR_MESSAGE       

      

  --Set Extract to error status        

 EXECUTE [SYN_SP_GSNOW_CW_UpdateExtractLogById] @ExtractIdOut, @EndDt, 'F', @RecordCount      

 RAISERROR (@ERROR_MESSAGE,@ERROR_SEVERITY,@ERROR_STATE);      

 SELECT ReturnCode=1      

      

END CATCH      

      

END      

      

      

      

      

      

Comments

Popular posts from this blog

java chapter11 practice question on abstruct class and interfaces

DAY 12 -AZURE DP900(Microsoft Azure Data Fundamentals: Explore non-relational data in Azure)

java exercise4