Release Notes: Difference between revisions

From Obsidian Scheduler
Jump to navigationJump to search
No edit summary
No edit summary
Tag: Manual revert
 
(185 intermediate revisions by 2 users not shown)
Line 1: Line 1:
Please review our [[Upgrading_Obsidian|Upgrade Instructions]].
Please review our [[Upgrading_Obsidian|Upgrade Instructions]].
Read about our [[Planned_Releases|Planned Releases]].
Looking for old release notes? See [[Release_Notes_-_Older_Releases|Release Notes - Older Releases]].


<div class="toclimit-2">__TOC__</div>
<div class="toclimit-2">__TOC__</div>


== Obsidian 4.1.0 ==  
== Obsidian 6.4.0 ==
Released February 2017.
Released December 2025


=== Features / Enhancements ===
=== Enhancements ===  
* [[Admin_Jobs#Nickname.2C_Class_and_Folder|Folder]]/tag support for jobs.
* New [[Built-in_Jobs#Obsidian_Execution_Statistics_Job|Execution Statistics Job]] and built in [[Admin_Job_Stats|UI]] and [[Embedded_API#List_Stats|Embedded API]] and [[REST_Endpoints#GET_a_list_of_job_execution_statistics|REST API]]


==== Bug Fixes ====
=== Bug Fixes ===
* UI issue in Job Execution Subscriptions and Templates - selected jobs now displaying correctly after save/refresh.
* UpdateConfigurationAction no longer fails in non-native Authentication mode if an empty Users element is provided.


== Obsidian 4.0.2 ==
* Fixed issue preventing [[Admin_Jobs#Deleting|job deletion]] when resubmissions of failed executions existed. Bug existed in UI and APIs.
Released October 2016.  
* Fixed UI styling issue for [[Admin_Jobs#Deleting|job deletion]] where checkbox label did not appear.


=== Features / Enhancements ===
== Obsidian 6.3.3 ==
* [[Implementing_Jobs#Parameterization|Job Parameter]]s now support an optional <code>description</code> to be displayed in UI Help.
Released November 2025


==== Bug Fixes ====  
=== Enhancements ===  
* Fixed an issue where [[Cron#Special_Character_Usage|Cron special character]] <code>L</code> would not work if specified as the only value in a field.
* [https://web.obsidianscheduler.com/obsidianapi/com/carfey/suite/security/LdapAuthenticator.html LDAPAuthenticator] supports configurable check user active override - com.carfey.suite.security.LdapAuthenticator.checkActiveAttribute
* Fixed 3.8.0 MySQL upgrade script.
* [https://web.obsidianscheduler.com/obsidianapi/com/carfey/suite/security/LdapAuthenticator.html#isUserActive(javax.naming.directory.DirContext,java.lang.String) LDAPAuthenticator.isUserActive(DirContext,String)] visibility increased to protected to allow for functionality override in subclasses.
* Fixed an issue where Obsidian continued to attempt regular licence verification after a valid site licence had been configured.
* Fixed an issue where table prefixes weren't used in all lookups.


== Obsidian 4.0.1 ==  
=== Bug Fixes ===
Released August 2016.


==== Bug Fixes ====
* Correct LdapAuthenticator case with delimited configuration where active check wasn't applied.
* Fixed bug where a chained job that became conflicted would not evaluate chain conditions once it was no longer conflicted.
* [https://web.obsidianscheduler.com/obsidianapi/com/carfey/suite/security/LdapAuthenticator.html#isUserActive(javax.naming.directory.DirContext,java.lang.String) LDAPAuthenticator.isUserActive(DirContext,String)] javadoc added for isUserActive fully detailing the implementation.
* Fixed catalina.base bug and dos line endings in jetty.sh script in bundled jetty server.
* Fixed job parameter edit box resizing bug.


== Obsidian 4.0.0 ==  
== Obsidian 6.3.2 ==
Released July 2016.
Released October 2025


=== Features / Enhancements ===
=== Enhancements ===  
* All New [http://obsidianscheduler.com/screenshots/ User Interface]
* Notification failures now trigger Dispatch category Error level event on first failure. For use in log alerts and Event Hooks.
* Obsidian is now built using [[Getting_Started#Supported_Platforms|Java 7]]. No longer supports Java 6.
* [[Getting_Started#Really_Quick_Start_With_H2_and_Jetty|Quick Start]] now uses Jetty.
* Many [[Advanced_Configuration#Dependent_Libraries|updated libraries]] including some that had been updated to Java 7.  
** ''Breaking Change'' New H2 library. If you're using the H2 database, you will want to look into [[Initializing_and_Restoring|exporting and restoring]] your Obsidian environment's configuration.
==== Bug Fixes ====
* [[REST_Endpoints#GET_a_system_restore_configuration|GetConfiguration]] filtering no longer fails when Templates/Subscriptions are job targeted.


== Obsidian 3.8.0 ==  
=== Bug Fixes ===
Released June 2016.


=== Features / Enhancements ===
* Notification failures no longer log on every failure reducing chatty failure logs.
* [[Job_Features#Resubmission_.26_Ad_Hoc_Runs|Ad Hoc]] runs now may be submitted multiple times per minute. [[Chaining|Chains]] may result in target jobs multiple times per minute. Existing behaviour of [[Admin_Jobs#Execution_.26_Pickup|Chain All]] job configuration remains unchanged.
* No-arg constructors added to multiple JSON serializable candidate POJOs missing them. Addresses GSON's workaround use of sun.misc.Unsafe.
* [[Built-in_Jobs#Script_Job|Script Job]] now supports best-effort interruption.
* APIs for GET System Restore Configuration support filtering for both [[REST_Endpoints#GET_a_system_restore_configuration|REST]] and [[Embedded_API#Get_System_Restore_Configuration|Embedded]].
* [[Implementing_Jobs#Parameterization|Context]] for job execution now supports retrieving the chain source job config, when applicable. See also the Javadoc for [http://obsidianscheduler.com/obsidianapi/com/carfey/ops/job/Context.html#getSourceConfig() Context].
* [[Getting_Started#Setting_Host_Names|Host names]] maximum length increased to 255 characters from 50.


==== Bug Fixes ====  
== Obsidian 6.3.1 ==
* Fixed an issue where [[Admin_Jobs#Execution_.26_Pickup|auto-interrupts]] were not firing.
Released August 2025


== Obsidian 3.7.1 ==  
=== Bug Fixes ===
Released April 2016.


=== Features / Enhancements ===
* Fix failure response codes on [[REST_Endpoints#GET_health_details_on_an_existing_scheduling_host|REST health endpoint]]
* Job APIs windows now with improved locking/blocking on schedule modifications.
* Fix automatic upgrade issue from 6.1.0 to any of 6.2.0, 6.2.1, 6.3.0
* Fix auth issue when [[Admin_User_Management#Multi-Factor_Authentication_.28MFA.29|MFA]] is enabled that allows REST access when account has been locked out due to MFA not being setup.  [[Contact_the_Obsidian_Scheduler_Team|Contact us]] if you need workaround details for earlier versions.
* Fix native auth issue that allows REST access when account has been flagged as inactive.


==== Bug Fixes ====  
== Obsidian 6.3.0 ==
* [[REST_Endpoints#GET_a_system_restore_configuration|GET SystemRestoreConfiguration]] no longer fails when using non-native authentication.
Released July 2025


=== Features / Enhancements ===


== Obsidian 3.7.0 ==
* Cron day of month expansion for [[Cron#Special_Character_Usage|day of week proximity]] using [[Cron#Examples|~]]
Released March 2016.
* Annotation based job and chain configuration [[Initializing_and_Restoring#Annotation_Initialization|initialization]]
==== Features / Enhancements ====
* Health endpoint with details for Job Queuer and Job Spawner - [[REST_Endpoints#GET_health_details_on_an_existing_scheduling_host|REST API]] or Embedded API [https://web.obsidianscheduler.com/obsidianapi/com/carfey/ops/api/embedded/HostManager.html#getHealth(java.lang.String) by hostname] or [https://web.obsidianscheduler.com/obsidianapi/com/carfey/ops/api/embedded/HostManager.html#getHealth(long) by host id]
* New maintenance job [[Built-in_Jobs#Disabled_Job_Cleanup_Job|Disabled Job Cleanup Job]].
* JDBC URL construction from parts [[Advanced_Configuration#Database_Properties|host/port/databaseName/dbType/oracleSid]]
* Support for parameters that are [[Implementing_Jobs#Parameterization|required at runtime]].
* Filter [[REST_Endpoints#GET_a_list_of_an_existing_job.27s_schedules|job schedules endpoint]] by start date and/or end date.
* Return [[REST_Endpoints#GET_details_of_an_existing_job|runtime parameters]] for schedule-based one-time runs.


==== Bug Fixes ====
== Obsidian 6.2.1 ==
* [[Embedded_API#Get_System_Restore_Configuration|SystemRestoreConfiguration]] export was only including the last schedule of a job.
Released June 2025
* Admin-only hosts fail on startup if not in consistent timezone as cluster.


== Obsidian 3.6.1 ==  
=== Bug Fixes ===
Released February 2016.
==== Features / Enhancements ====
* Enhance JobQueuer to reduce execution time when dealing with large numbers of chain-only jobs.


==== Bug Fixes ====
* Certain recoveries greater than 24 hours using new day of month proximity patterns introduced in 6.2.0 would result in no jobs spawning.
* Fix issue where job that is scheduled and chained is scheduled late after being chained.
* Migrations targeting 6.0.0 and greater that start earlier than 5.0.0 skip the 5.0.0 migration. Migrating to any 5.x version first and then to 6.0.0 or later works around this issue.


== Obsidian 3.6.0 ==  
== Obsidian 6.2.0 ==
Released January 2016.
Released May 2025
==== Features / Enhancements ====
* [[Job_Forking|Forked Jobs]] offer support for [[Job_Forking#Interrupt_Support|interruption]].
* [[Implementing_Jobs#Job_Results|Job results]] support replacing job result value(s).
* [[Advanced_Configuration#Properties_File|Classpath com.carfey.properties]] no longer required. Applicable when using overrides.


==== Bug Fixes ====
=== Features / Enhancements ===
* AutoInterrupt not being set on jobs from [[Initializing_and_Restoring#Jobs|System Restore]].
* RunningHostManager can, in rare cases, evaluate job metadata as a HostInformation entry.
* Schedule calculation on outage looks back one minute too far when considering pickup buffer.


== Obsidian 3.5.2 ==
* Cron day of month expansion for [[Cron#Special_Character_Usage|day of week proximity]] using [[Cron#Examples|< > ≥ ≤]]
Released December 2015.
* Cron day of month expansion for [[Cron#Special_Character_Usage|weekday proximity]] using [[Cron#Examples|< > ≥ ≤]]
==== Bug Fixes ====
* [[Admin_Global_Parameters#Using_Global_Parameters_in_Jobs|Global Parameters]] reference in job edit page support mouseover/title display of actual value when permissions allow
* With native authentication, at least one Admin User must still exist when making [[Admin_User_Management#Changing_Users|Role Changes]].
* Host time displayed in [[Admin_Host_Status|hosts status]] in UI
* Cleanup of some internal host management functionality.
* [[Admin_Job_Runtime_Preview|Runtime Preview]] optimizations for large date ranges in both UI and APIs.


== Obsidian 3.5.1 ==  
=== Bug Fixes ===
Released November 2015.
==== Features / Enhancements ====
* Obsidian nodes that are set to different timezones but have the same rules (functionally equivalent such as ''America/Los_Angeles'' and ''PST'') may now be run together.
* [[Authenticator|LDAPAuthenticator]] now supports [[Advanced_Configuration#Authentication_Properties|non-dn user attribute logins]].


==== Bug Fixes ====
* Combination of table prefix, sorting by clob column and Oracle metadata load failure no longer results in sql error. This occurred in the UI when viewing raw job history results and in API calls for job runtime results.
* [[Admin_User_Management#Viewing_Rights_.26_Changing_Your_Password|My User]] screen would fail when using LDAPAuthenticator. Now shows authorized roles.
* Stale host and timezone records are predeleted on startup.


== Obsidian 3.5.0 ==  
== Obsidian 6.1.1 ==
Released November 2015.
Released March 2025
==== Features / Enhancements ====
* Support for scanning and locating CGLIB-enhanced classes in [[Spring_Integration|Spring]] and Grails.
* Improved [[Admin_Job_Run_Time_Preview|runtime preview]] listing performance.
* Automatic logging of Obsidian version number no longer requires special configuration.
* [[Authenticator]] implementations including LDAP now support checking user validity when the "remember me" option is used to authenticate.
* Runtime listing [[REST_Endpoints#GET_a_list_of_scheduled_runtimes_.28supports_multiple_jobs.29|REST endpoint]] and [[Embedded_API#List_Scheduled_Runtimes|Embedded API]] now support specifying a sort order, maximum quantity and parameter filtering, and now guarantee ordering by scheduled time.


==== Bug Fixes ====
=== Features / Enhancements ===
* Capped [[Admin_Job_Run_Time_Preview|runtime preview]] results now respect ascending ordering.


== Obsidian 3.4.1 ==
* [[Authenticator#Implementation_of_a_Custom_Authenticator|Authenticator]] supports optional <code>authenticateREST()</code> method.
Released September 2015.
==== Bug Fixes ====
* Remove undesired field jobHistoryRunningId from runtime listing REST endpoint.
* Fixed standalone scripts that would not shutdown instance when hostname could not be determined.
* Shell scripts should always exit with non-zero code on error.
* Improve forked job shell script compatibility.


== Obsidian 3.4.0 ==  
=== Bug Fixes ===
Released September 2015.
==== Features / Enhancements ====
* [[Cron#Recurrence_Start_DateTime|Recurrence]] supports a start datetime.
* [[Implementing_Jobs#Interruptable_Jobs|Interruptable Jobs]] support [[Job_Features#Expected_Length_Handling_.28job_execution_duration.29|Auto Interruption]] when maximum expected run length is exceeded.
* [[Implementing_Jobs#Global_Parameters|Global Parameters]] support [[Implementing_Jobs#Global_Substitution_Mode|Global Substitution Mode]].
* Added ''jobClass'' parameter to job search in REST and Embedded APIs.
* Performance improvements in cron and recurrence calculations.
* Add database index for recovery performance.
* Support for [[Advanced_Configuration#Database_Properties|disabling internal connection pool]].
* Support [[Advanced_Configuration#Miscellaneous_Properties|base HREF overrides]] for load balancers, etc.
* JobHistoryCleanupJob always cleans up expired schedules according to <code>maxAgeDays</code> parameter.


==== Bug Fixes ====
* Native authentication REST logins do not apply 'last login' timestamps. Avoids noisy error that was appearing in logs.
* Default sequence_manager pool to 10% of connections with min of 2.
* Fix issue where parameter order is not maintained consistently on PostgreSQL
* Fix issue where JobHistoryCleanupJob misses cleaning up jobs that are in MISSED state.
* JobHistoryCleanupJob leaves latest runtime record to ensure Recurrence schedules fire at correct time.


== Obsidian 3.3.3 ==  
== Obsidian 6.1.0 ==
Released August 2015.
Released March 2025
==== Bug Fixes ====
* Chain Skipped and Conflict Missed job runtime enum values corrected to use underscores in REST/Embedded API when listing runtimes.
* In rare cases, outages or queuing delays could prevent first job history from ever being queued.
* Job initial schedule end time not editable via text entry when cloned.


== Obsidian 3.3.2 ==
=== Features / Enhancements ===
Released June 2015.
==== Bug Fixes ====  
* Restore missing fields on Runtime and RuntimeError classes for REST/Embedded API.
* Defensive handling of missing JOB_STATE records in chaining.
* Job class field in job edit screen loses content if enter is pressed without match.
* Obsidian version added to dispatcher logs.


== Obsidian 3.3.1 ==
* Native authentication now disables users after 4 invalid login attempts, either password or MFA code if applicable. Invalid attempts threshold is configurable.
Released June 2015.  
* Native authentication last login datetime displayed on list user screen.
==== Features / Enhancements ====
* Stronger licensing controls. Site and hardware licenses as of this version must be regenerated by Carfey Software and every 2 years. Contact us at licensing [[Image:atSymbol.png]] obsidianscheduler.com.
* Case-sensitive collation support for SQL Server.
* Unicode support on SQL Server (please note that existing schemas will not be upgraded automatically).
* Unicode fixes for all platforms.
* Whitespace characters permitted in between delimited schedules.
* Improved logging on warning and error conditions.


==== Bug Fixes ====
=== Bug Fixes ===
* JobSearch not working on Oracle since 3.3.0.


== Obsidian 3.3.0 ==
* Native authentication password complexity pattern properly created and no longer overwritten on restart.
Released May 2015.
==== Features / Enhancements ====
* [[Implementing_Jobs#List_Parameterization|Job parameterization]] support for picklists of valid values.
* [[Implementing_Jobs#Dynamic_File_Lists|Server-side file listing]] support.
* Support for multiple [[Cron#Basic_Format|Cron]] schedule patterns.
* [[Admin_Job_Chains#Chain_Tree_View|Tree visualization of chains]].
* [[Admin_Job_Chains#Conditional_Chaining_Configuration|Conditional chains]] now support text ordinal comparisons.
* Added optional [[Admin_Job_Chains#Adding_or_Updating_a_Job_Chain|chain description]].
* Spawning and queuing performance improvements.


==== Bug Fixes ====  
== Obsidian 6.0.1 ==
* Expired job schedules are no longer deleted when new schedules are applied. A patch is introduced in this release to find and create placeholder schedules for these jobs.
Released February 2025
* [[Built-in_Jobs#Job_History_Cleanup_Job|Job History Cleanup Job]] allowed configuration of maxAgeScheduleDays to be lower than maxAgeDays resulting in schedules being deleted for which there is still job history.


== Obsidian 3.2.0 ==
=== Features / Enhancements ===
Released April 2015.
==== Features / Enhancements ====
* [[Cron#Recurrence|Recurrence]] job schedules.
* Upgrade to latest Java mail library.
* Support for determining user that initiated a [[Implementing_Jobs#Interruptable_Jobs|job interrupt]].
* Pickup time in [[Job Forking|forked jobs]] now reflects JVM startup to more accurately report execution times.


==== Bug Fixes ====
* [[Built-in_Jobs#File_Archive_Job|File Archive Job]] and [[Built-in_Jobs#File_Scanner_Job|File Scanner Job]] both now support min/max file sizes and minimum age.
* Adding new schedule with outstanding auto-retry execution no longer fails.
* Prevent license checks making extra calls.
* Ensure auto retries with 0 interval are executed as soon as possible, instead of after at least one minute.


== Obsidian 3.1.1 ==
=== Bug Fixes ===
Released April 2015.
==== Bug Fixes ====
* Fix critical bug where successful job runs after failures would be marked as failed due to job recovery handling.


== Obsidian 3.1.0 ==
* Native authentication user updates now support long passwords.
Released March 2015.
==== Features / Enhancements ====
* SQL Server 2008-2014 support.
* Improve event log messages.
* "?" now equivalent to "*" in cron schedules.


==== Bug Fixes ====
== Obsidian 6.0.0 ==
* Prevent event log messages being dispatched before commit of source data.
Released December 27, 2024
* Fix delayed result set cleanup in job queuer in rare cases.


== Obsidian 3.0.1 ==
=== Features / Enhancements ===
Released February 2015.
==== Features / Enhancements ====
* Job schedule preview and update performance improvements.
* Job delete performance improvements for jobs with large number of history records.
* [[Implementing_Jobs#Classpath_Scanning|Classpath scanning]] interval now configurable (useful for job forking).
* [[Built-in_Jobs#Job_History_Cleanup_Job|JobHistoryCleanupJob]] now supports deleting old schedules.


==== Bug Fixes ====
* Jakarta Servlet 5.0
* Jobs running on hosts that are disabled during execution will now flag them as FAILED or COMPLETED as expected.
** Servlet container for Web Admin must support Jakarta Servlet 5.0 (e.g. Tomcat 10, Jetty 11)
* Ensure identical job schedule states which butt against each other are merged.
* [[Micronaut_Integration|Micronaut]] integration support
* Set catalina.base property at Winstone startup so default log configuration works.
* [[Advanced_Configuration#Dependent_Libraries|Groovy 4]] support
* [[Advanced_Configuration#Properties.2FYaml_File|Yaml]] configuration support<ref>


== Obsidian 3.0.0 ==
If you are using automated installer files from previous releases, you will need to add an additional configuration item to choose between yaml and properties formats in UserInputPanel.0.
Released February 2015.  
<pre>
==== Features / Enhancements ====
<com.izforge.izpack.panels.UserInputPanel id="UserInputPanel.0">
* [[Job Forking|Job forking]] added to support distinct JVM instances for each job execution.
        <userInput>
* Full API expansion. APIs now support all functionality exposed by the admin web application. See [[REST Endpoints|REST API]] and [[Embedded API]] for details.
......snip......
* Pretty URLs and login redirects in admin web application, including bookmark support.
            <entry key="config.format" value="yaml" />
* [[Clustering#Host_Preference|Host preference]] support.
OR
* Full [[Initializing and Restoring|initialization and restoration]] support for Obsidian instances.
            <entry key="config.format" value="properties" />
* Auto-polling for job history, logs and sent notifications views in admin web application.
......snip......
* [[Admin_Custom_Calendars#Deleting|Custom calendar delete]] support. Also available in APIs.
        </userInput>
* Convenience database [[Upgrading_Obsidian#Database_Upgrade_Scripts|upgrade]] and [[Getting_Started#Database_Creation_Scripts|create]] scripts included in installation bundle. Automatic version upgrades still supported.
    </com.izforge.izpack.panels.UserInputPanel>
* Better [[Implementing_Jobs#Inheritance|inheritance options]] for defined job parameters.
</pre></ref>
* Native authentication supports customizable [[Admin_Login#Password_Complexity|password complexity]] requirements
* XML support deprecated across the product including XML UI downloads, XML runner configurations and XML license leases.
** '''Starting January 1st 2027, XML license lease requests will stop being processed. All Obsidian instances running using internet-verified licenses (including licence key proxies) will be required to use release 6.0.0 or later as of January 1st 2027.'''
** Above noted XML support will be removed in the first Obsidian version released in 2027.
* License leases use JSON payloads.


==== Bug Fixes ====
== Obsidian 5.5.1 ==
* Fix LAST recovery type when job left in READY state.
Released December 16, 2024
* Redirect to proper 404 and error pages.
* Optimize persistence calls to better handle large number of schedules per job.
* Fix LDAPAuthenticator group membership attribute lookup.
* Explicitly shut down daemon connection reaper thread at Obsidian shutdown.
* Fix minor bugs with schedule merges and splits.
* Fix warning shown in rare cases on job history listing.
* Minor help user interface fixes.
* Minor job chain user interface fixes.
* Prevent system parameter sort order changing on updates.
* Fix record duplicates in job history and corresponding APIs caused by multiple chains which have the same source and target jobs.


== Older releases ==
=== Bug Fixes ===


=== Obsidian 2.9.1 ===
* Admin only (no scheduler) UI no longer generates event hook errors while running nor during shutdown
Released November 2014.
* Quick start installer file no longer generates errors during installation
==== Bug Fixes ====
* A few small web UI enhancements
* Fixed issue where auto retry caused failure during a Disabled window.
* Fixed filenames on screen data downloads.
* Fixed issue with Last recovery when last executed time to current time spanned a Disabled window.
* Graceful handling of host designator update interruptions.


=== Obsidian 2.9.0 ===  
== Obsidian 5.5.0 ==
Released November 2014.
Released October 2024
==== Features / Enhancements ====
* [[Conflicts#Jobs_in_Multiple_Conflict_Sets|Jobs in multiple conflict sets]].
* Add ad hoc flag to Context object supplied to SchedulableJob instances.
* Improved [[Admin_Job_Chains#Conditional_Chaining_Configuration|chain detail]] messages in [[Admin_Job_History_(3.x.x and earlier)#Job_History_Details|job history details]] table.
* Ability to set the host designator for multiple Obsidian instances in the same JVM via <code>com.carfey.obsidian.schedulerDesignation</code> in the [[Advanced Configuration|properties file]].
* Job queuing performance improvements


==== Bug Fixes ====
=== Features / Enhancements ===
* Ensure license check multiple is at least 2 in [[Admin_System_(3.x.x and earlier)|System]] tab.
* When recovering jobs which had died, new jobs were flagged as Overlapped instead of Missed.
* All recovery type resulting in Abandoned jobs incorrectly.
* Breadcrumbs incorrect when cloning a job.
* JNDI cannot be used when the key does not start with "java:" prefix. <ref>


If you are using automated installer files from previous releases and are using JNDI, you may add <pre><entry key="database.jndi.name" value="yourJNDIPath"/></pre> anywhere under the userInput element of UserInputPanel.3 and empty out the value for '''database.url'''. For example,
* Event Hooks management available in [[Admin_Host_Status#Event_Hook_Status|UI]], [[Embedded_API#Event_Hook_Resume_or_Pause|Embedded API]] and [[REST_Endpoints#POST_event_hook_pause_or_resume|REST API]].
  <com.izforge.izpack.panels.UserInputPanel id="UserInputPanel.3">
* [[Installation_Guide#Additional_configuration_items|Installer]] supports custom add on configurations    '''Potential breaking change to automated installer files.''' <ref>
    <userInput>
        <entry key="db.schema" value=""/>
        '''''<entry key="database.url" value=""/>'''''
        <entry key="database.password" value=""/>
        <entry key="database.table.prefix" value=""/>
        <entry key="database.connection.timeout" value="2000"/>
        <entry key="database.username" value=""/>
        '''''<entry key="database.jndi.name" value="java:comp/env/jdbc/obsidianJNDI"/>'''''
        <entry key="database.max.connections" value="40"/>
        <entry key="include.all.jdbc" value="false"/>
    </userInput>
  </com.izforge.izpack.panels.UserInputPanel>


If you are using automated installer files from previous releases, you will need to add a new section of xml as of Obsidian 5.5.0 to handle a new UserInputPanel. Immediately after the UserInputPanel.17 closing brace, add the following:
<pre>
<com.izforge.izpack.panels.UserInputPanel id="UserInputPanel.18">
<userInput>
<entry key="extra.log4j2.properties.1" value=""/>
<entry key="extra.log4j2.properties.2" value=""/>
<entry key="extra.log4j2.properties.3" value=""/>
<entry key="extra.log4j2.properties.4" value=""/>
<entry key="extra.log4j2.properties.5" value=""/>
<entry key="extra.log4j2.properties.6" value=""/>
<entry key="extra.log4j2.properties.7" value=""/>
<entry key="extra.log4j2.properties.8" value=""/>
<entry key="extra.log4j2.properties.9" value=""/>
<entry key="extra.log4j2.properties.10" value=""/>
<entry key="extra.log4j2.properties.11" value=""/>
<entry key="extra.log4j2.properties.12" value=""/>
<entry key="extra.log4j2.properties.13" value=""/>
<entry key="extra.log4j2.properties.14" value=""/>
<entry key="extra.log4j2.properties.15" value=""/>
<entry key="extra.log4j2.properties.16" value=""/>
<entry key="extra.log4j2.properties.17" value=""/>
<entry key="extra.log4j2.properties.18" value=""/>
<entry key="extra.log4j2.properties.19" value=""/>
<entry key="extra.log4j2.properties.20" value=""/>
<entry key="extra.carfey.properties.1" value=""/>
<entry key="extra.carfey.properties.2" value=""/>
<entry key="extra.carfey.properties.3" value=""/>
<entry key="extra.carfey.properties.4" value=""/>
<entry key="extra.carfey.properties.5" value=""/>
<entry key="extra.carfey.properties.6" value=""/>
<entry key="extra.carfey.properties.7" value=""/>
<entry key="extra.carfey.properties.8" value=""/>
<entry key="extra.carfey.properties.9" value=""/>
<entry key="extra.carfey.properties.11" value=""/>
<entry key="extra.carfey.properties.10" value=""/>
<entry key="extra.carfey.properties.12" value=""/>
<entry key="extra.carfey.properties.13" value=""/>
<entry key="extra.carfey.properties.14" value=""/>
<entry key="extra.carfey.properties.15" value=""/>
<entry key="extra.carfey.properties.16" value=""/>
<entry key="extra.carfey.properties.17" value=""/>
<entry key="extra.carfey.properties.18" value=""/>
<entry key="extra.carfey.properties.19" value=""/>
<entry key="extra.carfey.properties.20" value=""/>
</userInput>
</com.izforge.izpack.panels.UserInputPanel>
</pre>
</ref>
</ref>
* Database connections not rolled back just before close when removed from the pool, resulting in warning log messages.
* Sanitize HTTP headers, email subjects, etc. to prevent injection issues.


=== Obsidian 2.8.1 ===  
=== Bug Fixes ===
Released September 2014.
==== Features / Enhancements ====
* New connection pool reaper to draw down pool size if usage allows.


==== Bug Fixes ====
* Certain Cron expressions that fail to generate text descriptions no longer impact scheduling.
* More explicit handling of connection pool emptying on Obsidian shutdown.
* Text database columns were previously restricted to maximum length of MySQL implementation. Corrected to validate length via DB implementation.


=== Obsidian 2.8.0 ===  
== Obsidian 5.4.0 ==
Released September 2014.
Released June 2024
==== Features / Enhancements ====
* Login popup when session expires in [[Admin_Web_Application_Guide|admin web application]]. Users can now log back in without losing their changes.
* Support for using [[Advanced_Configuration|context classloader]] via configuration property ''com.carfey.jdk.useContextClassLoader''.
* Reduced number of connections required for normal operation. Previously, up to 1 connection per job per minute was required.
* Minor user interface improvements.
* Support for re-queuing jobs rejected from the job thread pool (via parameter ''queueJobsOnPoolRejection'').
* Improved default log4j rolling file appender configuration.


==== Bug Fixes ====
=== Features / Enhancements ===
* Fix NullPointerException on job recovery when last job was rejected by the thread pool.
* Fix rare instances of licenses not being released due to token file issues
* Fix poor validation message on saving if invalid boolean system parameter.


=== Obsidian 2.7.1 ===
* Event Hooks available in [[Embedded_API#List_Event_Hooks|Embedded API]] and [[REST_Endpoints#GET_event_hooks|REST API]].
Released August 2014.
* [[Advanced_Configuration#Dependent_Libraries|GSON library]] upgrade to support Java 21
==== Features / Enhancements ====
* [[REST_API#Authentication_.26_Authorization|REST authentication]] can be configured to be optional.
* Cron pattern expansion. Support range increments (e.g. 3-20/5)


==== Bug Fixes ====
=== Bug Fixes ===
* Fix NullPointerException in handling min/max setting of Abandoned jobs.
* Obsidian lease verifications gracefully handle IP changes.
* Upgraded to TLD 2.0 fixing Obsidian WAR deployment in JBoss 6.


=== Obsidian 2.7.0 ===
* Oracle identifier no longer too long when using prefixes.
Released July 2014.
==== Features / Enhancements ====
* [[Admin_Notifications#Job_Execution_Subscriptions|Re-tooled job execution notifications]], including [[Admin_Notifications#Conditional_Job_Notification_Configuration|conditional notifications]]
* We have open-sourced all of our [[Built-in_Jobs | built-in jobs]]!
* File-based job [[Implementing_Jobs#Initializing_Job_Schedules|initialization]].


==== Bug Fixes ====  
== Obsidian 5.3.0 ==
* Fix page jumping when modifying job chain conditions on long pages.
Released March 2024


=== Obsidian 2.6.1 ===
=== Features / Enhancements ===
Released June 2014.
==== Features / Enhancements ====
* Cygwin support in startup/shutdown scripts.
* Run parameters override configured parameters.


==== Bug Fixes ====
* New [[Admin_Host_Status#Event_Hook_Status| Event Hooks Status]] available in the UI.
* Oracle CLOB field storage fix.
* Fix single-node mode on host with no recognizable NIC.
* Prevent currently or soon to be running jobs from being deleted.
* Fix multiple job history parameters failing on H2.


=== Obsidian 2.6.0 ===
=== Bug Fixes ===
Released May 2014.
==== Features / Enhancements ====
* [[Implementing_Jobs#Classpath_for_Building_and_Deploying|Job implementation metadata stored in database]]. Admin UI deployments no longer require Job Implementations on the classpath in order to schedule and configure.
* Delete Chain support in [[Admin_Job_Chains#Deleting|UI]], [[Embedded_API#Delete_a_Job_Chain|Embedded API]] and [[REST_Endpoints#DELETE_an_existing_job_chain|REST API]]
* Hardware-linked licensing supported in public Obsidian bundle.


==== Bug Fixes ====
* Some improvements throughout the [[Admin_Web_Application_Guide|Admin Web Application]] for autofocus of fields.
* Fixed [[Implementing_Jobs#Classpath_Scanning|Classpath Scanning]] to work in WebLogic 12c.
* Additional classes and interfaces added to [https://web.obsidianscheduler.com/obsidianapi/ javadoc].
* Fixed chain recovery date ranges being overly broad.
* Some cleanup in [https://web.obsidianscheduler.com/obsidianapi/ javadoc] documenation.
* Ensure any stale timezone records are cleaned up.
* Removed some libraries stored multiple times in installer.


=== Obsidian 2.5.1 ===
== Obsidian 5.2.1 ==  
Released April 2014.
Released January 2024
==== Features / Enhancements ====
* Expose convenience JobId and Nickname getters in [[Implementing_Jobs#SchedulableJob_Interface|Context]].
* Improved performance of chaining recovery.
* [[Installation_Guide#Configuring_3rd_Party_Library_Conflict_Management|JarJar]] bytecode modification support now includes gson.<ref>


If you are using automated installer files from previous releases, you may add <pre><entry key="jarjar.gson" value="true"/></pre> or <pre><entry key="jarjar.gson" value="false"/></pre> according to your desired usage anywhere under the userInput element of UserInputPanel.14. For example,
=== Features / Enhancements ===
<com.izforge.izpack.panels.UserInputPanel id="UserInputPanel.14">
    <userInput>
        '''''<entry key="jarjar.gson" value="false"/>'''''
        <entry key="jarjar.jxl" value="false"/>
        <entry key="jarjar.dom4j" value="false"/>
        <entry key="jarjar.jmustache" value="false"/>
        <entry key="jarjar.opencsv" value="false"/>
        <entry key="jarjar.h2" value="false"/>
    </userInput>
</com.izforge.izpack.panels.UserInputPanel>


</ref>
* [[Built-in_Jobs#Maintenance_Jobs|Maintenance Jobs]] are now scheduled by default in new installations. Can be disabled via [[Advanced_Configuration#Miscellaneous_Properties|Configuration]] property.
* Introduced support for having a scheduler and non-scheduler instance running in same class-space.
* New [[Event_Hooks#Standard_Output.2FError_Streams_Event_Hook | Standard Output/Error Streams Event Hook]].


==== Bug Fixes ====
=== Bug Fixes ===
* Improved failure messaging when a scheduler node is started in a different time zone than the current nodes in the cluster.
* Chain search filters aren't saved.
* Exclude unneeded web jars from standalone installations.


=== Obsidian 2.5.0 ===
* Schedule descriptions are now updated after edits are applied in all UI screens and APIs.
Released March 2014.
==== Features / Enhancements ====
* [[Admin_Jobs#Execution_.26_Pickup|Retry Interval]] support for Auto Retry of failed jobs.
* [[Admin_Global_Parameters|Global Job Parameter]] support.
* [[Installation_Guide#JNDI_Configuration|JNDI Support]] for Database Connections and Email Sessions.
* MariaDB 5.5 support.
* JBoss AS 7 support.
* Text filter on Job Chain View.
* [[Installation_Guide#Configuring_3rd_Party_Library_Conflict_Management|JarJar]] bytecode modification support during installation to avoid dependency conflicts.
* Embedded API Javadoc artifact included in installation.


==== Bug Fixes ====
== Obsidian 5.2.0 ==
* Support */2 cron expressions, [[Admin_Jobs#Edit.2C_View_.26_Change_Schedules|Schedule Inputs]] extended to 255 characters.
Released December 2023
* REST API - [[REST_Endpoints#GET_a_list_of_jobs|JobListing]].<code>getJobs()</code> was returning <code>List&lt;Job&gt;</code> instead of <code>List&lt;JobState&gt;</code>.
* Support multiple keys in key server proxy.
* Support VFS URLs in [[Implementing_Jobs#Classpath_Scanning|Classpath Scanner]] for JBoss.
* Postgres failed on blank schema.
* Job resubmission validates that job isn't disabled for next minute instead of current minute.
* Embedded API - [[Embedded_API#Delete_a_Job|Delete Job]] would fail if job class has since been removed from classpath.
* [[Admin_Jobs#Job_Listing|Job Listing]] schedule/state defaults to next minute.
* Filters aren't saved consistently on search screens and never saved for runtime preview.
* Table settings aren't saved on [[Admin_Jobs#Job_Listing|Job Listing]].


=== Obsidian 2.4.1 ===  
=== Features / Enhancements ===
Released February 2014.
==== Bug Fixes ====
* Fix installer not working in console mode.
* Ensure that defined job parameters and their values are returned in the original configured order.


=== Obsidian 2.4.0 ===
* [[Cron]] & [[Cron#Recurrence|Recur]] patterns along with any use of [[Admin_Schedule_Aliases|Schedule Aliases]] now support plain language description of the patterns throughout the [[Admin_Web_Application_Guide|UI]], visible while hovering patterns, and in [[REST_Endpoints|REST]] and [[Embedded_API|Embedded]] API responses.
Released February 2014.
* All screens supporting UI exports now support JSON ([[Admin_Job_Activity#Exporting_Results|Job Activity]], [[Admin_Jobs#Exporting_Results|Jobs]], [[Admin_Job_Runtime_Preview#Exporting_Results|Runtime Previews]], [[Admin_Job_Chains#Job_Chain_Listing|Job Chains]], [[Admin_Logs#Exporting_Results|Logs]], [[Admin_Notifications#Exporting_Results|Sent Notifications]], [[Admin_User_Management#Exporting_Results|Users]], [[Admin_Custom_Calendars#Calendar_Listing|Calendars]])
==== Features / Enhancements ====
* All screens supporting UI exports and search criteria and/or inline filters now include any specified search criteria and filter text in Excel, XML and JSON downloads ([[Admin_Job_Activity#Exporting_Results|Job Activity]], [[Admin_Jobs#Exporting_Results|Jobs]], [[Admin_Job_Runtime_Preview#Exporting_Results|Runtime Previews]], [[Admin_Job_Chains#Job_Chain_Listing|Job Chains]], [[Admin_Logs#Exporting_Results|Logs]], [[Admin_Notifications#Exporting_Results|Sent Notifications]], [[Admin_User_Management#Exporting_Results|Users]])
* New [[Getting_Started|graphical installer and simplified startup scripts]].
* Support for [[Installation_Guide#Choosing_Email_Support|Jakarta EE mail]] '''Potential breaking change to automated installer files.''' <ref>
* Full support for job chaining and conflicts in the [[REST API]] and [[Embedded API]].
* Revamped WebSphere support (8.5).
* [[Scripting Jobs]] can now be configured with a script file path instead of the script itself.
* New [[Built-in_Jobs#MySqlBackupJob|MySqlBackupJob]] built-in job.
* Informational message logged when a new version of Obsidian is available.
* [[Admin_User_Management#Deleting_Users|Delete user]] support.


==== Bug Fixes ====
If you are using automated installer files from previous releases and had email configured, you will need to add a new section of xml as of Obsidian 5.2.0 to handle a new UserInputPanel. Immediately after the UserInputPanel.16 closing brace, add the following:
* Fixed job execution recovery not working in some cases when the database is temporarily unavailable.
<pre>
* Fix PostgreSQL connections not released from pool properly when connection is invalid.
<com.izforge.izpack.panels.UserInputPanel id="UserInputPanel.17">
* Fix [[Implementing_Jobs#Classpath_Scanning|Classpath Scanning]] on WebSphere.
    <userInput>
* Fix UI rendering issue on Jobs screen on WebSphere.
        <entry key="mail.type.selection" value="javax"/>
    </userInput>
</com.izforge.izpack.panels.UserInputPanel>
</pre>
</ref>
* New [[Event_Hooks#REST_Endpoint_Event_Hook|REST Endpoint Event Hook]]
* [[Key_Server_Proxy|Key Server proxy]] artifact obtained via web download during installation


=== Obsidian 2.3.1 ===  
=== Bug Fixes ===
Released December 2013.
==== Features / Enhancements ====
* New [[Built-in_Jobs#Script_Job|Script File Job]]
* Improved responsiveness of job interrupts for built-in jobs.
* UI tweak to [[Jobs]] screen to avoid displaying custom calendars when not in use.


==== Bug Fixes ====
* Time picker buttons (hour, minute, AM/PM) in [[Admin_Job_Activity#Filtering|Job Activity filtering]] no longer change other elements of the selected time.
* Update default log configuration for Tomcat to use <code>catalina.base</code>, which works consistently on *nix platforms.
* Cron pattern with [[Cron#Special_Character_Usage|LW]] and any other non-L value in day position no longer also incorrectly evaluates to last day.
* Remove redundant event logging for job success and failure in the Job Spawner category.
* Handle releasing licenses even when temp directory is not writable, and attempt to use working directory as a fallback.
* Job names containing ampersands did not work as filters in search screens.
* Host designator assigned earlier in startup to ensure logging accurately reports the host.


=== Obsidian 2.3.0 ===  
== Obsidian 5.1.1 ==
Released November 2013.
Released June 2023
==== Features / Enhancements ====
* Fully unified [[Embedded API]] which contains same operations and has same semantics as the [[REST API]]. The previous [[Legacy API|API]] is now deprecated.
* [[REST API]] bean classes bundled in <code>obsidian.jar</code> for simplified Java integration.
* Submission of [[Admin_Jobs#Ad_Hoc_.26_One-Time_Run_Submission|one-time job runs]] via the UI now allows specifying exact minutes instead of 5 minute intervals.
* [[Chaining]] evaluation is now fully recoverable. Processing of chaining now processed independently of job execution.
* Dozens of UI tweaks and improvements.
* Stale hosts in [[Systems|Systems tab]] now are pruned after about an hour of inactivity. Host disabling is preserved if the node is restored.
* Graceful shutdown in Winstone for [[Getting Started|quick start]] method.
* [[Jobs#Custom_Calendars|Custom Calendars]] can now be specified with multiple delimiters, including new lines and spaces.
* [[Email Templates]] can now include the event category.
* Track most recent upgraded version in the database.
* Job runtime [[REST_Endpoints#GET_a_list_of_scheduled_runtimes_.28supports_multiple_jobs.29|REST endpoint]] now defaults to a more useful previous 24-hour window.


==== Bug Fixes ====
=== Bug Fixes ===
* Chain All setting not shown correctly when editing existing [[Jobs]].
* Abandoned, Missed and Conflict Missed chaining never fires.
* Current scheduled state not shown correctly for existing jobs in [[Jobs]] in Winstone.
* Export on [[Logs]] contained extra text in ID column.
* Chained jobs now respect host restrictions.
* Correct custom calendar reversed PUT/POST for [[REST API]], and implement standardized date formatting.
* UI table listings no longer flash error message when quickly navigating away during a request.
* [[Legacy API]] calls no longer incorrectly start non-daemon threads for notifications and event logging.
* Lock issues when evaluating many [[Chaining|chained jobs]].


=== Obsidian 2.2.1 ===
* [[Authenticator|Native authentication]] no longer fails when user deletes are attempted from the UI.
Released October 2013.
* Built in maintenance job [[Built-in_Jobs#Job_History_Cleanup_Job|Job History Cleanup]] no longer leaves deletion candidate CHAIN SKIPPED records in the JOB_HISTORY table in rare circumstances.
==== Features / Enhancements ====
* Enhanced [[Spring_Integration|Spring Integration]] to remove need for distinct [[Implementing_Jobs#Classpath_Scanning|Classpath Scanning]]. Jobs can be auto detected from Spring context.  
* Enhanced [[Job_Features#Host_Restrictions_or_Affinity|Running Hosts Restrictions]]. Now a configuration value can be used to determine if these restrictions apply to Ad Hoc jobs.
* Ability to [[Getting_Started#Disabling_Automatic_Database_Updates|disable database updates]] on startup.
* Add helpful text to job screen indicating you can type in a job class Obsidian
* Additional Spring support for [[Spring_Integration#Wiring_an_Embedded_Obsidian_Scheduler|embedded schedulers]].


==== Bug Fixes ====
== Obsidian 5.1.0 ==
* Corrected issue where classpath scanning configuration values were being overridden back to default on each restart (introducted in 2.1).  
Released April 2023
* Fix SchedulerStarter shutting down JVM in embedded mode.


=== Obsidian 2.2.0 ===
=== Features / Enhancements ===
Released October 2013.
==== Features / Enhancements ====
* [[Spring_Integration|Spring]] Dependency Injection support.
* [[Built-in_Jobs#File_Scanner_Job|File scanner]] job.
* [[Advanced_Configuration#Dependent_Libraries|Python and Groovy]] libs updated. Python from jython.jar (version 2.5.2rc2) to jython-standalone-2.5.3.jar. Groovy from groovy-all-1.7.6.jar to groovy-all-2.1.8.jar.


==== Bug Fixes ====
* [[Admin_Schedule_Aliases#Schedule_Alias_Fragments|Schedule Aliases]] now support fragments for configuration-time substitutions.
* DBAuthenticator is now defaulted configuration. Improved handling of bad configuration on startup.
* New convenience job [[Built-in_Jobs#Database_File_Export_Job|Database File Export Job]] for generating basic file extracts from database queries.
* Obsidian web app startup no longer attempts to start the scheduler with certain types of unrecoverable bad configuration.
* New convenience job [[Built-in_Jobs#REST_Invocation_Job|REST Invocation Job]] for making simple REST calls and storing results.
* Fixed issue where classpath scanner only worked in Admin Web Application if running with an embedded scheduler.
* Performance improvements in job failure handling.
* Fixed issue where Auto Failure Retry combined with triggered Job Chaining resulted in chaining failure.
* Cleaned up Job History Search Results File Export that could contain garbage characters.
* Fixed issue where job runtime preview fails when only disabled job state exists.
* Fixed TRACE logging level - No logging output if level explicitly set to TRACE.
* Remove unnecessary JAR files bundled with the installation package.


=== Obsidian 2.1.1 ===
== Obsidian 5.0.4 ==  
Released September 2013.
Released February 2022
==== Features / Enhancements ====
* [[Admin_Jobs#Run_Parameters|Ad Hoc / One-Time Run Job Parameterization]].
* Obsidian license purchases via Stripe.
* All Carfey Software libraries bundled into single obsidian.jar.


==== Bug Fixes ====
=== Features / Enhancements ===
* Postgres schema support - only supported public schema.
* Log4j2 2.17.1 as fix for [https://logging.apache.org/log4j/2.x/security.html#log4j-2.17.1 RCE vulnerability] where attackers can modify log4j configuration.
* LogCleanupJob does not validate specified LEVEL attribute.
* Restore missing default log4j2 configuration in installation artifacts.
* LDAPAuthenticator assumed ''cn'' in building ''dn'' for authentication. Now configurable - see [[Advanced_Configuration#Configuration_Details|Advanced Configuration]].
* LDAPAuthenticator assumed only ''uniqueMember'' for group membership. Now also checks other common attributes, supporting ActiveDirectory. See [[Authenticator#Customizing_our_LDAP_Authenticator|LDAP Authenticator]].
* ''run.obsidian'' target execution classpath included in Obsidian bundle includes non-jar/non-resource files.
* Site license verification runs once on startup instead of every lease cycle.
* Date parsing issue related to Locales on retrieving and refreshing license. Fixed in [http://sourceforge.net/projects/carfeydate/ release 1.2 of carfey-date].
* In rare cases, job results in Job History listing could be mangled.
* Proxy key server would fail on requests when run from time zones different from the master key server.
* Oracle job results limited to 2000 characters - now unlimited on all platforms.


=== Obsidian 2.1 ===
== Obsidian 5.0.3 ==  
Released July 2013.
Released December 2021
==== Features / Enhancements ====
* [[Obsidian_Tables|Table name prefix]] support.
* [[Licenses_%26_Nodes|Site license]] support in public Obsidian bundle.
* [[Advanced_Configuration#Properties_File|Programmatic properties]] override support.
* Alternate [[Advanced_Configuration#Configuration_Details|schema user/owner]] support. Additional Oracle details [[Obsidian_Tables#Oracle_Privileges|here]].
* [[Admin_Notifications#Deleting_a_Subscriber|Delete subscriber]] support.


==== Bug Fixes ====
=== Features / Enhancements ===
* Ensure all [[Admin_Logs|Event Log]] messaging to always use Display Name for enums.
* Log4j2 2.17.0 as fix for [https://logging.apache.org/log4j/2.x/security.html#log4j-2.17.0 DOS vulnerability]
* Expand script job disabling to disable all potentially dangerous jobs.
* Fix native login issue showing as inactive on some databases.
* Ensure internal class AnnotatedSchedulableJob is always excluded from available class listing in [[Admin_Jobs#Job_Nickname_and_Class|Job Admin]].
* Upgraded to more recent Oracle JDBC driver (11.2.0.3)
* Various database metadata optimizations
* [[Implementing_Jobs#Classpath_Scanning|Classpath scanner]] rescans on parameter changes.


=== Obsidian 2.0 ===
== Obsidian 5.0.2 ==  
Released June 2013.
Released December 2021
==== Features / Enhancements ====
* [[Implementing_Jobs#Classpath_Scanning|Classpath Scanning]] to automatically populate Job UI with available jobs.
* Fully customizable [[Email_Templates|Email Templates]].
* New [[Embedded_API|Embedded API]] operations exposed so job configuration can be manipulated without REST API or UI.
* [[Admin_Jobs#Custom_Calendars|Custom Calendar]] support to add date-based exclusions to job schedules (e.g. holidays).
* New [[Admin_User_Management#User_Rights|Limited Read]] role which restricts access to potentially sensitive configuration.
* New [[Built-in_Jobs|Built-in Jobs]] - file archival and file clean up.
* Easy [[Admin_Jobs#Job_Listing|job cloning]] in UI.
* [[Built-in_Jobs#Shell_Script_Jobs|Shell scripting]] job support.
* Additional [[Admin_Jobs#Job_Edit_Screen|job execution options]] - auto-retries on failure and new "Chain All" chaining mode.


==== Bug Fixes ====
=== Features / Enhancements ===
* Improve logging of some trapped exceptions.
* Log4j2 2.16.0 as permanent fix for [https://logging.apache.org/log4j/2.x/security.html#log4j-2.16.0 RCE vulnerability]
* Improve handling of spawn locks to reduce contention.
* Fix standalone execution from Ant script.


=== Obsidian 1.5.2 ===
== Obsidian 5.0.1 ==  
Released May 2013.
Released December 2021
==== Features / Enhancements ====
* Job nickname lengthened from 50 to 255 characters to allow more specific nicknames.
* Database metadata loading restricted to known Obsidian application tables.
* Add support in [[REST_Endpoints#Job_Endpoints|job listing endpoint]] for nickname and job custom parameter tag search.


==== Bug Fixes ====
=== Features / Enhancements ===
* Fixed JobHistoryCleanupJob failures that occurred when a record to be cleaned up had been interrupted.
* Log4j2 2.15.0 as fix for [https://logging.apache.org/log4j/2.x/security.html#log4j-2.15.0 RCE vulnerability]
* Disallow failed job resubmission if the job is currently running. This prevents these resubmissions from potentially being ABANDONED due to execution duration exceeding pickup buffer minutes specified on the job. Job is available for resubmission once currently running job completes.


=== Obsidian 1.5.1 ===
=== Bug Fixes ===
Released February 2013.
* Fix sporadic native login issue on some databases.
==== Features / Enhancements ====
* Formatting fix in quick installer file
* [[Implementing_Jobs#Interruptable_Jobs|Interruptable Jobs]], including new [[REST_API|REST API]] endpoint.
* Spawning improvements to seek minute boundaries more consistently.
* Runtime preview now defaults to start time to current time.
* Improved license handling for paid licenses to increase reliability in case of outages.
* A handful of minor UI tweaks and additions.


==== Bug Fixes ====
== Obsidian 5.0.0 ==  
* Fix connection handling when database connectivity is lost in spawner or queuer threads.
Released August 2021.
* Fix criteria causing some running conflicts to be not found resulting in conflicted jobs running concurrently.
* Improve messaging and details when failing to connect to MySQL.
* Various UI fixes.
* Events for jobs would sometimes be dispatched for the wrong target.
 
=== Obsidian 1.5 ===
Released January 2013.
==== Features / Enhancements ====
* [[REST_API|REST API]] for a complete range of job, scheduling and host management features.
* Export support in Excel, CSV and XML in [[Admin_Job_History_(3.x.x and earlier)#Exporting_Results|Job History]], [[Admin_Jobs#Exporting_Results|Job]], [[Admin_Job_Run_Time_Preview|Job Runtimes]], [[Admin_Logs#Exporting_Results|Log]] and [[Admin_Notifications#Sent_Notifications_Screen|Sent Notifications]] views.
* Expected job run time parameters - [[Admin_Jobs#Execution_.26_Pickup|See Expected  Length]]. Events trigger in cases where execution duration is outside of defined threshold.
* Display actual run duration in job history view
* Enhance run once future date pattern to match actual future date.  Contributes to consistency in job state absorption in new overlapping state ranges.
* Allow single node to run without valid lease
* Add 90/120 minutes pickup buffer option
 
==== Bug Fixes ====
* Ad hoc submission validation text inconsistent
* Job set to ad hoc active state would not allow one-time immediate submissions.
* Workaround String indexoutofbounds issue with winstone server
* Read-only users can submit one-time job runs.
* Can't save unscheduled active job in postgresql
* After saving new user, help icon disappears
* MySQL - Audit columns hit truncation error when registered user is too long
* Various display bugs
 
=== Obsidian 1.4.2 ===
==== Bug Fixes ====
* Lock wait timeout fix
 
=== Obsidian 1.4.1 ===
==== Features / Enhancements ====
* Conditional [[Chaining]] support.
* [[Admin_Jobs#Deleting|Delete]] job support.
* [[Admin_Jobs#Job_Listing|Job]] view filter inclusivity those with only future states.
==== Bug Fixes ====
* Default initial sorts case insenstive
* Status scheduling allowed for gaps
* Failed conditional chain prevents scheduling of job
* Schedule preview isn't ordered by effective date
* JobHistory order by clause sometimes ignored
 
=== Obsidian 1.4 ===
==== Features / Enhancements ====
* View of saved job history [[Admin_Job_History_(3.x.x and earlier)#Job_History_Details|results]].
* Add schedule shortcut link on Job view
==== Bug Fixes ====
* Various display bugs


=== Features / Enhancements ===
* Java 11 (minimum Java version)
* [[Admin_Schedule_Aliases|Schedule Aliases]] including support in [[REST_Endpoints#Schedule_Alias_Endpoints|REST API]] and [[Embedded_API#ScheduleAliasManager_API|Embedded API]]
* [[Admin_User_Management#Multi-Factor_Authentication_.28MFA.29|MFA Support]] for UI logins
* New [[Admin_User_Management#User_Rights|Author and Operator]] roles
* Convention-based role permissions by [[Admin_User_Management#Job_Folder_Rights|root job folder]] for Write, Author and Operator.<ref>
There is a possibility of a breaking change to Embedded or REST API use due to the need to change the [[Embedded_API#Enumerations|User Role enumeration]] from a Java enum to an enum-style class to support this feature. Bringing in the upgraded Obsidian library and compiling should reveal any such broken use of these enumerations. Needed changes should be minor and self-explanatory.</ref>
* Bundled Jetty 10.0.2
* Legacy Embedded API (from Obsidian 1.5) dropped
* Signal handler disabled by default. Enabled only via [[Advanced_Configuration#Miscellaneous_Properties|configuration]].
* Many [[Advanced_Configuration#Dependent_Libraries|library upgrades]].
* UI javascript library updates.


== Footnotes ==
== Footnotes ==
<references/>
<references/>

Latest revision as of 21:36, 21 January 2026

Please review our Upgrade Instructions.

Read about our Planned Releases.

Looking for old release notes? See Release Notes - Older Releases.

Obsidian 6.4.0

Released December 2025

Enhancements

Bug Fixes

  • Fixed issue preventing job deletion when resubmissions of failed executions existed. Bug existed in UI and APIs.
  • Fixed UI styling issue for job deletion where checkbox label did not appear.

Obsidian 6.3.3

Released November 2025

Enhancements

Bug Fixes

Obsidian 6.3.2

Released October 2025

Enhancements

  • Notification failures now trigger Dispatch category Error level event on first failure. For use in log alerts and Event Hooks.

Bug Fixes

  • Notification failures no longer log on every failure reducing chatty failure logs.
  • No-arg constructors added to multiple JSON serializable candidate POJOs missing them. Addresses GSON's workaround use of sun.misc.Unsafe.

Obsidian 6.3.1

Released August 2025

Bug Fixes

  • Fix failure response codes on REST health endpoint
  • Fix automatic upgrade issue from 6.1.0 to any of 6.2.0, 6.2.1, 6.3.0
  • Fix auth issue when MFA is enabled that allows REST access when account has been locked out due to MFA not being setup. Contact us if you need workaround details for earlier versions.
  • Fix native auth issue that allows REST access when account has been flagged as inactive.

Obsidian 6.3.0

Released July 2025

Features / Enhancements

Obsidian 6.2.1

Released June 2025

Bug Fixes

  • Certain recoveries greater than 24 hours using new day of month proximity patterns introduced in 6.2.0 would result in no jobs spawning.
  • Migrations targeting 6.0.0 and greater that start earlier than 5.0.0 skip the 5.0.0 migration. Migrating to any 5.x version first and then to 6.0.0 or later works around this issue.

Obsidian 6.2.0

Released May 2025

Features / Enhancements

Bug Fixes

  • Combination of table prefix, sorting by clob column and Oracle metadata load failure no longer results in sql error. This occurred in the UI when viewing raw job history results and in API calls for job runtime results.

Obsidian 6.1.1

Released March 2025

Features / Enhancements

Bug Fixes

  • Native authentication REST logins do not apply 'last login' timestamps. Avoids noisy error that was appearing in logs.

Obsidian 6.1.0

Released March 2025

Features / Enhancements

  • Native authentication now disables users after 4 invalid login attempts, either password or MFA code if applicable. Invalid attempts threshold is configurable.
  • Native authentication last login datetime displayed on list user screen.
  • Stronger licensing controls. Site and hardware licenses as of this version must be regenerated by Carfey Software and every 2 years. Contact us at licensing obsidianscheduler.com.

Bug Fixes

  • Native authentication password complexity pattern properly created and no longer overwritten on restart.

Obsidian 6.0.1

Released February 2025

Features / Enhancements

Bug Fixes

  • Native authentication user updates now support long passwords.

Obsidian 6.0.0

Released December 27, 2024

Features / Enhancements

  • Jakarta Servlet 5.0
    • Servlet container for Web Admin must support Jakarta Servlet 5.0 (e.g. Tomcat 10, Jetty 11)
  • Micronaut integration support
  • Groovy 4 support
  • Yaml configuration support[1]
  • Native authentication supports customizable password complexity requirements
  • XML support deprecated across the product including XML UI downloads, XML runner configurations and XML license leases.
    • Starting January 1st 2027, XML license lease requests will stop being processed. All Obsidian instances running using internet-verified licenses (including licence key proxies) will be required to use release 6.0.0 or later as of January 1st 2027.
    • Above noted XML support will be removed in the first Obsidian version released in 2027.
  • License leases use JSON payloads.

Obsidian 5.5.1

Released December 16, 2024

Bug Fixes

  • Admin only (no scheduler) UI no longer generates event hook errors while running nor during shutdown
  • Quick start installer file no longer generates errors during installation
  • A few small web UI enhancements

Obsidian 5.5.0

Released October 2024

Features / Enhancements

  • Event Hooks management available in UI, Embedded API and REST API.
  • Installer supports custom add on configurations Potential breaking change to automated installer files. [2]

Bug Fixes

  • Certain Cron expressions that fail to generate text descriptions no longer impact scheduling.
  • Text database columns were previously restricted to maximum length of MySQL implementation. Corrected to validate length via DB implementation.

Obsidian 5.4.0

Released June 2024

Features / Enhancements

Bug Fixes

  • Oracle identifier no longer too long when using prefixes.

Obsidian 5.3.0

Released March 2024

Features / Enhancements

Bug Fixes

Obsidian 5.2.1

Released January 2024

Features / Enhancements

Bug Fixes

  • Schedule descriptions are now updated after edits are applied in all UI screens and APIs.

Obsidian 5.2.0

Released December 2023

Features / Enhancements

Bug Fixes

  • Time picker buttons (hour, minute, AM/PM) in Job Activity filtering no longer change other elements of the selected time.
  • Cron pattern with LW and any other non-L value in day position no longer also incorrectly evaluates to last day.

Obsidian 5.1.1

Released June 2023

Bug Fixes

  • Native authentication no longer fails when user deletes are attempted from the UI.
  • Built in maintenance job Job History Cleanup no longer leaves deletion candidate CHAIN SKIPPED records in the JOB_HISTORY table in rare circumstances.

Obsidian 5.1.0

Released April 2023

Features / Enhancements

  • Schedule Aliases now support fragments for configuration-time substitutions.
  • New convenience job Database File Export Job for generating basic file extracts from database queries.
  • New convenience job REST Invocation Job for making simple REST calls and storing results.
  • Performance improvements in job failure handling.

Obsidian 5.0.4

Released February 2022

Features / Enhancements

  • Log4j2 2.17.1 as fix for RCE vulnerability where attackers can modify log4j configuration.
  • Restore missing default log4j2 configuration in installation artifacts.

Obsidian 5.0.3

Released December 2021

Features / Enhancements

  • Log4j2 2.17.0 as fix for DOS vulnerability
  • Fix native login issue showing as inactive on some databases.

Obsidian 5.0.2

Released December 2021

Features / Enhancements

Obsidian 5.0.1

Released December 2021

Features / Enhancements

Bug Fixes

  • Fix sporadic native login issue on some databases.
  • Formatting fix in quick installer file

Obsidian 5.0.0

Released August 2021.

Features / Enhancements

Footnotes

  1. If you are using automated installer files from previous releases, you will need to add an additional configuration item to choose between yaml and properties formats in UserInputPanel.0.
    <com.izforge.izpack.panels.UserInputPanel id="UserInputPanel.0">
            <userInput>
    ......snip......
                <entry key="config.format" value="yaml" />
    OR
                <entry key="config.format" value="properties" />
    ......snip......
            </userInput>
        </com.izforge.izpack.panels.UserInputPanel>
    
  2. If you are using automated installer files from previous releases, you will need to add a new section of xml as of Obsidian 5.5.0 to handle a new UserInputPanel. Immediately after the UserInputPanel.17 closing brace, add the following:
    <com.izforge.izpack.panels.UserInputPanel id="UserInputPanel.18">
    	<userInput>
    		<entry key="extra.log4j2.properties.1" value=""/>
    		<entry key="extra.log4j2.properties.2" value=""/>
    		<entry key="extra.log4j2.properties.3" value=""/>
    		<entry key="extra.log4j2.properties.4" value=""/>
    		<entry key="extra.log4j2.properties.5" value=""/>
    		<entry key="extra.log4j2.properties.6" value=""/>
    		<entry key="extra.log4j2.properties.7" value=""/>
    		<entry key="extra.log4j2.properties.8" value=""/>
    		<entry key="extra.log4j2.properties.9" value=""/>
    		<entry key="extra.log4j2.properties.10" value=""/>
    		<entry key="extra.log4j2.properties.11" value=""/>
    		<entry key="extra.log4j2.properties.12" value=""/>
    		<entry key="extra.log4j2.properties.13" value=""/>
    		<entry key="extra.log4j2.properties.14" value=""/>
    		<entry key="extra.log4j2.properties.15" value=""/>
    		<entry key="extra.log4j2.properties.16" value=""/>
    		<entry key="extra.log4j2.properties.17" value=""/>
    		<entry key="extra.log4j2.properties.18" value=""/>
    		<entry key="extra.log4j2.properties.19" value=""/>
    		<entry key="extra.log4j2.properties.20" value=""/>
    		<entry key="extra.carfey.properties.1" value=""/>
    		<entry key="extra.carfey.properties.2" value=""/>
    		<entry key="extra.carfey.properties.3" value=""/>
    		<entry key="extra.carfey.properties.4" value=""/>
    		<entry key="extra.carfey.properties.5" value=""/>
    		<entry key="extra.carfey.properties.6" value=""/>
    		<entry key="extra.carfey.properties.7" value=""/>
    		<entry key="extra.carfey.properties.8" value=""/>
    		<entry key="extra.carfey.properties.9" value=""/>
    		<entry key="extra.carfey.properties.11" value=""/>
    		<entry key="extra.carfey.properties.10" value=""/>
    		<entry key="extra.carfey.properties.12" value=""/>
    		<entry key="extra.carfey.properties.13" value=""/>
    		<entry key="extra.carfey.properties.14" value=""/>
    		<entry key="extra.carfey.properties.15" value=""/>
    		<entry key="extra.carfey.properties.16" value=""/>
    		<entry key="extra.carfey.properties.17" value=""/>
    		<entry key="extra.carfey.properties.18" value=""/>
    		<entry key="extra.carfey.properties.19" value=""/>
    		<entry key="extra.carfey.properties.20" value=""/>
    	</userInput>
    </com.izforge.izpack.panels.UserInputPanel>
    
  3. If you are using automated installer files from previous releases and had email configured, you will need to add a new section of xml as of Obsidian 5.2.0 to handle a new UserInputPanel. Immediately after the UserInputPanel.16 closing brace, add the following:
    <com.izforge.izpack.panels.UserInputPanel id="UserInputPanel.17">
        <userInput>
            <entry key="mail.type.selection" value="javax"/>
        </userInput>
    </com.izforge.izpack.panels.UserInputPanel>
    
  4. There is a possibility of a breaking change to Embedded or REST API use due to the need to change the User Role enumeration from a Java enum to an enum-style class to support this feature. Bringing in the upgraded Obsidian library and compiling should reveal any such broken use of these enumerations. Needed changes should be minor and self-explanatory.