diff --git a/SpravatoETL/Project.params b/SpravatoETL/Project.params
index e96cf0b..2c5a430 100644
--- a/SpravatoETL/Project.params
+++ b/SpravatoETL/Project.params
@@ -84,4 +84,26 @@
SSIS:Name="DataType">9
+
+
+ {7bf9749f-aa68-45c5-84e1-4d2a86a6936d}
+
+
+ 0
+ 0
+ 1
+ AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAO6XIHfjZM0evaVyi8h5QcgAAAAACAAAAAAADZgAAwAAAABAAAABXtvAOflpVVuFha38tYq24AAAAAASAAACgAAAAEAAAACVOTmTgP6rrDmXAeMUcuC2IAAAAVIYGuzULsOAML+qPJJrJxdOuPwCwgdIhn6EGIoVyc8TAOU/fm0blq0Rbm5HYcif6AcBN0xC5cPzepShyzWbZLZC3AywJfm+112HxOM4LIVDrDwGFz1QBedrD2W+KBzmTrYxGYhBkwMbF3RNXaz/H5KTC+UcDcE0dydj0biRg1tr4MBHfRmOtYxQAAAB4ewSEE5otKg6lVmMatmUm1v0Jcw==
+ 18
+
+
\ No newline at end of file
diff --git a/SpravatoETL/SpravatoAuditImport.dtsx b/SpravatoETL/SpravatoAuditImport.dtsx
index 4384ea5..819ccdc 100644
--- a/SpravatoETL/SpravatoAuditImport.dtsx
+++ b/SpravatoETL/SpravatoAuditImport.dtsx
@@ -12,8 +12,8 @@
DTS:LocaleID="1033"
DTS:ObjectName="SpravatoAuditImport"
DTS:PackageType="5"
- DTS:VersionBuild="109"
- DTS:VersionGUID="{5F87FC6D-9C4C-4820-8498-EE6381757922}">
+ DTS:VersionBuild="129"
+ DTS:VersionGUID="{8F886508-44BE-4036-AD70-D38ECB4FEEDE}">
8
@@ -34,13 +34,15 @@
DTS:CreationName="ODBC"
DTS:DTSID="{0CD9C645-D57D-475B-9EBD-BA739975849E}"
DTS:ObjectName="CM_PostgresQL_DR">
+ @[$Package::PostgreSQLPassword]
+ DTS:ConnectionString="server=10.135.214.23;uid=mulhall_john;Driver={PostgreSQL Unicode(x64)};database=Livedb;port=5432;sslmode=disable;readonly=0;protocol=7.4;fakeoidindex=0;showoidcolumn=0;rowversioning=0;showsystemtables=0;fetch=100;unknownsizes=0;maxvarcharsize=255;maxlongvarcharsize=8190;debug=0;commlog=0;usedeclarefetch=0;textaslongvarchar=1;unknownsaslongvarchar=0;boolsaschar=1;parse=0;lfconversion=1;updatablecursors=1;trueisminus1=0;bi=0;byteaaslongvarbinary=1;useserversideprepare=1;lowercaseidentifier=0;d6=-101;optionalerrors=0;fetchrefcursors=0;xaopt=1;">
AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAA3sg5/WnZgE6AXM2AQAN7vwAAAAAIAAAARABUAFMAAAAQZgAAAAEAACAAAAB1dbVU8vLemeWfrjjWEe1eqVdWGpvrW1wCn1SnHf9NIwAAAAAOgAAAAAIAACAAAADFuGffLMThqULClBz6q32PSrZcoQPIioWQtY0Qp70lrkAAAACb4UCu7KG5gz3SC8n7mTylQuNWOJaS0H/zlsfBB7vqR6QvwEipEdG9yPXTH38c6GaMP+CdA2eRA/e2fUE67zROQAAAANtfSOYuYe/uEw8HZwxLPRGxyj8x7oGRx0WOSXWnHcb1nSx75wjjh47/k3j0lBmGNmb7+0vohQKzU2Ncw6P98LM
+ Encrypted="1">AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAO6XIHfjZM0evaVyi8h5QcgAAAAAIAAAARABUAFMAAAADZgAAwAAAABAAAACVT0ETvHS3ZGi8Jhk/kqXNAAAAAASAAACgAAAAEAAAAMpyDqhCwyGFqSDlfPhfPIwwAAAAWqfgAZCtlLoC26CGhdpFKTr1j5YLQZ6hCfW3Wp6B2dAsDV5JBO9fyAl+2XVvN8a8FAAAAIzS2j4BIaQwWUdGfJTz/srrtLbI
@@ -76,6 +78,20 @@
DTS:DataType="8"
DTS:Name="ParameterValue">SpravatoAuditImport
+
+
+ AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAO6XIHfjZM0evaVyi8h5QcgAAAAAIAAAARABUAFMAAAADZgAAwAAAABAAAACz96UjvIVyejw0WUJKEFqnAAAAAASAAACgAAAAEAAAABfKUtFhuhBHTatg/GtYxKQwAAAAxWe4YTcEgRm81mFPKp9tEhj4mH/iOfMaKU9gLxs7It7BRMkFWJ8kfxt5IflPVFOqFAAAAKGfAYkHQEGTjuBo5dAI717TJJHC
+
+
+ FileSpec="Admin Vs Dispensed SMC20260104-0110.xlsx" />
+ DTS:ThreadHint="3">
+
+
+
+
+
+
+ DTS:ThreadHint="3">
dataType="System.String"
description="The name of the table to be fetched."
expressionType="Notify"
- name="TableName">
+ name="TableName">"public"."spravato_audit"
hasSideEffects="true"
name="ODBC Destination Input"
truncationRowDisposition="FailComponent">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ isUsed="True">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -5463,6 +5977,133 @@ namespace ST_e1ef9c54be554a589a679829e6fb5458
#endregion
}
}]]>
+
+// This code was generated by a tool.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+[assembly: global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope="member", Target="ST_e1ef9c54be554a589a679829e6fb5458.Properties.Resources.get_ResourceManager():System.Resources.Resou" +
+ "rceManager")]
+[assembly: global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope="member", Target="ST_e1ef9c54be554a589a679829e6fb5458.Properties.Resources.get_Culture():System.Globalization.CultureIn" +
+ "fo")]
+[assembly: global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope="member", Target="ST_e1ef9c54be554a589a679829e6fb5458.Properties.Resources.set_Culture(System.Globalization.CultureInfo" +
+ "):Void")]
+
+namespace ST_e1ef9c54be554a589a679829e6fb5458.Properties {
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ internal class Resources {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources() {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if ((resourceMan == null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ST_e1ef9c54be554a589a679829e6fb5458.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+ }
+}]]>
+
+
+
+ ST_e1ef9c54be554a589a679829e6fb5458
+ msBuild
+ ST_e1ef9c54be554a589a679829e6fb5458
+ {6E4E6492-840B-4BB3-9701-F7841170C928}
+
+
+
+
+
+
+
+
+
+
+]]>
+
+
+
+
+
+
+
+]]>
@@ -5549,133 +6190,6 @@ namespace ST_e1ef9c54be554a589a679829e6fb5458
]]>
-
-
-
- ST_e1ef9c54be554a589a679829e6fb5458
- msBuild
- ST_e1ef9c54be554a589a679829e6fb5458
- {6E4E6492-840B-4BB3-9701-F7841170C928}
-
-
-
-
-
-
-
-
-
-
-]]>
-
-
-
-
-
-
-
-]]>
-
-// This code was generated by a tool.
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-[assembly: global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope="member", Target="ST_e1ef9c54be554a589a679829e6fb5458.Properties.Resources.get_ResourceManager():System.Resources.Resou" +
- "rceManager")]
-[assembly: global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope="member", Target="ST_e1ef9c54be554a589a679829e6fb5458.Properties.Resources.get_Culture():System.Globalization.CultureIn" +
- "fo")]
-[assembly: global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope="member", Target="ST_e1ef9c54be554a589a679829e6fb5458.Properties.Resources.set_Culture(System.Globalization.CultureInfo" +
- "):Void")]
-
-namespace ST_e1ef9c54be554a589a679829e6fb5458.Properties {
-
-
- ///
- /// A strongly-typed resource class, for looking up localized strings, etc.
- ///
- // This class was auto-generated by the StronglyTypedResourceBuilder
- // class via a tool like ResGen or Visual Studio.
- // To add or remove a member, edit your .ResX file then rerun ResGen
- // with the /str option, or rebuild your VS project.
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- internal class Resources {
-
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal Resources() {
- }
-
- ///
- /// Returns the cached ResourceManager instance used by this class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager {
- get {
- if ((resourceMan == null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ST_e1ef9c54be554a589a679829e6fb5458.Properties.Resources", typeof(Resources).Assembly);
- resourceMan = temp;
- }
- return resourceMan;
- }
- }
-
- ///
- /// Overrides the current thread's CurrentUICulture property for all
- /// resource lookups using this strongly typed resource class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture {
- get {
- return resourceCulture;
- }
- set {
- resourceCulture = value;
- }
- }
- }
-}]]>
TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAgAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1v
@@ -5883,6 +6397,7 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
DTS:CreationName="Microsoft.ExecuteSQLTask"
DTS:DelayValidation="True"
DTS:Description="Execute SQL Task"
+ DTS:Disabled="True"
DTS:DTSID="{EFA0601C-FF25-4C45-B8AC-EEDF3373A8AF}"
DTS:ExecutableType="Microsoft.ExecuteSQLTask"
DTS:LocaleID="-1"
@@ -5893,7 +6408,7 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+ SQLTask:SqlStatementSource="DELETE FROM public.spravato_audit
WHERE file_load_id = ?;" xmlns:SQLTask="www.microsoft.com/sqlserver/dts/tasks/sqltask">
DTS:LocaleID="-1"
DTS:ObjectName="Reconcile PostgreSQL File"
DTS:TaskContact="Execute SQL Task; Microsoft Corporation; SQL Server 2025; © 2025 Microsoft Corporation; All Rights Reserved;http://www.microsoft.com/sql/support/default.asp;1"
- DTS:ThreadHint="0">
+ DTS:ThreadHint="3">
+ SQLTask:SqlStatementSource="DELETE FROM public.spravato_audit
WHERE source_file_path = ?
AND file_load_id <> ?;" xmlns:SQLTask="www.microsoft.com/sqlserver/dts/tasks/sqltask">
DTS:LocaleID="-1"
DTS:ObjectName="TEST - Force Failure"
DTS:TaskContact="Execute SQL Task; Microsoft Corporation; SQL Server 2025; © 2025 Microsoft Corporation; All Rights Reserved;http://www.microsoft.com/sql/support/default.asp;1"
- DTS:ThreadHint="1">
+ DTS:ThreadHint="2">
DTS:LocaleID="-1"
DTS:ObjectName="Validate PostgreSQL Row Count"
DTS:TaskContact="Execute SQL Task; Microsoft Corporation; SQL Server 2025; © 2025 Microsoft Corporation; All Rights Reserved;http://www.microsoft.com/sql/support/default.asp;1"
- DTS:ThreadHint="0">
+ DTS:ThreadHint="1">
DTS:LogicalAnd="True"
DTS:ObjectName="Constraint 11"
DTS:To="Package\ForEach Spravato File\Increment Files Processed" />
+
+
@@ -6190,7 +6723,7 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+ SQLTask:SqlStatementSource="UPDATE etl.file_load
SET
status = 'FAILED',
error_message =
CONCAT(
'Failed task: ',
?,
CHAR(13),
CHAR(10),
?
)
WHERE file_load_id = ?
AND status IN ('PROCESSING', 'SQLSERVER_COMPLETE');" xmlns:SQLTask="www.microsoft.com/sqlserver/dts/tasks/sqltask">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -7499,7 +8054,35 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -7769,10 +8352,10 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+ TopLeft="485,147" />
+ TopLeft="586.75,99">
design-time-name="Package\ForEach Spravato File\Load Spravato Stage">
+ Capacity="8" xmlns="clr-namespace:Microsoft.SqlServer.IntegrationServices.Designer.Model.Serialization;assembly=Microsoft.SqlServer.IntegrationServices.Graph" xmlns:mssgle="clr-namespace:Microsoft.SqlServer.Graph.LayoutEngine;assembly=Microsoft.SqlServer.Graph" xmlns:assembly="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mssgm="clr-namespace:Microsoft.SqlServer.Graph.Model;assembly=Microsoft.SqlServer.Graph">
-
+
-
+
-
+
diff --git a/SpravatoETL/SpravatoETL.dtproj b/SpravatoETL/SpravatoETL.dtproj
index 643b439..fdcd0dd 100644
--- a/SpravatoETL/SpravatoETL.dtproj
+++ b/SpravatoETL/SpravatoETL.dtproj
@@ -16,7 +16,7 @@
{d1566dde-0222-428f-8454-2e0eeeeda4bd}
SpravatoETL
- 1
+ 0
0
0
@@ -26,7 +26,7 @@
NB7014
- AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAA3sg5/WnZgE6AXM2AQAN7vwAAAAACAAAAAAAQZgAAAAEAACAAAABCqDAh6TJLVzp+cQKnelqKVFrnNI9YB+nV7YyI2B21KQAAAAAOgAAAAAIAACAAAADmOzCCOoiLXv6JklvQ2iWPQ5Yew650bEGC0OJJKI/nXJAAAACRbUgZQT00qwEyEOpdkXW7Te5D0LGa4gsUNAf1U73CY2fmOR6b0Muj7Dz9dz5zK2vymopCgIIVYkwPEldLPS+QEL89gQSoTs3+MmhOG41BiRHYCyEsn6UhKLTiNUnzcVzHG1jeTvcQz/+35r8lmuefALSi1PWRqPT64l3pUMDna1YqPVZb/KR4FPDYFVcqrbtAAAAAfrfuBlITh5jl6dDV5YrFTd2P8QSAj9Z/4YMt7DXZDBayiHq0+cAI5GiC3HpAiFKxGRr6beCqM2WCF8CwzCIuYQ==
+ AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAO6XIHfjZM0evaVyi8h5QcgAAAAACAAAAAAADZgAAwAAAABAAAABQu18TEEXYe/lkzTsDzE1AAAAAAASAAACgAAAAEAAAANdmPZY6HMGv1cxGbipEnuqIAAAAQnCWwWokDUzYsIkVvGo3O3uxiOLw4VTdzhIgg8SDUhI951hZZ1oH4pbkRXDI5fDvrkEP3do/4f3OwZy+Ev9LlWxCUPzEE/LKN+tzU35l/7BVt0lTKC7p5IK8TPNMO5JOE9vFegrxLxOFJDux3THkA/xXl4NhjfC/kP6qcRlyrWRAHIAcsSiBNBQAAADwy+cHdltAwpKeoALGRDwLeGSbyA==
1
@@ -42,10 +42,10 @@
SpravatoAuditImport
1
0
- 95
+ 123
- {4D7F7092-C860-48FE-9531-53B753D32794}
+ {CBFE7C3F-083F-436B-9785-C3F01CA841D0}
8
@@ -80,6 +80,20 @@
18
+
+
+ {8CEE4C82-C3D7-482C-A4F0-EDA36DC13CD5}
+
+
+
+
+ 0
+ 0
+ 1
+ AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAO6XIHfjZM0evaVyi8h5QcgAAAAACAAAAAAADZgAAwAAAABAAAADanA3MDD48GGSmPtK5UEW4AAAAAASAAACgAAAAEAAAAD7K3EGIES0uwppwm75qQTuIAAAA3Cj5uCYZYWyrZs/KRcIOIKZ2YG+PCvipEATeTtT1WW8Mldsmzc1iFaAAC1+7W6xwOkTK7fkCQcefLo1z+Ik8EaFmXvOOfHfqpM048wWfBGgPsrlr5VRp00E6p5SGfk1iJVMyJNcyqcdGGy9yeB0cMIkg+rvNT50cNj5F2gFidzhw9kHqyrK7bhQAAAAq5HsPkzPi0obAiP6Z8FF+BNnbxQ==
+ 18
+
+
{C78245DC-BEF7-4412-A60F-57E08F0D942E}
@@ -270,7 +284,7 @@
0
0
0
- server=10.135.214.23;uid=mulhall_john;Driver={PostgreSQL Unicode(x64)};port=5432;database=postgres;sslmode=require;
+ server=10.135.214.23;uid=mulhall_john;Driver={PostgreSQL Unicode(x64)};database=Livedb;port=5432;sslmode=disable;readonly=0;protocol=7.4;fakeoidindex=0;showoidcolumn=0;rowversioning=0;showsystemtables=0;fetch=100;unknownsizes=0;maxvarcharsize=255;maxlongvarcharsize=8190;debug=0;commlog=0;usedeclarefetch=0;textaslongvarchar=1;unknownsaslongvarchar=0;boolsaschar=1;parse=0;lfconversion=1;updatablecursors=1;trueisminus1=0;bi=0;byteaaslongvarbinary=1;useserversideprepare=1;lowercaseidentifier=0;d6=-101;optionalerrors=0;fetchrefcursors=0;xaopt=1;
18
@@ -288,20 +302,6 @@
18
-
-
-
-
-
-
-
-
- 0
- 0
- 1
- 18
-
-