- 2FA verification on password changes (#197) - Users must now verify with OTP when updating their password
- Custom request headers for SecureEndpoints (#250) - Configure custom HTTP headers for secure endpoint calls
- DevOps scaling endpoint for KEDA autoscaling (#243) - New endpoint to support horizontal pod autoscaling
- Date range filtering for Run Statistics - Enhanced filtering capabilities for run statistics queries
- Debug logging for report queries - Added GraphQL where clause logging to aid troubleshooting
- Admin user customerId filter in GetRunStatistics - Admin users now correctly filtered by customer context
- Nullable enum handling (#198) - REST responses return null correctly; GraphQL includes sentinel values
- Expired-run viewer log level (#248) - Downgraded from ERROR to WARN to reduce log noise
- Async Run Deletion System — Queue-based run deletion via RabbitMQ with DeletedRuns audit collection, GraphQL queries, and status tracking-
- Blacklist Pruning Handler — Automated maintenance task to remove stale recipient blacklist entries
- Linked Objects GraphQL Queries — New GraphQL queries for linked objects and orphan detection
- Communication Templates Configuration — ForgotPasswordEmailTemplate migrated to configurable CoreCommsTemplateSettings
- Billing Report Factory — New dedicated BillingReportFactory for CSV transformation with comprehensive logging
- MongoDB — New compound index on RecipientBlacklist collection for query performance
- RabbitMQ — New DeleteRun queue configuration for async run deletion
- Default DataLabel for CreateRunRecipient — IfsDataLabel defaults to "Document" when null or empty, preventing API errors
- Batch Recipient Failure Logging — Username and RunId now included in failure responses for better diagnostics
- GraphQL Report Queries Unified — RunStatistics queries migrated to StandardReportQueries schema with debug logging
- Maintenance Handler Pattern — Refactored for consistent pattern compliance
- ASIS HttpClient Resiliency — Migrated to IHttpClientFactory to prevent socket exhaustion
- Puppeteer Source File Not Found — FileStream now flushed after writing to prevent K8s file visibility issues
- SMS Reprocessing — Send stage reprocessing no longer reprocesses SMS when SMS is disabled
- Run Deletion Retention Enforcement — State and trial filters removed so retention policy is enforced regardless of run state
- Expiring Run Notifications — State filter removed from expiry query to ensure all qualifying runs trigger notifications
- Preferred Email Sender Reset — Dropdown now allows resetting to default value
- IfsData Swagger Display — IfsData property correctly displayed as dynamic object instead of string
- Duplicate Enum Entries — Removed duplicates in miscEnums GraphQL query
- Blacklist Moved Off Redis — Blacklist queries now use direct MongoDB lookups, removing Redis dependency
- Add detailed audit log entries for stage completion and timeout
- Refactored ValidateAllowedToBeUpdated to flatten nested conditions and
- added exception for RunDataSourceType.ManualFile - these runs can now be updated even when in processing/scheduled state
Users can now create and manage their own API clients directly, with secure OAuth2 authentication.
- Self-Service API Clients: Create and manage personal API clients without administrator intervention
- OAuth2 Authentication: Industry-standard client credentials flow for API access
- Zero-Downtime Credential Rotation: Blue/Green strategy supporting 2 active credentials per client for seamless rotation
- Credential Scheduling: Schedule future credentials with automatic activation dates
- Expiry Notifications: Token responses include warnings when credentials are approaching expiration
- Admin Oversight: Administrators can view, disable, enable, and unlock user API clients
New system for mapping and migrating objects between IIAB environments.
- Environment Management: Register and manage external IIAB environments
- Object Mapping: Map objects (Customers, Templates, RunTemplates, PreProcessors, PostProcessors, CMS Entities) between source and destination environments
- Smart Matching: Fuzzy name matching to automatically suggest object mappings
- Dependency Tracking: View dependency trees for objects before migration
- Destination Preparation: Automatically transform objects with mapped dependency references for the target environment
Comprehensive message queue health monitoring with Prometheus integration.
- Health Endpoints: New
/api/health/queue endpoint across all web applications
- Pod Health Aggregation: Single endpoint to view health status across all IIAB pods
- Prometheus Metrics: Queue connection state metrics for monitoring dashboards and alerting
Pre-processors can now make authenticated API calls back to IIAB during processing, using a configured access token from the RunTemplate or Customer.
Automated system maintenance for detecting and reporting orphaned runs in storage, with Slack notifications.
Complete framework upgrade from .NET 9 to .NET 10, bringing performance improvements, reduced memory usage, and access to latest language features.
- Improved message recovery with grace periods to reduce unnecessary reconnection attempts
- Replaced internal message queue with higher-performance .NET Channel implementation
- Configurable batch processing for stage messages to optimize throughput
- Reduced response payload size for ContinueStage endpoints on large runs
- Increased timeout for queue management queries to support large installations
- Added pagination for queue listing
- Lowered log level for routine service startup and scheduled task messages
- Date range filters now correctly apply when downloading ViewerPostsReport exports
Fixed an issue where messages could be redelivered indefinitely when a queue subscriber was in a partially disposed state, causing unnecessary load on the message broker.
Fixed an issue where the compile stage could stall when the last message arrived before other pods finished processing.
Fixed configuration files incorrectly being flagged as external.
Fixed credential authentication failures that could occur in timezones ahead of UTC.
Upgraded JWT authentication library to address a denial-of-service vulnerability.
Fixed a crash when the configured settings file path was empty.
- CMS Revision Admin Management - System Administrators can now manage CMS revisions
- GraphQL query GetCmsRevisionsAdmin for admin-only revision access
- Hard delete capability for revisions
- Version number updates for revisions
- Added SearchRevisionsByNameAsync for exact name matching
- Enhanced CMS revision control for System Administrators
- Improved configuration file handling in RunManager for better data consistency
- Enhanced run file processing logic
- Allow external runrecipient creation on a run with a pre-processor, if only the config file was loaded.
- Per-Run Queue Prefetch Override
- Runs can now specify a custom QueuePrefetch value (max: 6)
- Allows fine-tuning message consumption rate for specific runs
- Added to CreateRunModel, RunModel, and Run domain model
- Validation prevents values > 6 to maintain system stability
- Run-Specific Queue Notifications
- Added automatic queue notifications when messages are added to stage queues (Compile, Send, Export, PostProcess)
- Sends 12 notification messages per batch to ensure processing servers pick up new work promptly
- ShortUrls were being created even when SMS was disabled for a recipient
- Now checks SMS enabled status before creating ShortUrl to avoid unnecessary database writes
- Run instance start time was lost on re-runs
- Preserves Instance.Started timestamp when resetting run stage
- Ensures Started timestamp is set on PreProcessor stage if not already set
- Skip saving new recipients file when ExcludeNewRecipientsFile is set
- PDF Download Tracking (#91): Add PDF download count to Run Billing Report
- New CountDownloadPdfHotSpotsByRunId method tracks PDF downloads per run
- PdfDownloadCount property added to RunBillingReport model
- CSV export updated with "Pdf Downloads" column (34 columns total)
- Comprehensive unit tests included
- Compile Stage Optimization: Enhanced debugging and LastMessage delay logic
- Debug logging for runs nearing completion (< 100 remaining)
- Simplified LastMessage delay calculation based on outstanding count
- Warning logs when processing skipped due to completed state
- Includes Cancelled status in end processing checks
- Billing Report Optimization: Remove PhoneNumbers collection from OneTimePinBillingReport
- Reduces database storage overhead
- Phone numbers were collected but unused in reporting
- Billing Indexing: Fixed indexing on billing
- AWS SES SDK V2 support with configurable version selection
- OTP billing report with message count and phone numbers tracking
- RunSearchData option to Resend and Forward report
- OTP Billing report to manipulate
- Compile Stage Validation: Added validation to prevent runs from completing when recipients have not been compiled (IsCompiled=false)
- Uncompiled Recipients Counter: Added CountUncompiledRecipients method to IRunManager interface for tracking uncompiled recipients
- Configurable Validation: Added ValidateCompileCount setting to enable/disable compile count validation (defaults to false)
- SendStage Fallback Validation: Added defense-in-depth validation in SendStage that runs on first recipient
- Moved RunTemplate in OutputChannelLogReportModel
- Replaced SesVersion magic strings with constants
- Thread Safety: Improved thread safety for random generation of PDF zip path
- Audit Logging: Added audit log when run completes to track actual vs expected count
- Error Handling: Added timeout (5 seconds) and error handling to GetPublicIpAddress to prevent blocking startup
- Validation Simplification: Streamlined uncompiled recipient validation with early return for ExcludeIfsFile runs
- Bypassed optional parameter check on reports
- Startup Blocking: Fixed appliance startup failures when external IP service is unreachable by adding timeout and fallback to local IP
- Network Failure Handling: Added try-catch error handling for network failures with proper HttpClient disposal
- Added AdhocId to HotSpot model for adhoc document tracking
- Added RunTemplateId requirement for adhoc hotspots
- Added AdhocId and RunTemplateId filters to HotSpot GraphQL query
- Added GetPrintPdf HotSpot save support for ad-hoc documents
- Added Run vs Adhoc distinction to AnalyticsReport
- Added RunTemplate information to RunDeliveriesReport model
- Implemented DataLoader pattern for RunSearch GraphQL queries
- Enhanced HotSpot filtering with AdhocId and RunTemplateId support
- Improved query flexibility for hotspot retrieval
- Improved UpdateCustomerFromRun to set RunTemplateId
- Significantly reduced N+1 query problems through DataLoader batching and caching
- Improved system stability under error conditions
- CRITICAL: ACK redelivered messages before processing to prevent infinite redelivery loops
- Corrected merged deliveries report header handling
- QueuePerRun Lifecycle Cleanup System - Implemented immediate cleanup of run-specific queue managers across all pods via SystemMessages fanout broadcast when runs complete/fail/cancel
- RunQueueRemove SystemMessage Type - Added new enum value (6) for queue lifecycle management with RunQueueRemovePayload model
- QueuePerRunQueue.RemoveRunSpecificQueueManager() - Gracefully disposes queue managers with 5-second wait for active messages and publisher confirms
- QueuePerRunQueue.HandleRunQueueRemoveMessage() - Processes RunQueueRemove messages received via fanout broadcast
- Six Prometheus Metrics - Track cleanup requests, completions, skips, failures, and message publish/receive counts
- RunTemplate.HasGZipSource Property - Enables opt-in GZip-compressed JS/CSS file serving for templates with fallback to uncompressed files
- PackageModel.HasGZipSource Propagation - Inherits GZip settings from RunTemplate for viewer compatibility
- SystemMessagePayloadTests - Validates serialization/deserialization and null/invalid payload handling
- QueuePerRunQueueCleanupTests - TDD tests covering idempotency, non-existent queues, non-final states, and wait logic
- SystemMessagesQueue Integration - Initialized in SingleQueueManagers.StartListener() for fanout broadcasting
- Disabled RabbitMQ Publisher Confirms - Changed confirmPublish to false in SingleQueueFactory due to RabbitMQ.Client v7+ API changes
- MongoDB Dynamic Serialization - Updated to RelaxedExtendedJson output mode with improved fallback error handling
- SystemMessagesQueueIntegrationTests - Removed flaky CollectionTimestamp assertion for improved test stability
- Enhanced Logging - Added server info and context to queue cleanup log messages for better diagnostics
- Graceful Confirm Handling - Queue cleanup waits for confirms but logs as WARN (not ERROR) when confirms disabled
- Queue Manager Memory Leak - Run-specific queue managers now cleaned up immediately instead of persisting indefinitely
- Missing ISingleQueueManagers.GetServerIpAddress() - Added method to interface for SystemMessage source IP tracking
- Missing ISingleQueueManagers.AddToSystemMessagesQueue() - Added method to interface for cleanup message publishing
- PackageModel.HasGZipSource Not Set - Now properly inherited from RunTemplate in PackageManager._inheritRunTemplateSettings()
- Missing GZip Settings in Adhoc Workflow - Added GZip configuration propagation to adhoc package creation
- Test Mock Setup - Added ServerInfo and SystemMessagesQueue setup to SingleQueueManagersTests
• System Message Queue (Issue #63): Pod-to-pod notification system enabling real-time communication across all IIAB appliances using RabbitMQ fanout exchange for broadcast messaging
• Queue Status Monitoring: Comprehensive queue health monitoring system with detailed status reports for all queue types (SingleQueueManager, QueuePerRun, ActivityQueues)
• Run Control Operations: New API endpoints for graceful queue shutdown during deployments with six operations (PauseAllQueues, ResumeAllQueues, PauseAllRuns, ResumeAllRuns, PauseRun, ResumeRun)
• Communication Templates Database Storage: Default communication templates now stored in MongoDB for centralized management and retrieval
• Prometheus Metrics: Scheduled run task monitoring and system message queue observability metrics for operational insights
• MongoDB Driver Upgrade: Updated to MongoDB C# Driver 3.x with enhanced type safety and performance
• Queue Error Visibility: Slack alerts now sent when messages fail and enter error queues with detailed diagnostic information
• PDF Manager Singleton: Ensured singleton pattern for PDF manager in Application pods to prevent resource conflicts
• Queue Initialization: SystemMessagesQueue now eagerly initialized during startup to ensure all pods receive broadcast messages
• Data Prompts Enhancement: Users can now view their own packages without additional authentication prompts
• Line Ending Handling: Improved cross-platform line ending processing for consistent text rendering
• Error Handling: Added comprehensive try-catch blocks around Prometheus metrics to prevent business logic interruption
• Race Condition Fix: Queue creation now uses independent settings copies (JsonClone) to prevent concurrent queue creation conflicts
• MongoDB Aggregation Queries: Changed BsonDocument.Add() to AddRange() for compound field queries (e.g., "IsResend;IsForward") to comply with MongoDB 3.x stricter type checking
• GUID Serialization: Reverted MongoDB GUID representation to CSharpLegacy format to support existing database records and prevent deserialization failures
• Message Loss Prevention: Fixed race condition in CreateManagerForRun where concurrent queue creation caused RabbitMQ to silently discard failed messages
• Lazy Initialization Issue: Resolved SystemMessagesQueue lazy initialization causing pods to miss broadcast messages during startup
• QueuePerRun Active Messages: Added proper active message clearing and producer-consumer synchronization checks
• HotSpot Validation: Enhanced logging for invalid HotSpot payload detection in controllers and managers
• Async/Await Consistency: Ensured proper async/await usage across all SubscribeAsync queue operations
• Integration Test Timing: Prevented timing assertion failures in QueueStatus collection tests by capturing timestamps immediately after collection
▸ Enhanced SMS Tracking - SMS responses are now automatically linked to specific runs, providing better visibility into message delivery status and run performance
▸ Improved Run Management - Enhanced run deletion process that automatically handles cleanup tasks, reducing the need for manual intervention
▸ Development Framework Improvements - New structured development workflows to ensure consistent feature delivery and quality
▸ System Stability - Upgraded dependency management system for improved reliability, security, and faster updates across the platform
▸ SMS Delivery Insights - Better tracking and reporting capabilities for SMS communications, making it easier to monitor message delivery and troubleshoot issues
▸ Performance Optimization - Enhanced database performance for SMS-related queries and automatic cleanup of older data to maintain system speed
▸ Message Processing - Improved handling of background tasks with better error recovery and retry mechanisms
▸ Security Enhancements - Strengthened access controls and data filtering to ensure users only see information they're authorized to view
▸ Quality Assurance - Expanded automated testing to ensure new features work reliably before deployment
▸ Build Process - Resolved compilation issues that could occur during system updates
▸ Package Management - Fixed inconsistencies in software component versions across the platform
▸ Access Token Management - Corrected an issue where some token properties weren't being properly updated
▸ System Warnings - Addressed non-critical warnings that appeared during system maintenance
- Username Alignment – Ensured that the login username matches the registered username.
- User Unlock Adjustment – Users are now automatically unlocked if their password is changed or updated successfully.
- Data Prompt Enhancement – Added question display to the DataPrompt Answer view.
- User Notes Enhancement – Added support for additional user notes.
- Data Prompts Fix – Resolved issue where users were unnecessarily prompted for their own slips after logging in
- ASIS Register Confirm
- Added functionality to return RunTemplate version(s) for compare
- RunTemplateOverride Settings
- Functionality to retrieve ConfigForProcessing from post-processor
- RunRecipientAuditLog GraphQL queries
- Fix data prompt issue - logged in user
- Registration - add additional validation on email
- Allow users with rights to - view data prompts
- The front-end (Oakmoon) migrates from CloudFront to a Kubernetes-hosted solution using NGINX.
- Updated PackageModel for HistoryItems - ExpireDate
- Fixed Adhoc Print Page logic
- Open Runs - Retention Period (Data & Source)
- Remove Scheduled Runs form History
- Fix OTP Billing report
- Fix url double slash issue - viewer
- OTP SMS entries now included in the Billing report
- Allow nullable CostCentre field - RunTemplate (GraphQL)
- Additional Logging in redis on dispose
- Additional logging on File Not Found issue
- Refactoring of ISlackNotificationSender to IAlertSender (Allow additional providers)
- Static attachment count added to Run Statistics report
- Restricted download of processed data and run-recipient–specific data to System Admins, Company Admins, and users with the “May_Download_RunRecipient_Files” role
- Ability for Run users to close an open run when no longer required (e.g., switching off open run on UAT for template change testing)
- Added isCompiled descriptor on RunRecipient for GraphQL query
- Package Expiry Support: Added HasExpired and ExpireDate properties to PackageViewModel and PackageModel, along with logic to manage and evaluate expiration.
- Puppeteer Stability Enhancements:
-- Added a targeted catch block for TargetClosedException and mapped it to ProviderUnhealthyException to improve error classification.
-- Improved browser connection error logging for both Puppeteer and Playwright, aiding in quicker diagnostics.
-- Fixed asynchronous provider initialization issues to ensure more reliable startup behavior.
-- Enhanced browser reset functionality for both Puppeteer and Playwright to improve recovery and resource cleanup.
- Run Notification Logic: Prevented sending run results to RunStartedBy when the run is anOpenRun.
- PDF Encryption Support: Added PdfEncryptionType to the PdfSourceFile section to enable encryption settings when ProcessingType is Separate.
- Data Encoding Correction: Resolved an issue in CompressedProcessedData to ensure it uses UTF-8 encoding consistently.
- Run Recipient Update: Prevented updates to run recipients in consolidated - when the run is an OpenRun.
- Nullable Value Handling: Resolved issues where nullable objects were accessed without validation by ensuring values are present before use.
- Null Reference Handling: Fixed NullReferenceException scenarios by implementing proper null checks and fallback handling.
- Expire Date Logic: Corrected handling of ExpireDate for one-time view runs to ensure accurate expiry behavior.
- Password Change Tracking: Updated logic to correctly set LastPasswordChangedDate when a user's password is changed via the Update User screen.
- Added consolidated check for Open Run functionality. (KANIIAB-540)
- Added reference lookup for User Report Download. (KANIIAB-511)
- Added restrictions and filtering on User Reports. (KANIIAB-17)
- Scheduled run updates and improvements to scheduled run logic. (KANIIAB-513)
- Adjustments to handle RunCreatedBy and RunStartedBy null scenarios more gracefully.
- Improved test coverage and ensured correct setting of RunStartedBy.
- Fixed SendPostSend issue to ensure post-send operations run correctly.
- Added Scheduled task: logs to the application server every 30 minutes.
- Updated email regex pattern to better align with [RFC 5322] and [RFC 1035]; now uses GeneratedRegex attribute for improved performance and compile-time validation.
- Added logging and refactored SendPostSend to handle potential NullReferenceExceptions more safely.
- Enhanced logging and validation in navigation flows for both Playwright and Puppeteer to aid debugging and reliability.
- Added Sequences count to RunRecipient Summary Download.
- Added RunAuditLogs: now removes from files and resets runs as needed.
- Adjusted _sendSmtpMessage - Bcc was added incorrectly
- Refactored ResendRunResult: improved structure and added email validation.
- Resolved intermittent GetPrintPdf issues by saving PackageModel before AutoGenerateOnlineViewPdf.
- License & Pat Monitor
- Start Multiple runs
- Customer Same name validation
- Upgrade Hotchocolate to 15.1.6 (GraphQL Client)
- Try to locate a Global CMS Entity for the public ID and version combination if not found in the RunTemplate package items.
- Added Setting to RunTemplate to Enable PrintPageLogic
- Fix CMS path items for new urls
- Prevent Editing Live Run Recipients
- Bypass Email Restrictions on Forgot Password
- Cater for new URL changes in viewer for cross origin and print tab
- Allow Metadata from run templates to be used for open runs
- Added an endpoint to download generated reports as a single file
- Delivery Reports via Open Run
- Additional Queries for RunAuditLog,RunProcessorAuditLogs and RunProcessLogs By RunId
- Added additional error handeling to RecipientBlacklist Delete
- Added additional logging on initiating and waiting of runs
- Upgraded PuppeteerPdfService / PlaywrightPdfService & pdfSharp to latest stable version
- Adjustments to Scheduled run
- Added additional logging on Miscellaneous Queues (AddToQueue)
- RunTemplateReference on Run Recipient
- Fix Resend - Subject should be Original and not Run Template value
- GetPrintPDF endpoint now creates a hotspot entry when called.
- When Enabled, CC and BCC fields are now validated against the blacklist to prevent sending to blocked addresses.
- Added UrlHelper to ensure compatibility with new URL formats, including support for subdomains.
- RunStatistics report GraphQL queries now function as expected.
- Rebuilding user history now includes all associated emails, both primary and secondary.
- Fixed issue where ConfigForProcessing was not found
- Added functionality to retrieve template files for live runs from storage
- Added indexing and TTL to BlacklistAuditLog Collection
- Ensure all sequences are sent without the need of a RunTemplate Id
- Implemented functionality to identify whether a recipient is a registered user
- Refined the Exclude Run Recipients functionality to enhance process efficiency
- Used correct filter input on download of RunStatisticsReport
- Removed mobile registration from registration process
- Added delete runs endpoint
- Added functionality to enforce password expiry policies
- Added functionality to reprocess specific failures
- Added testing restrictions
- Added additional logging for Gitlab Template source paths
- Added functionality to do audit trail of recipient black list
- Implemented password history restriction: Users can no longer reuse any of their previous 5 passwords.
- Enhanced GraphQL queries related to User Groups.
- Removed deprecated web hosting and unused satellite resources (part of the IIAB project).
- Support inline file download from header and query-stringSupport base64 file download from header and query-string
- Added TryGetValue in the JsonHelper with boolean and null return if not found
- Added TryGetPackageItemByName to the CsmRazorHelper with boolean and null if not found
- Flatten CDATA sections for ASIS Api Xml to JSON transform
- Resolved an issue with Prometheus label ordering.
- Support inline download of pdf documents using the x-download-inline" request header.
- Run Delivery Report filters on user's assigned RunTemplates
- RunRecipientCreated of updated callback for preprocessors
- AppendRunRecipientData to add new data to and existing run recipient while pre-processing
- GetRunRecipient while pre-processing to assist with consolidated documents.
- New metric to measure the RabbitMQ channel creation
- Added enum AuthenticationType to Miscellaneous Controller's endpoint for enum translation
- Added continue sending endpoint for when a run fails ons sendstage
- Refactored reports download to be as accurate as the search
- CMSRazorHelper supports proxy URLs for clients who keep
- CMSRazorHelper supports finding package items by the exact name
- Fixed Stage counter mismatch causing stages to timeout due to mismatch counter
- Replace-Channel-With-Producer-Consumer (RabbitMQ)
- Added download of resendAndForward report
- Upgraded RabbitMQ to the latest version, enabling asynchronous processing for enhanced performance and scalability.
- Delivery Report: SearchFields are now optional for report generation.
- Resolved issue with the download delivery report query, ensuring that the correct filter is applied for more accurate results
- Improved error handling—invalid logins now display properly instead of causing a deserialization error.
- The dates property on a user is no longer overridden by null during updates, as it is now ignored in the mapping.
- Error messages with newline characters no longer cause the error column to split onto a new line.
- Added AccessToken CRUD operations.
- Introduced GetJsonField in JsonHelper to assist Template developers.
- Implemented PGP encryption for DeliveryReports to enhance security.
- Updated MimeKit as part of PGP encryption implementation.
This may affect preprocessors relying on an older MimeKit version.
- Corrected authorization handling by using the token as the primary authorization parameter instead of an optional injection.
- PdfSourceFile batch processing
- Stage Reprocess role change from SystemAdmin to RunUser
- Ensure browser pages are closed when pdf conversion complete
- CmsLinkedReference updates Runtemplate values
- Validation of OpenRunRecipients mobile number with validation on Test Restrictions
- License monitor process can now deserialize given DateTime when a license is about to expire
- Adjustments to reduce memory consumption and address memory leaks
- New feature to relay HotSpot data via a webhook. Configuration required on a run template and actual template source
- Webhook for LiveRun events
- Update to the .NET 9 framework
- Puppeteer update
- Additional metrics to allow new InfoSlips Processing Insights dashboards to be created
- Regression testing required on all package model code (Adhoc view, forward as well online view, preview and history links)
- Adjusted Connet SMS Provider to allow credentials from access tokens (Customer and RunTemplate)
- Allow a reason for disabling SMS, Email and Export stages in the *Output.json(.razor)
- Allow scheduled Analytical Report data to be downloaded as CSV
- Active Runs scheduled task setup error
- Add XmlToJson/Convert functionality to ASIS Api
- RunRecipient Summary: Can now be downloaded in gzip format for a run.
- MTP Support: SystemAdmin can now send SMTP via the API.
- Allow scheduled delivery report detail to exclude stages that are not enabled.
- Fixed Startrunformanualupload - did not complete each stage when run was created as live initially
- Functionality to generate ConfigForProcessing for generic processor (Csv/Excel) - endpoints
- Added CompileOnly, EmailBodyOnly and Dont Create history on OpenRuns
- Added RecipientBlacklisted email lookup to GraphQL
- Added AzureDevOps Template Source Provider
- Added Obfustication to AccessTokens - SecretKey values (Customer / Run Template)
- Added Configurationfile check on manual upload file runs
- Added setting for max days in run statistics graphql
- Fixed OpenRun postprocessing for sequences
- Delivery Reports - returning non-nullable error
- CMS Revisions fallback on Live runs
- OpenRun PrePorcessing no longer overrides ProcessedFiles when sequences are being processed
- GraphQl query to allow filtering on processed data
- Added logging to improve fault finding on report generation webhooks
- Added logging to improve fault finding on Gitlab Template extraction process
- Prevent run from failing if RunRecipient fails
- Clear Gitlab cached PAT if expired
- Resolved case sensitive issue with daily ReportGeneration
Fix Reporting to use ReportBaseUrl
- PrintPdf as Base64 string
- Searchfield tolower case compare
- Webhooks - delete fix
- Slack messages with attachments - fix comments not showing
- Fix Reporting to use ReportBaseUrl
- Added new endpoint for system admins with the role May_Reset_Live_To_Trial_Run to reset a LiveRun to Trial.
- Added WebhookType and DeliveryReportDetail to miscellaneous enums.
- Added search field matching with the correct RunSearchData for DeliveryReportGenerator.
- Expose linked CmsEntities to a Run
- Added setting to allow different encryption levels on PDF (Puppeteer/Playwright)
- Added missing Enums from RunTemplate to MiscellaneousHelper.
- Antiforgery - Add correct value to header.
- Slack Messaging file upload migration to latest methods
- OpenRun Preprocessing for single file uploads
- Daily report generation to include Open Runs
- Daily Report Generation to ignore commas
- Added Open run with processor functionality
- New anonymous run attachments are accessible from the email body and external links
- Allow override IFS file name on Export (OverrideIfsFileName)
- Adjusted Run From Storage to cater for zip data
- Add the ability to specify a run template and a date range when querying run search data
- Resend Run Recipient with multiple sequences - Adjust functionality
- Add OpenRuns with a closed status in the scheduled run deliveries report check.
- Fixed pattern match case on extension SFTP
- Source Data Retention - Remove only if Run Recipients already Created
- Allow downloading Config file from alternate location when Source Data has been removed
- Added event handler for ProcessExit on Appliances to ensure graceful exit
- Handle quotes in bounces errors when generating the new deliveries report
- Fix concurrency issue in pre-processing recipients
- Set start and complete dates op open run# 2024/09/06
- Add Redis cache to pre-processing. Allowing pre-processor developers to cache data and not add to instance memory.
- Upgraded to the latest database drivers.
- Upgraded to the latest OData drivers.
- Add a new queue message to the queue status controller on API allowing System Administrators to start queue processing manually.
- Add System log-level messages to monitor non-WARN and ERROR status in Graylog.
- Update the PDF tester to include Puppeteer and Playwright.
- Remove unnecessary database calls on live runs, improving performance.
- Ensure CMS entities use the latest revision version number when changed from Draft to Non-draft.
- Clear Linked CMS references before sending live runs.
- Ensure the Generate Report queue does not get deleted when all consumers are removed from the queue.
- Fix queue manager status for paused queues.
- Change the counter increment order to prevent queue message count and process count from being mismatched.
- OpenRunRecipient completed webhook registration
- Added webhook tests from the Webhooks controller (/api/webhook/test)
- Additional masks for system settings stored in the database.
- Expose activity status on all pods.
- Improve metric cardinality on all pods.
- Improve bounce management for SendGrid email sender.
- Added validation to create open run recipient to prevent run recipients from being created when a run is in a failed state.
- Ensured Possible OutputChannelLogs on RunRecipients created by using RunFromStorage
- Prevent duplication Cms DisplayName extension
- Prevent updating datetime on runs when updating trial recipients
- OpenRunFromStorage - OpenRun RunRecipients can be created through RunFromStorage mechanism.
- OpenRunRecipients Sequences - OpenRunRecipients can now be sequenced.
- BREAKING CHANGE: CMS RunAttachments will use display name instead of the entity name.
- ExportContent.razor and PdfContent.razor ignores empty values used in InjectCssFiles as well as preventing css injection in pdf documents
- Additional audit on non run related communication.
- Fixed download PDF with excluded file in content settings (edited)
- Allow Preserve Email Settings (Reply,From etc.) on forward
- RunDeliveries With SearchData GraphQl
- Handle SIGTERM
- ContextData to GraphQl Errors
- Allow mail/sms template notifications from settings (Registrations, Trials etc.)
- Fixed 2FA - QrCode Replacement
- Run Static Attachments - POST endpoint
- Ensure ContentSettings (PdfServiceType) and other fixes on pdfwithparams
- PDF Multiple Attachments from PdfContent
- PDF Support Single Page Routing and QueryString
- PDF Handle Timeout with ready indicator / selector
- Base64 Attachments / IFS Data - Open Run Recipients
- Prevent resend on InfoSlips if no access granted
- Customer query corrected role
- Fixed roles casing
- Enable the run recipient sequences to be sent seperately when configured on the run template
- Allow users that have the May_Expire_Run and May_Expire_RunRecipient roles to expire items which will use the default expiration message. Allow SystemAdministrators to override the default expiration message.
- Improve performance when using 7Zip Compression helper
- Prevent PdfSourceFiles from being excluded when there is only one filename in the list
- Add Created CustomerId to the logged in user when created with Non System Admin user and has correct permissions
- Prevent export stage from not completing if it takes too long
- New endpoint for batch createRunRecipient with auto sequencing
- Updates to slack message on deleted users
- Added ExcludeWhenCombining property - on PDF Service Providers
- GraphQL - Preprocessor Queries
- CMS Feedback
- User Effective Roles Method
- Effective roles reflect the correct added and removed roles
- RunStatistics report is only available to the role May_List_Run
- Run From Storage - Process Compressed file / Save Processing Result
- Billing Report Generation
- CMS Feedback Settings from CMS
- CMS Url Tracking / Hotspot Action
- Processor Helpers:
-- GetRunRelatedObjectAsync Now included access to CMS Entities configured for the run.
-- GetAccessTokenByName New. Allow developers to store credentials as security keys on run templates and not required to hardcode it in the DLL.
- CmsRazorHelpers: (https://docs.infoslipscloud.com/en/code/cms-razor-helper)
- New methods should allow developers to remove a lot of boiler plate code out of the templates.
-- GetPackageItem
-- GetPackageItemByName
-- GetPackageItemsByType
-- PackageItemExists
- When a user gets deleted a slack notification will be sent
- Adjustments to log FileNotFound errors as WARN
- Adjustments to log Invalid Package or Session Expired as WARN
- Run From Storage now support compressed json array processing
- Exclusion option of New_RunRecipients_File from run report email
- Run Expiration enhancements
- Fixed issue with uploading Zip file for processing, and Content length error
- Adjusted non critical errors to log as WARN
- Slack notification when a non System Admin user creates a customer
- Disabling of GraphQl client and GraphQl client in production environments
- Updated Defaults (Template / RunTemplate) Sourcedata Retention to None
- Update (Template / RunTemplate) Sourcedata Retention to None
- Slack notification when InfoSlips license key is about to expire
- Forgot Password - Return True on invalid email/user
- Processing Web - service provider change (non static)
- Added check to not allow updating create history / source data retention / data retention - on run template when live runs linked to run template
- Added long description to run
- Added functionality for open run name template
- GraphQl - added filter on CustomerGroup By Customer Id
- Added functionality to process Run From Storage
- Added functionality to check if shared.zip exists before override *(adhoc forward)
- Added functionality to use Compiled Regex for faster email / mobile number validation and allow _ before @ in emails
- Remove Run Recipients From Run - Adjusted to use background process and improve speed
- Added functionality to set the Prefetch count for Puppeteer
- Fixed error message on user/password validation to show "invalid credentials"
- Fixed nullreference error on mobile number validation
- Fixed GraphQl search on Adhocviewlogs - sendlog / sento
- Fixed GraphQl Customer filter when admin user on Reports: Hotspot/Adhoc viewlogs/Viewerpost/url tracking/recipient blacklist/system user
- Fixed AsyncReport label mismatch error on prometheus
- Expire Run - Fixed 405 Method Not Allowed
- Puppeteer Upgrade and font resolver functionality
- Functionality to check Role with additional formatting added - applied to "May List Output Channel Logs"
- Migrating from elstaic beanstalk to kubernetes
- Adding Puppeteer PDF service to production
- .Net 8 Upgrade
- Send Run Report to Alternative location - On Resend Run Report / Expire Run
- Run Statistics report now has compiled count column
- New Sms provider has been added
- Cascading update only updates trial run items
- Send Slack Message with Attachment on Alternative Location Run Report Failure
- CMS tracking url supports any case url
- CmsFeedback (CmsEntity, CmsRazorHelper and CmsFeedbackReport)
- GetCmsContentPath in CmsRazorHelper (UrlTrack, CmsFeedback)
- Multiple Id's for filter criteria added
- Fix UrlTracking in ProxyAPI
- Hide Delivery Report for users that don't have OCL roles
- RunSearch Index Data Graphql
- Preferred Email Sender - Configured per Customer/Run Template
- Slack Notification Test endpoint
- Puppeteer Header/Footer Settings - All/Odd/Even/First/Last and Specific Page
- Adjusted Report Types Graphql
- PreferedPdfService - Renamed "PreferredPdfService"
- Added SMS provider Response tests
- Removed Scheduled Runs from User History
- Added UrlTracking as a Cms type
- Added compression to Puppeteer
- Added run search data for mail body only runs
- Visually enhanced monitoring alert detail
- User experience updates for Document Signatures
- Split report url based on report request origin
- Added AWS region endpoints from system name functionality
- Emailed report link will now point to the environmet that the report was generated from
- Allow email bodies to use static attachments as CID images
- Allow Pre-Processors to access Custom, RunTemplate and Template objects
- Allow Post-Processors to access Custom, RunTemplate and Template objects
- GraphQL Report Query Fixes for V2 Admin site
- Increase Ad-hoc Pdf generation concurrent count
- Cascade update
- Apply user security to OutputChannelLogs query
- Added RazorClient to test Razor Transformation
- Removed email verifaction resulting in database performance increase
- GraphQL permissions updated to allow more users access to OutputChanelLogs query
- Added new SMS Provider
- Added endpoint for SystemAdmins to clear users cache
- Allow custom s3 bucket for async reports
- Added MockApi to system for testing
- Added functionality for SecureEndpoints to support headers
- Optimized Blacklist CRUD operations
- Updated DB scripts to remove unused collections and trim indexes
- Canceled Runs will create canceled OutputChannelLogs for outstanding run recipients
- Added download report for all graphql standard reports
- Fix error causes on run when CMS search data entity is linked to a specific customer
- User Report has extra fields, Created Date and Created By
- Added Roles on specific UI Elements
- Added failure type to mail send result
- Added mechanism to load and resolve shared template code xslt code templates
- Allow ASIS Templates to store shared XSLT files in CMS
- Create Open Run Recipient adjusted to work on swagger
- Reports now add text qualifiers if a column contains the delimiter character in the value
- Moved AsyncProducerConsumerQueue and created tests for it
- When a preprocessor fails, a better error message will be displayed
- Start moving release notes to Docs site - details will be shared as soon as the move is finalized.
- Expose EmailSender Status on GraphQL
- Additional logging for ASIS API
- Upgrade to latest Dotnet 6 release
- Decrease black list batch size when populating a new Redis server
- Upgraded to HC 13.3.3 - Includes BCP v7
- Add missing CMS roles to GraphQL queries allowing users with CMS roles to access CMS in
- Fix customer group filter for global CMS entities
- Viewercards - don't show mailbodyonly
- Prevent search data to be added by the template files as well as run shared data in the compile-on-demand flow