diff --git a/SpravatoETL/SpravatoAuditImport.dtsx b/SpravatoETL/SpravatoAuditImport.dtsx
index 819ccdc..eb4fab4 100644
--- a/SpravatoETL/SpravatoAuditImport.dtsx
+++ b/SpravatoETL/SpravatoAuditImport.dtsx
@@ -12,8 +12,8 @@
DTS:LocaleID="1033"
DTS:ObjectName="SpravatoAuditImport"
DTS:PackageType="5"
- DTS:VersionBuild="129"
- DTS:VersionGUID="{8F886508-44BE-4036-AD70-D38ECB4FEEDE}">
+ DTS:VersionBuild="135"
+ DTS:VersionGUID="{1B00A5BE-7A2E-4984-9253-1F91C9E61E7D}">
8
@@ -40,9 +40,9 @@
AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAO6XIHfjZM0evaVyi8h5QcgAAAAAIAAAARABUAFMAAAADZgAAwAAAABAAAACVT0ETvHS3ZGi8Jhk/kqXNAAAAAASAAACgAAAAEAAAAMpyDqhCwyGFqSDlfPhfPIwwAAAAWqfgAZCtlLoC26CGhdpFKTr1j5YLQZ6hCfW3Wp6B2dAsDV5JBO9fyAl+2XVvN8a8FAAAAIzS2j4BIaQwWUdGfJTz/srrtLbI
+ Encrypted="1">AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAO6XIHfjZM0evaVyi8h5QcgAAAAAIAAAARABUAFMAAAADZgAAwAAAABAAAAByHW7WcsMwuZu/dqgEr4/rAAAAAASAAACgAAAAEAAAANA/fo4nWuQqrHZ/KGn86z4wAAAAg4m71Yfi32duzLCMN7uQLa9OsVSySggGDogMZgvb42DgNEqtr22bmAp2n9S6zQAMFAAAAPdtxG2gHGsxXYl+wnPy0kvHIlmV
@@ -89,7 +89,7 @@
AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAO6XIHfjZM0evaVyi8h5QcgAAAAAIAAAARABUAFMAAAADZgAAwAAAABAAAACz96UjvIVyejw0WUJKEFqnAAAAAASAAACgAAAAEAAAABfKUtFhuhBHTatg/GtYxKQwAAAAxWe4YTcEgRm81mFPKp9tEhj4mH/iOfMaKU9gLxs7It7BRMkFWJ8kfxt5IflPVFOqFAAAAKGfAYkHQEGTjuBo5dAI717TJJHC
+ Encrypted="1">AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAO6XIHfjZM0evaVyi8h5QcgAAAAAIAAAARABUAFMAAAADZgAAwAAAABAAAABYxa3P37VEUukvoGtELsWWAAAAAASAAACgAAAAEAAAAFdsMwOmptcWhaOeVHJn/bkwAAAAMvOpHYdwi5qaaXexxcGItl8E/DrhkjHWIT2xoaw7WtrCoP7dfnNB3kqNKtLDyCFdFAAAABtcd1h171OwrwNOaDfo1CHkEhvy
0
+
+ 0
+
+ DTS:ThreadHint="0">
+ SQLTask:SqlStatementSource="UPDATE etl.package_run
SET
ended_at = SYSDATETIME(),
status =
CASE
WHEN ? = 0 THEN 'NO_FILES'
WHEN ? > 0 THEN 'COMPLETE_WITH_WARNINGS'
ELSE 'COMPLETE'
END,
files_found = ?,
files_processed = ?,
rows_read =
(
SELECT COALESCE(SUM(source_row_count), 0)
FROM etl.file_load
WHERE run_id = ?
),
rows_sqlserver =
(
SELECT COALESCE(SUM(sqlserver_row_count), 0)
FROM etl.file_load
WHERE run_id = ?
),
rows_postgresql =
(
SELECT COALESCE(SUM(postgresql_row_count), 0)
FROM etl.file_load
WHERE run_id = ?
)
WHERE run_id = ?;" xmlns:SQLTask="www.microsoft.com/sqlserver/dts/tasks/sqltask">
-
+
+
+
@@ -380,7 +401,7 @@
+ FileSpec="Admin Vs Dispensed SMC*.xls*" />
+ DTS:ThreadHint="1">
+ DTS:ThreadHint="2">
+ DTS:ThreadHint="1">
+
+
+
+
+
+
+]]>
@@ -659,35 +689,6 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
]]>
-
-// 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_26e779e5f0794098bd25498a1ddbf8d9.Properties.Settings.get_Default():ST_26e779e5f0794098bd25498a1ddbf8d9.Properties.Sett" +
- "ings")]
-
-namespace ST_26e779e5f0794098bd25498a1ddbf8d9.Properties {
-
-
- internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
-
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- private static Settings defaultInstance = new Settings();
-
- public static Settings Default {
- get {
- return defaultInstance;
- }
- }
- }
-}]]>
]]>
+
+// 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_26e779e5f0794098bd25498a1ddbf8d9.Properties.Settings.get_Default():ST_26e779e5f0794098bd25498a1ddbf8d9.Properties.Sett" +
+ "ings")]
+
+namespace ST_26e779e5f0794098bd25498a1ddbf8d9.Properties {
+
+
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ private static Settings defaultInstance = new Settings();
+
+ public static Settings Default {
+ get {
+ return defaultInstance;
+ }
+ }
+ }
+}]]>
-
-
-
-
-
-
-]]>
Language="CSharp"
ReadOnlyVariables="User::CurrentFilePath,$Project::MinimumSourceYear"
ReadWriteVariables="User::CurrentFileDateText,User::CurrentFileHash,User::CurrentFileModified,User::CurrentFileName,User::CurrentFileSize,User::CurrentFileSkipReason,User::CurrentSourceYear,User::FilesFound,User::LockedFilesSkipped,User::SkipCurrentFile">
+
+
+
+
+
+
+]]>
@@ -5389,34 +5419,91 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=]]>
]]>
-// 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.Settings.get_Default():ST_e1ef9c54be554a589a679829e6fb5458.Properties.Sett" +
- "ings")]
-
-namespace ST_e1ef9c54be554a589a679829e6fb5458.Properties {
-
-
- internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
-
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- private static Settings defaultInstance = new Settings();
-
- public static Settings Default {
- get {
- return defaultInstance;
- }
- }
- }
-}]]>
+ Name="ST_e1ef9c54be554a589a679829e6fb5458.csproj"
+ Encoding="UTF8">
+
+
+ {30D016F9-3734-4E33-A861-5E7D899E18F3};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ Debug
+ AnyCPU
+ 8.0.30703
+ 2.0
+ {29C0C7AE-3B2A-4F11-8197-7AEEDB099377}
+ Library
+ Properties
+ ST_e1ef9c54be554a589a679829e6fb5458
+ ST_e1ef9c54be554a589a679829e6fb5458
+ v4.7
+ 512
+ true
+
+
+
+ true
+ full
+ false
+ .\bin\Debug\
+ false
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ false
+ true
+ .\bin\Release\
+ false
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+ Code
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+
+
+ True
+ Resources.resx
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+ True
+ Settings.settings
+
+
+ Code
+
+
+
+
+
+
+
+
+
+
+ SSIS_ST170
+
+
+
+
+]]>
+
+
+
+ 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.Settings.get_Default():ST_e1ef9c54be554a589a679829e6fb5458.Properties.Sett" +
+ "ings")]
+
+namespace ST_e1ef9c54be554a589a679829e6fb5458.Properties {
+
+
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ private static Settings defaultInstance = new Settings();
+
+ public static Settings Default {
+ get {
+ return defaultInstance;
+ }
+ }
+ }
+}]]>
+
-
-
-
- ST_e1ef9c54be554a589a679829e6fb5458
- msBuild
- ST_e1ef9c54be554a589a679829e6fb5458
- {6E4E6492-840B-4BB3-9701-F7841170C928}
-
-
-
-
-
-
-
-
-
-
-]]>
-
-
-
-
-
-
-
-]]>
-
-
-
- {30D016F9-3734-4E33-A861-5E7D899E18F3};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- Debug
- AnyCPU
- 8.0.30703
- 2.0
- {29C0C7AE-3B2A-4F11-8197-7AEEDB099377}
- Library
- Properties
- ST_e1ef9c54be554a589a679829e6fb5458
- ST_e1ef9c54be554a589a679829e6fb5458
- v4.7
- 512
- true
-
-
-
- true
- full
- false
- .\bin\Debug\
- false
- DEBUG;TRACE
- prompt
- 4
-
-
- false
- true
- .\bin\Release\
- false
- TRACE
- prompt
- 4
-
-
-
-
-
-
-
-
-
-
-
-
- Code
-
-
- ResXFileCodeGenerator
- Resources.Designer.cs
-
-
- True
- Resources.resx
-
-
- SettingsSingleFileGenerator
- Settings.Designer.cs
-
-
- True
- Settings.settings
-
-
- Code
-
-
-
-
-
-
-
-
-
-
- SSIS_ST170
-
-
-
-
-]]>
TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAgAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1v
@@ -6452,12 +6473,16 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
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="3">
+ DTS:ThreadHint="1">
+ SQLTask:SqlStatementSource="SELECT CAST(
public.reconcile_spravato_audit(?, ?)
AS BIGINT
) AS deleted_rows;"
+ SQLTask:ResultType="ResultSetType_SingleRow" 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="2">
+ DTS:ThreadHint="3">
@@ -6718,7 +6743,7 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
DTS:LocaleID="-1"
DTS:ObjectName="Mark File Load Failed"
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:LocaleID="-1"
DTS:ObjectName="Mark Package Failed"
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:LocaleID="-1"
DTS:ObjectName="Send Failure Email"
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:LocaleID="-1"
DTS:ObjectName="Send Success Email"
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="0">
DTS:LocaleID="-1"
DTS:ObjectName="Send Warning Email"
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="2">
+ DTS:ThreadHint="1">
Language="CSharp"
ReadOnlyVariables="System::ErrorDescription,System::SourceName"
ReadWriteVariables="User::ErrorMessage,User::ErrorTaskName">
+
+
+
+
+
+
+]]>
@@ -7186,35 +7220,6 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
]]>
-
-// 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_ccde3fbc55984542be29e65dd03de37b.Properties.Settings.get_Default():ST_ccde3fbc55984542be29e65dd03de37b.Properties.Sett" +
- "ings")]
-
-namespace ST_ccde3fbc55984542be29e65dd03de37b.Properties {
-
-
- internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
-
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- private static Settings defaultInstance = new Settings();
-
- public static Settings Default {
- get {
- return defaultInstance;
- }
- }
- }
-}]]>
]]>
+
+// 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_ccde3fbc55984542be29e65dd03de37b.Properties.Settings.get_Default():ST_ccde3fbc55984542be29e65dd03de37b.Properties.Sett" +
+ "ings")]
+
+namespace ST_ccde3fbc55984542be29e65dd03de37b.Properties {
+
+
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ private static Settings defaultInstance = new Settings();
+
+ public static Settings Default {
+ get {
+ return defaultInstance;
+ }
+ }
+ }
+}]]>
-
-
-
-
-
-
-]]>
Size="205,42"
Id="Package\ForEach Spravato File\Complete SQL Server Load"
TopLeft="59,488.25" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -8058,34 +8111,6 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
RelativePosition="Any" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
design-time-name="Package\ForEach Spravato File\Load PostgresQL Repository">
+ Capacity="4" 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 fdcd0dd..b0199ff 100644
--- a/SpravatoETL/SpravatoETL.dtproj
+++ b/SpravatoETL/SpravatoETL.dtproj
@@ -26,7 +26,7 @@
NB7014
- AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAO6XIHfjZM0evaVyi8h5QcgAAAAACAAAAAAADZgAAwAAAABAAAABQu18TEEXYe/lkzTsDzE1AAAAAAASAAACgAAAAEAAAANdmPZY6HMGv1cxGbipEnuqIAAAAQnCWwWokDUzYsIkVvGo3O3uxiOLw4VTdzhIgg8SDUhI951hZZ1oH4pbkRXDI5fDvrkEP3do/4f3OwZy+Ev9LlWxCUPzEE/LKN+tzU35l/7BVt0lTKC7p5IK8TPNMO5JOE9vFegrxLxOFJDux3THkA/xXl4NhjfC/kP6qcRlyrWRAHIAcsSiBNBQAAADwy+cHdltAwpKeoALGRDwLeGSbyA==
+ AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAO6XIHfjZM0evaVyi8h5QcgAAAAACAAAAAAADZgAAwAAAABAAAAA0FuaLSPIZFtDU2u7TB4gJAAAAAASAAACgAAAAEAAAAKGw+RSLoXaqBydRJfCJceqIAAAAKvLy7NkqbgQtIcJtapm/WMmSmJXM5Kn32lZZEoIZgDTTyCiDS+3DbFj4stY/YGwJK21jICJ6Glwll34xni2dXBujti2XzsrXDJPod1e+BxgzvzdIyA+Q0pyGXLjq+ejLvA26IfL/hHWexOF8BUCF3TZ3Q8vm13FUKfTukhj0toifKBw10NFqkRQAAABZ7qT4vmCw/cQmUymLGDMlHZdbVA==
1
@@ -42,10 +42,10 @@
SpravatoAuditImport
1
0
- 123
+ 135
- {CBFE7C3F-083F-436B-9785-C3F01CA841D0}
+ {1B00A5BE-7A2E-4984-9253-1F91C9E61E7D}
8
@@ -90,7 +90,7 @@
0
0
1
- AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAO6XIHfjZM0evaVyi8h5QcgAAAAACAAAAAAADZgAAwAAAABAAAADanA3MDD48GGSmPtK5UEW4AAAAAASAAACgAAAAEAAAAD7K3EGIES0uwppwm75qQTuIAAAA3Cj5uCYZYWyrZs/KRcIOIKZ2YG+PCvipEATeTtT1WW8Mldsmzc1iFaAAC1+7W6xwOkTK7fkCQcefLo1z+Ik8EaFmXvOOfHfqpM048wWfBGgPsrlr5VRp00E6p5SGfk1iJVMyJNcyqcdGGy9yeB0cMIkg+rvNT50cNj5F2gFidzhw9kHqyrK7bhQAAAAq5HsPkzPi0obAiP6Z8FF+BNnbxQ==
+ AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAO6XIHfjZM0evaVyi8h5QcgAAAAACAAAAAAADZgAAwAAAABAAAAC2vqfHH7mBFIBkGLcgu64NAAAAAASAAACgAAAAEAAAAIdEjJEuywa8ulW+Ek7KTD+IAAAAogV3kheQ22t635QpXEEABDjh/a/cm/1yJH8sdpmgDNYJ+zSv7jiWXDBrGxyq+4riQx3K9tjXvPJKTa24Ie14LVkZnUXPURXZiTePOJvzF+UumNmFwDW5T92dnEZPufA4ahzfRtNM0DX0+ve/HtAbgJt01AlNv02iJxXAAZZIvCAc72QiUhEUnBQAAAAH+LVcjWDC17RMoTL4oTsS/5kg/w==
18