This is an automated email from the ASF dual-hosted git repository.

mosermw pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/main by this push:
     new 786784ef62 NIFI-12290 Migrated from Quartz to Spring for Cron 
Expressions
786784ef62 is described below

commit 786784ef62188b2b018ee262c2e8a750fb507789
Author: exceptionfactory <exceptionfact...@apache.org>
AuthorDate: Sat Oct 28 18:42:46 2023 -0500

    NIFI-12290 Migrated from Quartz to Spring for Cron Expressions
    
    - Removed support for Year field in Cron Expressions
    - Changed numeric Day of Week field from starting with 1 to starting with 0
    - Removed Quartz and C3P0 from Notice files
    
    This closes #7951
    
    Signed-off-by: Mike Moser <mose...@apache.org>
---
 minifi/minifi-assembly/NOTICE                      |  22 ----
 minifi/minifi-c2/minifi-c2-assembly/NOTICE         |  21 ----
 .../src/main/resources/META-INF/NOTICE             |  21 ----
 .../src/main/resources/META-INF/NOTICE             |  21 ----
 .../minifi-toolkit/minifi-toolkit-assembly/NOTICE  |  21 ----
 nifi-assembly/NOTICE                               |  21 ----
 nifi-dependency-check-maven/suppressions.xml       |   5 -
 nifi-docs/src/main/asciidoc/user-guide.adoc        |   9 +-
 .../nifi-kafka-connector-assembly/NOTICE           |   9 --
 .../src/main/resources/META-INF/NOTICE             |  21 ----
 .../nifi-framework-components/pom.xml              |   4 +-
 .../nifi/controller/StandardProcessorNode.java     |   4 +-
 .../org/apache/nifi/controller/FlowController.java |   6 +-
 .../scheduling/AbstractSchedulingAgent.java        |   2 +-
 ...hedulingAgent.java => CronSchedulingAgent.java} |  58 ++++++-----
 .../scheduling/CronSchedulingAgentTest.java        | 114 +++++++++++++++++++++
 .../controller/scheduling/DummyScheduleState.java  |  26 -----
 .../nifi-framework/nifi-web/nifi-web-api/pom.xml   |   5 -
 .../nifi/web/dao/impl/StandardProcessorDAO.java    |   9 +-
 .../web/dao/impl/StandardReportingTaskDAO.java     |   9 +-
 .../src/main/resources/META-INF/NOTICE             |  21 ----
 .../src/main/resources/META-INF/NOTICE             |  21 ----
 nifi-nar-bundles/nifi-framework-bundle/pom.xml     |   5 -
 .../src/main/resources/META-INF/NOTICE             |  21 ----
 nifi-stateless/nifi-stateless-assembly/NOTICE      |   8 --
 .../src/main/resources/META-INF/NOTICE             |   9 --
 26 files changed, 164 insertions(+), 329 deletions(-)

diff --git a/minifi/minifi-assembly/NOTICE b/minifi/minifi-assembly/NOTICE
index 82b55b88d9..e37359ea7c 100644
--- a/minifi/minifi-assembly/NOTICE
+++ b/minifi/minifi-assembly/NOTICE
@@ -589,28 +589,6 @@ The following binary components are provided under the 
Apache Software License v
         Curator Recipes
         Copyright 2011-2014 The Apache Software Foundation
 
-
-    (ASLv2) Quartz
-      The following NOTICE information applies:
-        Copyright Declaration:
-        Copyright © 2003-2016 Software AG, Darmstadt, Germany and/or Software 
AG USA Inc., Reston, VA, USA, and/or its subsidiaries and/or its affiliates 
and/or their licensors.
-
-        Trademark and Patent declaration
-        The name Software AG and all Software AG product names are either 
trademarks or registered trademarks of Software AG and/or Software AG USA Inc. 
and/or its subsidiaries and/or its affiliates
-        and/or their licensors. Other company and product names mentioned 
herein may be trademarks of their respective owners.
-
-        Detailed information on trademarks and patents owned by Software AG 
and/or its subsidiaries is located at https://softwareag.com/licenses.
-
-        Third Party declaration
-        This software may include portions of third-party products. For 
third-party copyright notices, license terms, additional rights or 
restrictions, please refer to "License Texts, Copyright
-        Notices and Disclaimers of Third Party Products". For certain specific 
third-party license restrictions, please refer to section E of the Legal 
Notices available under "License Terms and
-        Conditions for Use of Software AG Products / Copyright and Trademark 
Notices of Software AG Products". These documents are part of the product 
documentation, located at
-        https://softwareag.com/licenses and/or in the root installation 
directory of the licensed product(s).
-
-        Confidentiality Disclaimer:
-        Use, reproduction, transfer, publication or disclosure is prohibited 
except as specifically provided for in your License Agreement with Software AG.
-        Contact GitHub API Training Shop Blog About
-
 ************************
 Common Development and Distribution License 1.1
 ************************
diff --git a/minifi/minifi-c2/minifi-c2-assembly/NOTICE 
b/minifi/minifi-c2/minifi-c2-assembly/NOTICE
index 8dbf0ee4be..ca826d00b0 100644
--- a/minifi/minifi-c2/minifi-c2-assembly/NOTICE
+++ b/minifi/minifi-c2/minifi-c2-assembly/NOTICE
@@ -160,27 +160,6 @@ The following binary components are provided under the 
Apache Software License v
       Spring Framework 5
       Copyright (c) 2002-2021 Pivotal, Inc.
 
-    (ASLv2) Quartz
-      The following NOTICE information applies:
-        Copyright Declaration:
-        Copyright © 2003-2016 Software AG, Darmstadt, Germany and/or Software 
AG USA Inc., Reston, VA, USA, and/or its subsidiaries and/or its affiliates 
and/or their licensors.
-
-        Trademark and Patent declaration
-        The name Software AG and all Software AG product names are either 
trademarks or registered trademarks of Software AG and/or Software AG USA Inc. 
and/or its subsidiaries and/or its affiliates
-        and/or their licensors. Other company and product names mentioned 
herein may be trademarks of their respective owners.
-
-        Detailed information on trademarks and patents owned by Software AG 
and/or its subsidiaries is located at https://softwareag.com/licenses.
-
-        Third Party declaration
-        This software may include portions of third-party products. For 
third-party copyright notices, license terms, additional rights or 
restrictions, please refer to "License Texts, Copyright
-        Notices and Disclaimers of Third Party Products". For certain specific 
third-party license restrictions, please refer to section E of the Legal 
Notices available under "License Terms and
-        Conditions for Use of Software AG Products / Copyright and Trademark 
Notices of Software AG Products". These documents are part of the product 
documentation, located at
-        https://softwareag.com/licenses and/or in the root installation 
directory of the licensed product(s).
-
-        Confidentiality Disclaimer:
-        Use, reproduction, transfer, publication or disclosure is prohibited 
except as specifically provided for in your License Agreement with Software AG.
-        Contact GitHub API Training Shop Blog About
-
   (ASLv2) Apache Commons IO
     The following NOTICE information applies:
       Apache Commons IO
diff --git 
a/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework-nar/src/main/resources/META-INF/NOTICE
 
b/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework-nar/src/main/resources/META-INF/NOTICE
index 4bf7e7e3b7..977bf13588 100644
--- 
a/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework-nar/src/main/resources/META-INF/NOTICE
+++ 
b/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework-nar/src/main/resources/META-INF/NOTICE
@@ -109,27 +109,6 @@ The following binary components are provided under the 
Apache Software License v
     The following NOTICE information applies:
       Copyright 2011 JsonPath authors
 
-  (ASLv2) Quartz
-    The following NOTICE information applies:
-      Copyright Declaration:
-      Copyright © 2003-2016 Software AG, Darmstadt, Germany and/or Software AG 
USA Inc., Reston, VA, USA, and/or its subsidiaries and/or its affiliates and/or 
their licensors.
-
-      Trademark and Patent declaration
-      The name Software AG and all Software AG product names are either 
trademarks or registered trademarks of Software AG and/or Software AG USA Inc. 
and/or its subsidiaries and/or its affiliates
-      and/or their licensors. Other company and product names mentioned herein 
may be trademarks of their respective owners.
-
-      Detailed information on trademarks and patents owned by Software AG 
and/or its subsidiaries is located at http://softwareag.com/licenses.
-
-      Third Party declaration
-      This software may include portions of third-party products. For 
third-party copyright notices, license terms, additional rights or 
restrictions, please refer to "License Texts, Copyright
-      Notices and Disclaimers of Third Party Products". For certain specific 
third-party license restrictions, please refer to section E of the Legal 
Notices available under "License Terms and
-      Conditions for Use of Software AG Products / Copyright and Trademark 
Notices of Software AG Products". These documents are part of the product 
documentation, located at
-      http://softwareag.com/licenses and/or in the root installation directory 
of the licensed product(s).
-
-      Confidentiality Disclaimer:
-      Use, reproduction, transfer, publication or disclosure is prohibited 
except as specifically provided for in your License Agreement with Software AG.
-      Contact GitHub API Training Shop Blog About
-
   (ASLv2) Jackson JSON processor
     The following NOTICE information applies:
       # Jackson JSON processor
diff --git 
a/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-server/src/main/resources/META-INF/NOTICE
 
b/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-server/src/main/resources/META-INF/NOTICE
index a38c57ba46..e64fc8c3d2 100644
--- 
a/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-server/src/main/resources/META-INF/NOTICE
+++ 
b/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-server/src/main/resources/META-INF/NOTICE
@@ -111,27 +111,6 @@ The following binary components are provided under the 
Apache Software License v
     The following NOTICE information applies:
       Copyright 2011 JsonPath authors
 
-  (ASLv2) Quartz
-    The following NOTICE information applies:
-      Copyright Declaration:
-      Copyright © 2003-2016 Software AG, Darmstadt, Germany and/or Software AG 
USA Inc., Reston, VA, USA, and/or its subsidiaries and/or its affiliates and/or 
their licensors.
-
-      Trademark and Patent declaration
-      The name Software AG and all Software AG product names are either 
trademarks or registered trademarks of Software AG and/or Software AG USA Inc. 
and/or its subsidiaries and/or its affiliates
-      and/or their licensors. Other company and product names mentioned herein 
may be trademarks of their respective owners.
-
-      Detailed information on trademarks and patents owned by Software AG 
and/or its subsidiaries is located at http://softwareag.com/licenses.
-
-      Third Party declaration
-      This software may include portions of third-party products. For 
third-party copyright notices, license terms, additional rights or 
restrictions, please refer to "License Texts, Copyright
-      Notices and Disclaimers of Third Party Products". For certain specific 
third-party license restrictions, please refer to section E of the Legal 
Notices available under "License Terms and
-      Conditions for Use of Software AG Products / Copyright and Trademark 
Notices of Software AG Products". These documents are part of the product 
documentation, located at
-      http://softwareag.com/licenses and/or in the root installation directory 
of the licensed product(s).
-
-      Confidentiality Disclaimer:
-      Use, reproduction, transfer, publication or disclosure is prohibited 
except as specifically provided for in your License Agreement with Software AG.
-      Contact GitHub API Training Shop Blog About
-
   (ASLv2) Jackson JSON processor
     The following NOTICE information applies:
       # Jackson JSON processor
diff --git a/minifi/minifi-toolkit/minifi-toolkit-assembly/NOTICE 
b/minifi/minifi-toolkit/minifi-toolkit-assembly/NOTICE
index 8afb777918..89181f7c06 100644
--- a/minifi/minifi-toolkit/minifi-toolkit-assembly/NOTICE
+++ b/minifi/minifi-toolkit/minifi-toolkit-assembly/NOTICE
@@ -109,27 +109,6 @@ The following binary components are provided under the 
Apache Software License v
       Spring Framework 5
       Copyright (c) 2002-2021 Pivotal, Inc.
 
-    (ASLv2) Quartz
-      The following NOTICE information applies:
-        Copyright Declaration:
-        Copyright © 2003-2016 Software AG, Darmstadt, Germany and/or Software 
AG USA Inc., Reston, VA, USA, and/or its subsidiaries and/or its affiliates 
and/or their licensors.
-
-        Trademark and Patent declaration
-        The name Software AG and all Software AG product names are either 
trademarks or registered trademarks of Software AG and/or Software AG USA Inc. 
and/or its subsidiaries and/or its affiliates
-        and/or their licensors. Other company and product names mentioned 
herein may be trademarks of their respective owners.
-
-        Detailed information on trademarks and patents owned by Software AG 
and/or its subsidiaries is located at https://softwareag.com/licenses.
-
-        Third Party declaration
-        This software may include portions of third-party products. For 
third-party copyright notices, license terms, additional rights or 
restrictions, please refer to "License Texts, Copyright
-        Notices and Disclaimers of Third Party Products". For certain specific 
third-party license restrictions, please refer to section E of the Legal 
Notices available under "License Terms and
-        Conditions for Use of Software AG Products / Copyright and Trademark 
Notices of Software AG Products". These documents are part of the product 
documentation, located at
-        https://softwareag.com/licenses and/or in the root installation 
directory of the licensed product(s).
-
-        Confidentiality Disclaimer:
-        Use, reproduction, transfer, publication or disclosure is prohibited 
except as specifically provided for in your License Agreement with Software AG.
-        Contact GitHub API Training Shop Blog About
-
   (ASLv2) Apache Commons IO
     The following NOTICE information applies:
       Apache Commons IO
diff --git a/nifi-assembly/NOTICE b/nifi-assembly/NOTICE
index be10b2e9cf..c85be06b05 100644
--- a/nifi-assembly/NOTICE
+++ b/nifi-assembly/NOTICE
@@ -295,27 +295,6 @@ The following binary components are provided under the 
Apache Software License v
         The Apache Tika Plugin includes developed at
         The Apache Software Foundation (http://www.apache.org/).
 
-    (ASLv2) Quartz
-      The following NOTICE information applies:
-        Copyright Declaration:
-        Copyright © 2003-2016 Software AG, Darmstadt, Germany and/or Software 
AG USA Inc., Reston, VA, USA, and/or its subsidiaries and/or its affiliates 
and/or their licensors.
-
-        Trademark and Patent declaration
-        The name Software AG and all Software AG product names are either 
trademarks or registered trademarks of Software AG and/or Software AG USA Inc. 
and/or its subsidiaries and/or its affiliates
-        and/or their licensors. Other company and product names mentioned 
herein may be trademarks of their respective owners.
-
-        Detailed information on trademarks and patents owned by Software AG 
and/or its subsidiaries is located at http://softwareag.com/licenses.
-
-        Third Party declaration
-        This software may include portions of third-party products. For 
third-party copyright notices, license terms, additional rights or 
restrictions, please refer to "License Texts, Copyright
-        Notices and Disclaimers of Third Party Products". For certain specific 
third-party license restrictions, please refer to section E of the Legal 
Notices available under "License Terms and
-        Conditions for Use of Software AG Products / Copyright and Trademark 
Notices of Software AG Products". These documents are part of the product 
documentation, located at
-        http://softwareag.com/licenses and/or in the root installation 
directory of the licensed product(s).
-
-        Confidentiality Disclaimer:
-        Use, reproduction, transfer, publication or disclosure is prohibited 
except as specifically provided for in your License Agreement with Software AG.
-        Contact GitHub API Training Shop Blog About
-
     (ASLv2) JCommander
       The following NOTICE information applies:
         JCommander Copyright Notices
diff --git a/nifi-dependency-check-maven/suppressions.xml 
b/nifi-dependency-check-maven/suppressions.xml
index 4aabb50d94..97ceaf1c8a 100644
--- a/nifi-dependency-check-maven/suppressions.xml
+++ b/nifi-dependency-check-maven/suppressions.xml
@@ -194,11 +194,6 @@
         <packageUrl 
regex="true">^pkg:maven/org\.apache\.solr/solr\-solrj@.*$</packageUrl>
         <cve>CVE-2023-44487</cve>
     </suppress>
-    <suppress>
-        <notes>Quartz maintainers dispute CVE-2023-39017 because it requires 
code injection from external users</notes>
-        <packageUrl 
regex="true">^pkg:maven/org\.quartz\-scheduler/quartz@.*$</packageUrl>
-        <cve>CVE-2023-39017</cve>
-    </suppress>
     <suppress>
         <notes>Avro project vulnerabilities do not apply to Parquet 
Avro</notes>
         <packageUrl 
regex="true">^pkg:maven/org\.apache\.parquet/parquet\-avro@.*$</packageUrl>
diff --git a/nifi-docs/src/main/asciidoc/user-guide.adoc 
b/nifi-docs/src/main/asciidoc/user-guide.adoc
index d46f999b98..bc5cc447d7 100644
--- a/nifi-docs/src/main/asciidoc/user-guide.adoc
+++ b/nifi-docs/src/main/asciidoc/user-guide.adoc
@@ -577,10 +577,8 @@ The first configuration option is the Scheduling Strategy. 
There are three possi
 |1-12 or JAN-DEC
 
 |Day of Week
-|1-7 or SUN-SAT
+|0-7 or SUN-SAT (0 or 7 is Sunday)
 
-|Year (optional)
-|empty, 1970-2099
 |===
 
 You typically specify values one of the following ways:
@@ -598,11 +596,8 @@ example, 1L indicates the last Sunday of the month.
 
 For example:
 
-* The string `0 0 13 * * ?` indicates that you want to schedule the processor 
to run at 1:00 PM every day.
+* The string `0 0 13 * * *` indicates that you want to schedule the processor 
to run at 1:00 PM every day.
 * The string `0 20 14 ? * MON-FRI` indicates that you want to schedule the 
processor to run at 2:20 PM every Monday through Friday.
-* The string `0 15 10 ? * 6L 2011-2017` indicates that you want to schedule 
the processor to run at 10:15 AM, on the last Friday of every month, between 
2011 and 2017.
-
-For additional information and examples, see the 
link:https://www.quartz-scheduler.org/documentation/quartz-2.2.2/tutorials/tutorial-lesson-06.html[cron
 triggers tutorial] in the 
link:https://www.quartz-scheduler.org/documentation/[Quartz Documentation^].
 
 ===== Concurrent Tasks
 Next, the Scheduling tab provides a configuration option named 'Concurrent 
Tasks'. This controls how many threads the Processor
diff --git 
a/nifi-external/nifi-kafka-connect/nifi-kafka-connector-assembly/NOTICE 
b/nifi-external/nifi-kafka-connect/nifi-kafka-connector-assembly/NOTICE
index e0fe281b12..3a0c14ec89 100644
--- a/nifi-external/nifi-kafka-connect/nifi-kafka-connector-assembly/NOTICE
+++ b/nifi-external/nifi-kafka-connect/nifi-kafka-connector-assembly/NOTICE
@@ -136,12 +136,3 @@ The following binary components are provided under the 
Common Development and Di
     (CDDL 1.1) (GPL2 w/ CPE) jersey-media-multipart 
(org.glassfish.jersey.media:jersey-media-multipart:jar:2.26 - 
https://jersey.github.io/)
     (CDDL 1.1) (GPL2 w/ CPE) MIME Streaming Extension 
(org.jvnet.mimepull:mimepull:jar:1.9.3 - http://mimepull.java.net)
     (CDDL 1.1) (GPL2 w/ CPE) OSGi resource locator bundle 
(org.glassfish.hk2:osgi-resource-locator:jar:1.0.1 - 
http://glassfish.org/osgi-resource-locator)
-
-
-************************
-Eclipse Public License 1.0
-************************
-
-The following binary components are provided under the Eclipse Public License 
1.0.  See project link for details.
-
-    (EPL 1.0)(LGPL 2.1) c3p0 (com.mchange:c3p0:jar:0.9.5.4 - 
https://github.com/swaldman/c3p0)
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework-nar/src/main/resources/META-INF/NOTICE
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework-nar/src/main/resources/META-INF/NOTICE
index 7fd5e92920..b84361b3c1 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework-nar/src/main/resources/META-INF/NOTICE
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework-nar/src/main/resources/META-INF/NOTICE
@@ -124,27 +124,6 @@ The following binary components are provided under the 
Apache Software License v
     The following NOTICE information applies:
       Copyright 2011 JsonPath authors
 
-  (ASLv2) Quartz
-    The following NOTICE information applies:
-      Copyright Declaration:
-      Copyright © 2003-2016 Software AG, Darmstadt, Germany and/or Software AG 
USA Inc., Reston, VA, USA, and/or its subsidiaries and/or its affiliates and/or 
their licensors.
-
-      Trademark and Patent declaration
-      The name Software AG and all Software AG product names are either 
trademarks or registered trademarks of Software AG and/or Software AG USA Inc. 
and/or its subsidiaries and/or its affiliates
-      and/or their licensors. Other company and product names mentioned herein 
may be trademarks of their respective owners.
-
-      Detailed information on trademarks and patents owned by Software AG 
and/or its subsidiaries is located at http://softwareag.com/licenses.
-
-      Third Party declaration
-      This software may include portions of third-party products. For 
third-party copyright notices, license terms, additional rights or 
restrictions, please refer to "License Texts, Copyright
-      Notices and Disclaimers of Third Party Products". For certain specific 
third-party license restrictions, please refer to section E of the Legal 
Notices available under "License Terms and
-      Conditions for Use of Software AG Products / Copyright and Trademark 
Notices of Software AG Products". These documents are part of the product 
documentation, located at
-      http://softwareag.com/licenses and/or in the root installation directory 
of the licensed product(s).
-
-      Confidentiality Disclaimer:
-      Use, reproduction, transfer, publication or disclosure is prohibited 
except as specifically provided for in your License Agreement with Software AG.
-      Contact GitHub API Training Shop Blog About
-
   (ASLv2) Jackson JSON processor
     The following NOTICE information applies:
       # Jackson JSON processor
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/pom.xml
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/pom.xml
index e113cdcf09..81a223b467 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/pom.xml
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/pom.xml
@@ -66,8 +66,8 @@
             <artifactId>nifi-web-utils</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.quartz-scheduler</groupId>
-            <artifactId>quartz</artifactId>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-context</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.nifi</groupId>
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/controller/StandardProcessorNode.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/controller/StandardProcessorNode.java
index aa9db36158..3781655bf3 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/controller/StandardProcessorNode.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/controller/StandardProcessorNode.java
@@ -88,7 +88,7 @@ import org.apache.nifi.util.FormatUtils;
 import org.apache.nifi.util.ReflectionUtils;
 import org.apache.nifi.util.ThreadUtils;
 import org.apache.nifi.util.file.classloader.ClassLoaderUtils;
-import org.quartz.CronExpression;
+import org.springframework.scheduling.support.CronExpression;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -1155,7 +1155,7 @@ public class StandardProcessorNode extends ProcessorNode 
implements Connectable
                 switch (schedulingStrategy) {
                     case CRON_DRIVEN: {
                         try {
-                            new CronExpression(evaluatedSchedulingPeriod);
+                            CronExpression.parse(evaluatedSchedulingPeriod);
                         } catch (final Exception e) {
                             results.add(new ValidationResult.Builder()
                                     .subject(RUN_SCHEDULE)
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowController.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowController.java
index e811a0f711..53ad12c56c 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowController.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/FlowController.java
@@ -103,7 +103,7 @@ import 
org.apache.nifi.controller.repository.claim.StandardContentClaim;
 import 
org.apache.nifi.controller.repository.claim.StandardResourceClaimManager;
 import org.apache.nifi.controller.repository.io.LimitedInputStream;
 import org.apache.nifi.controller.scheduling.LifecycleStateManager;
-import org.apache.nifi.controller.scheduling.QuartzSchedulingAgent;
+import org.apache.nifi.controller.scheduling.CronSchedulingAgent;
 import org.apache.nifi.controller.scheduling.RepositoryContextFactory;
 import org.apache.nifi.controller.scheduling.StandardLifecycleStateManager;
 import org.apache.nifi.controller.scheduling.StandardProcessScheduler;
@@ -594,10 +594,10 @@ public class FlowController implements 
ReportingTaskProvider, FlowAnalysisRulePr
             flowAnalyzer.initialize(controllerServiceProvider);
         }
 
-        final QuartzSchedulingAgent quartzSchedulingAgent = new 
QuartzSchedulingAgent(this, timerDrivenEngineRef.get(), 
repositoryContextFactory);
+        final CronSchedulingAgent cronSchedulingAgent = new 
CronSchedulingAgent(this, timerDrivenEngineRef.get(), repositoryContextFactory);
         final TimerDrivenSchedulingAgent timerDrivenAgent = new 
TimerDrivenSchedulingAgent(this, timerDrivenEngineRef.get(), 
repositoryContextFactory, this.nifiProperties);
         processScheduler.setSchedulingAgent(SchedulingStrategy.TIMER_DRIVEN, 
timerDrivenAgent);
-        processScheduler.setSchedulingAgent(SchedulingStrategy.CRON_DRIVEN, 
quartzSchedulingAgent);
+        processScheduler.setSchedulingAgent(SchedulingStrategy.CRON_DRIVEN, 
cronSchedulingAgent);
 
         startConnectablesAfterInitialization = new HashSet<>();
         startRemoteGroupPortsAfterInitialization = new HashSet<>();
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/scheduling/AbstractSchedulingAgent.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/scheduling/AbstractSchedulingAgent.java
index fa7c20865f..2b051121e0 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/scheduling/AbstractSchedulingAgent.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/scheduling/AbstractSchedulingAgent.java
@@ -32,7 +32,7 @@ import java.util.concurrent.Future;
  * invoked.
  *
  * @see TimerDrivenSchedulingAgent
- * @see QuartzSchedulingAgent
+ * @see CronSchedulingAgent
  */
 abstract class AbstractSchedulingAgent implements SchedulingAgent {
 
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/scheduling/QuartzSchedulingAgent.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/scheduling/CronSchedulingAgent.java
similarity index 77%
rename from 
nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/scheduling/QuartzSchedulingAgent.java
rename to 
nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/scheduling/CronSchedulingAgent.java
index beabd265e0..f44f1b813c 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/scheduling/QuartzSchedulingAgent.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/scheduling/CronSchedulingAgent.java
@@ -23,25 +23,25 @@ import org.apache.nifi.controller.tasks.ConnectableTask;
 import org.apache.nifi.controller.tasks.ReportingTaskWrapper;
 import org.apache.nifi.engine.FlowEngine;
 import org.apache.nifi.processor.exception.ProcessException;
-import org.quartz.CronExpression;
+import org.springframework.scheduling.support.CronExpression;
 
-import java.util.Date;
+import java.time.OffsetDateTime;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 
-public class QuartzSchedulingAgent extends AbstractTimeBasedSchedulingAgent {
-    private final Map<Object, Map<Integer, ScheduledFuture<?>>> quartzFutures 
= new HashMap<>();
+public class CronSchedulingAgent extends AbstractTimeBasedSchedulingAgent {
+    private final Map<Object, Map<Integer, ScheduledFuture<?>>> 
scheduledFutures = new HashMap<>();
 
-    public QuartzSchedulingAgent(final FlowController flowController, final 
FlowEngine flowEngine, final RepositoryContextFactory contextFactory) {
+    public CronSchedulingAgent(final FlowController flowController, final 
FlowEngine flowEngine, final RepositoryContextFactory contextFactory) {
         super(flowEngine, flowController, contextFactory);
     }
 
     @Override
     public void shutdown() {
-        quartzFutures.values().forEach(map -> map.values().forEach(future -> {
+        scheduledFutures.values().forEach(map -> map.values().forEach(future 
-> {
             if (!future.isCancelled()) {
                 // stop scheduling to run and interrupt currently running 
tasks.
                 future.cancel(true);
@@ -52,7 +52,7 @@ public class QuartzSchedulingAgent extends 
AbstractTimeBasedSchedulingAgent {
 
     @Override
     public void doSchedule(final ReportingTaskNode taskNode, final 
LifecycleState scheduleState) {
-        final Map<Integer, ScheduledFuture<?>> componentFuturesMap = 
quartzFutures.computeIfAbsent(taskNode, k -> new HashMap<>());
+        final Map<Integer, ScheduledFuture<?>> componentFuturesMap = 
scheduledFutures.computeIfAbsent(taskNode, k -> new HashMap<>());
         if (!componentFuturesMap.values().isEmpty()) {
             throw new IllegalStateException("Cannot schedule " + 
taskNode.getReportingTask().getIdentifier() + " because it is already scheduled 
to run");
         }
@@ -60,19 +60,19 @@ public class QuartzSchedulingAgent extends 
AbstractTimeBasedSchedulingAgent {
         final String cronSchedule = taskNode.getSchedulingPeriod();
         final CronExpression cronExpression;
         try {
-            cronExpression = new CronExpression(cronSchedule);
+            cronExpression = CronExpression.parse(cronSchedule);
         } catch (final Exception pe) {
-            throw new IllegalStateException("Cannot schedule Reporting Task " 
+ taskNode.getReportingTask().getIdentifier() + " to run because its scheduling 
period is not valid");
+            throw new IllegalStateException("Cannot schedule Reporting Task " 
+ taskNode.getReportingTask().getIdentifier() + " to run because its scheduling 
period is not valid", pe);
         }
 
         final ReportingTaskWrapper taskWrapper = new 
ReportingTaskWrapper(taskNode, scheduleState, 
flowController.getExtensionManager());
 
-        final Date initialDate = cronExpression.getTimeAfter(new Date());
-        final long initialDelay = initialDate.getTime() - 
System.currentTimeMillis();
+        final OffsetDateTime initialDate = getInitialDate(cronExpression);
+        final long initialDelay = getInitialDelay(initialDate);
 
         final Runnable command = new Runnable() {
 
-            private Date nextSchedule = initialDate;
+            private OffsetDateTime nextSchedule = initialDate;
 
             @Override
             public void run() {
@@ -98,7 +98,7 @@ public class QuartzSchedulingAgent extends 
AbstractTimeBasedSchedulingAgent {
 
     @Override
     public synchronized void doSchedule(final Connectable connectable, final 
LifecycleState scheduleState) {
-        final Map<Integer, ScheduledFuture<?>> componentFuturesMap = 
quartzFutures.computeIfAbsent(connectable, k -> new HashMap<>());
+        final Map<Integer, ScheduledFuture<?>> componentFuturesMap = 
scheduledFutures.computeIfAbsent(connectable, k -> new HashMap<>());
         if (!componentFuturesMap.values().isEmpty()) {
             throw new IllegalStateException("Cannot schedule " + connectable + 
" because it is already scheduled to run");
         }
@@ -107,9 +107,9 @@ public class QuartzSchedulingAgent extends 
AbstractTimeBasedSchedulingAgent {
 
         final CronExpression cronExpression;
         try {
-            cronExpression = new CronExpression(cronSchedule);
+            cronExpression = CronExpression.parse(cronSchedule);
         } catch (final Exception pe) {
-            throw new IllegalStateException("Cannot schedule " + connectable + 
" to run because its scheduling period is not valid");
+            throw new IllegalStateException("Cannot schedule " + connectable + 
" to run because its scheduling period is not valid", pe);
         }
 
         for (int i = 0; i < connectable.getMaxConcurrentTasks(); i++) {
@@ -117,12 +117,12 @@ public class QuartzSchedulingAgent extends 
AbstractTimeBasedSchedulingAgent {
 
             final AtomicInteger taskNumber = new AtomicInteger(i);
 
-            final Date initialDate = cronExpression.getTimeAfter(new Date());
-            final long initialDelay = initialDate.getTime() - 
System.currentTimeMillis();
+            final OffsetDateTime initialDate = getInitialDate(cronExpression);
+            final long initialDelay = getInitialDelay(initialDate);
 
             final Runnable command = new Runnable() {
 
-                private Date nextSchedule = initialDate;
+                private OffsetDateTime nextSchedule = initialDate;
 
                 @Override
                 public void run() {
@@ -163,7 +163,7 @@ public class QuartzSchedulingAgent extends 
AbstractTimeBasedSchedulingAgent {
     }
 
     private void unschedule(final Object scheduled, final LifecycleState 
scheduleState) {
-        quartzFutures.remove(scheduled);
+        scheduledFutures.remove(scheduled);
         scheduleState.getFutures().forEach(future -> {
             if (!future.isCancelled()) {
                 // stop scheduling to run but do not interrupt currently 
running tasks.
@@ -183,15 +183,25 @@ public class QuartzSchedulingAgent extends 
AbstractTimeBasedSchedulingAgent {
     public void setMaxThreadCount(final int maxThreads) {
     }
 
-    private static Date getNextSchedule(final Date currentSchedule, final 
CronExpression cronExpression) {
+    private OffsetDateTime getInitialDate(final CronExpression cronExpression) 
{
+        final OffsetDateTime now = OffsetDateTime.now();
+        final OffsetDateTime initialDate = cronExpression.next(now);
+        return initialDate == null ? now : initialDate;
+    }
+
+    private long getInitialDelay(final OffsetDateTime initialDate) {
+        return initialDate.toInstant().toEpochMilli() - 
System.currentTimeMillis();
+    }
+
+    private static OffsetDateTime getNextSchedule(final OffsetDateTime 
currentSchedule, final CronExpression cronExpression) {
         // Since the clock has not a millisecond precision, we have to check 
that we
         // schedule the next time after the time this was supposed to run, 
otherwise
         // we might end up with running the same task twice
-        final Date now = new Date();
-        return cronExpression.getTimeAfter(now.after(currentSchedule) ? now : 
currentSchedule);
+        final OffsetDateTime now = OffsetDateTime.now();
+        return cronExpression.next(now.isAfter(currentSchedule) ? now : 
currentSchedule);
     }
 
-    private static long getDelay(Date nextSchedule) {
-        return Math.max(nextSchedule.getTime() - System.currentTimeMillis(), 
0L);
+    private static long getDelay(final OffsetDateTime nextSchedule) {
+        return Math.max(nextSchedule.toInstant().toEpochMilli() - 
System.currentTimeMillis(), 0L);
     }
 }
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/scheduling/CronSchedulingAgentTest.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/scheduling/CronSchedulingAgentTest.java
new file mode 100644
index 0000000000..5f0fef1ace
--- /dev/null
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/scheduling/CronSchedulingAgentTest.java
@@ -0,0 +1,114 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.controller.scheduling;
+
+import org.apache.nifi.components.state.StateManager;
+import org.apache.nifi.components.state.StateManagerProvider;
+import org.apache.nifi.connectable.Connectable;
+import org.apache.nifi.controller.FlowController;
+import org.apache.nifi.controller.ReportingTaskNode;
+import org.apache.nifi.engine.FlowEngine;
+import org.apache.nifi.reporting.ReportingTask;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import java.util.UUID;
+
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.when;
+
+@ExtendWith(MockitoExtension.class)
+class CronSchedulingAgentTest {
+
+    private static final String DEFAULT_CRON_EXPRESSION = "* * * * * ?";
+
+    private static final String INVALID_CRON_EXPRESSION = "* * * * * * 2023";
+
+    private static final int CONCURRENT_TASKS = 1;
+
+    @Mock
+    private FlowController flowController;
+
+    @Mock
+    private FlowEngine flowEngine;
+
+    @Mock
+    private RepositoryContextFactory repositoryContextFactory;
+
+    @Mock
+    private Connectable connectable;
+
+    @Mock
+    private ReportingTaskNode reportingTaskNode;
+
+    @Mock
+    private ReportingTask reportingTask;
+
+    @Mock
+    private StateManagerProvider stateManagerProvider;
+
+    @Mock
+    private StateManager stateManager;
+
+    private CronSchedulingAgent schedulingAgent;
+
+    @BeforeEach
+    void setSchedulingAgent() {
+        schedulingAgent = new CronSchedulingAgent(flowController, flowEngine, 
repositoryContextFactory);
+    }
+
+    @Test
+    void testDoScheduleConnectable() {
+        final String componentId = UUID.randomUUID().toString();
+        final LifecycleState lifecycleState = new LifecycleState(componentId);
+
+        
when(connectable.evaluateParameters(eq(DEFAULT_CRON_EXPRESSION))).thenReturn(DEFAULT_CRON_EXPRESSION);
+        
when(connectable.getSchedulingPeriod()).thenReturn(DEFAULT_CRON_EXPRESSION);
+        when(connectable.getMaxConcurrentTasks()).thenReturn(CONCURRENT_TASKS);
+        when(connectable.getIdentifier()).thenReturn(componentId);
+        
when(flowController.getStateManagerProvider()).thenReturn(stateManagerProvider);
+        
when(stateManagerProvider.getStateManager(eq(componentId))).thenReturn(stateManager);
+
+        schedulingAgent.doSchedule(connectable, lifecycleState);
+    }
+
+    @Test
+    void testDoScheduleReportingTaskNode() {
+        final String componentId = UUID.randomUUID().toString();
+        final LifecycleState lifecycleState = new LifecycleState(componentId);
+
+        
when(reportingTaskNode.getSchedulingPeriod()).thenReturn(DEFAULT_CRON_EXPRESSION);
+
+        schedulingAgent.doSchedule(reportingTaskNode, lifecycleState);
+    }
+
+    @Test
+    void testDoScheduleReportingTaskNodeCronExpressionInvalid() {
+        final String componentId = UUID.randomUUID().toString();
+        final LifecycleState lifecycleState = new LifecycleState(componentId);
+
+        
when(reportingTaskNode.getSchedulingPeriod()).thenReturn(INVALID_CRON_EXPRESSION);
+        when(reportingTaskNode.getReportingTask()).thenReturn(reportingTask);
+        when(reportingTask.getIdentifier()).thenReturn(componentId);
+
+        assertThrows(IllegalStateException.class, () -> 
schedulingAgent.doSchedule(reportingTaskNode, lifecycleState));
+    }
+}
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/scheduling/DummyScheduleState.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/scheduling/DummyScheduleState.java
deleted file mode 100644
index 91980b7f20..0000000000
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/scheduling/DummyScheduleState.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.nifi.controller.scheduling;
-
-public class DummyScheduleState extends LifecycleState {
-
-    public DummyScheduleState(boolean isScheduled) {
-        super("Dummy Component");
-        setScheduled(isScheduled);
-    }
-
-}
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/pom.xml
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/pom.xml
index 957282749c..998bca8faa 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/pom.xml
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/pom.xml
@@ -267,11 +267,6 @@
             <artifactId>swagger-annotations</artifactId>
             <scope>provided</scope>
         </dependency>
-        <dependency>
-            <groupId>org.quartz-scheduler</groupId>
-            <artifactId>quartz</artifactId>
-            <scope>provided</scope>
-        </dependency>
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-collections4</artifactId>
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardProcessorDAO.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardProcessorDAO.java
index 6c31172292..c4198fe282 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardProcessorDAO.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardProcessorDAO.java
@@ -55,10 +55,9 @@ import org.apache.nifi.web.api.dto.ProcessorConfigDTO;
 import org.apache.nifi.web.api.dto.ProcessorDTO;
 import org.apache.nifi.web.dao.ComponentStateDAO;
 import org.apache.nifi.web.dao.ProcessorDAO;
-import org.quartz.CronExpression;
+import org.springframework.scheduling.support.CronExpression;
 
 import java.net.URL;
-import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashSet;
@@ -313,11 +312,9 @@ public class StandardProcessorDAO extends ComponentDAO 
implements ProcessorDAO {
                     break;
                 case CRON_DRIVEN:
                     try {
-                        new CronExpression(evaluatedSchedulingPeriod);
-                    } catch (final ParseException pe) {
-                        throw new 
IllegalArgumentException(String.format("Scheduling Period '%s' is not a valid 
cron expression: %s", schedulingPeriod, pe.getMessage()));
+                        CronExpression.parse(evaluatedSchedulingPeriod);
                     } catch (final Exception e) {
-                        throw new IllegalArgumentException("Scheduling Period 
is not a valid cron expression: " + schedulingPeriod);
+                        throw new 
IllegalArgumentException(String.format("Scheduling Period '%s' is not a valid 
cron expression: %s", schedulingPeriod, e.getMessage()));
                     }
                     break;
             }
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardReportingTaskDAO.java
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardReportingTaskDAO.java
index 1de941b52e..6ccdb847be 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardReportingTaskDAO.java
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardReportingTaskDAO.java
@@ -49,10 +49,9 @@ import 
org.apache.nifi.web.api.dto.ConfigVerificationResultDTO;
 import org.apache.nifi.web.api.dto.ReportingTaskDTO;
 import org.apache.nifi.web.dao.ComponentStateDAO;
 import org.apache.nifi.web.dao.ReportingTaskDAO;
-import org.quartz.CronExpression;
+import org.springframework.scheduling.support.CronExpression;
 
 import java.net.URL;
-import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -227,11 +226,9 @@ public class StandardReportingTaskDAO extends ComponentDAO 
implements ReportingT
                     break;
                 case CRON_DRIVEN:
                     try {
-                        new 
CronExpression(reportingTaskDTO.getSchedulingPeriod());
-                    } catch (final ParseException pe) {
-                        throw new 
IllegalArgumentException(String.format("Scheduling Period '%s' is not a valid 
cron expression: %s", reportingTaskDTO.getSchedulingPeriod(), pe.getMessage()));
+                        
CronExpression.parse(reportingTaskDTO.getSchedulingPeriod());
                     } catch (final Exception e) {
-                        throw new IllegalArgumentException("Scheduling Period 
is not a valid cron expression: " + reportingTaskDTO.getSchedulingPeriod());
+                        throw new 
IllegalArgumentException(String.format("Scheduling Period '%s' is not a valid 
cron expression: %s", reportingTaskDTO.getSchedulingPeriod(), e.getMessage()));
                     }
                     break;
             }
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-headless-server-nar/src/main/resources/META-INF/NOTICE
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-headless-server-nar/src/main/resources/META-INF/NOTICE
index 00782b4486..e80bf161e5 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-headless-server-nar/src/main/resources/META-INF/NOTICE
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-headless-server-nar/src/main/resources/META-INF/NOTICE
@@ -111,27 +111,6 @@ The following binary components are provided under the 
Apache Software License v
     The following NOTICE information applies:
       Copyright 2011 JsonPath authors
 
-  (ASLv2) Quartz
-    The following NOTICE information applies:
-      Copyright Declaration:
-      Copyright © 2003-2016 Software AG, Darmstadt, Germany and/or Software AG 
USA Inc., Reston, VA, USA, and/or its subsidiaries and/or its affiliates and/or 
their licensors.
-
-      Trademark and Patent declaration
-      The name Software AG and all Software AG product names are either 
trademarks or registered trademarks of Software AG and/or Software AG USA Inc. 
and/or its subsidiaries and/or its affiliates
-      and/or their licensors. Other company and product names mentioned herein 
may be trademarks of their respective owners.
-
-      Detailed information on trademarks and patents owned by Software AG 
and/or its subsidiaries is located at http://softwareag.com/licenses.
-
-      Third Party declaration
-      This software may include portions of third-party products. For 
third-party copyright notices, license terms, additional rights or 
restrictions, please refer to "License Texts, Copyright
-      Notices and Disclaimers of Third Party Products". For certain specific 
third-party license restrictions, please refer to section E of the Legal 
Notices available under "License Terms and
-      Conditions for Use of Software AG Products / Copyright and Trademark 
Notices of Software AG Products". These documents are part of the product 
documentation, located at
-      http://softwareag.com/licenses and/or in the root installation directory 
of the licensed product(s).
-
-      Confidentiality Disclaimer:
-      Use, reproduction, transfer, publication or disclosure is prohibited 
except as specifically provided for in your License Agreement with Software AG.
-      Contact GitHub API Training Shop Blog About
-
   (ASLv2) Jackson JSON processor
     The following NOTICE information applies:
       # Jackson JSON processor
diff --git 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-server-nar/src/main/resources/META-INF/NOTICE
 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-server-nar/src/main/resources/META-INF/NOTICE
index 19b472df35..51ea8a7a12 100644
--- 
a/nifi-nar-bundles/nifi-framework-bundle/nifi-server-nar/src/main/resources/META-INF/NOTICE
+++ 
b/nifi-nar-bundles/nifi-framework-bundle/nifi-server-nar/src/main/resources/META-INF/NOTICE
@@ -111,27 +111,6 @@ The following binary components are provided under the 
Apache Software License v
     The following NOTICE information applies:
       Copyright 2011 JsonPath authors
 
-  (ASLv2) Quartz
-    The following NOTICE information applies:
-      Copyright Declaration:
-      Copyright © 2003-2016 Software AG, Darmstadt, Germany and/or Software AG 
USA Inc., Reston, VA, USA, and/or its subsidiaries and/or its affiliates and/or 
their licensors.
-
-      Trademark and Patent declaration
-      The name Software AG and all Software AG product names are either 
trademarks or registered trademarks of Software AG and/or Software AG USA Inc. 
and/or its subsidiaries and/or its affiliates
-      and/or their licensors. Other company and product names mentioned herein 
may be trademarks of their respective owners.
-
-      Detailed information on trademarks and patents owned by Software AG 
and/or its subsidiaries is located at http://softwareag.com/licenses.
-
-      Third Party declaration
-      This software may include portions of third-party products. For 
third-party copyright notices, license terms, additional rights or 
restrictions, please refer to "License Texts, Copyright
-      Notices and Disclaimers of Third Party Products". For certain specific 
third-party license restrictions, please refer to section E of the Legal 
Notices available under "License Terms and
-      Conditions for Use of Software AG Products / Copyright and Trademark 
Notices of Software AG Products". These documents are part of the product 
documentation, located at
-      http://softwareag.com/licenses and/or in the root installation directory 
of the licensed product(s).
-
-      Confidentiality Disclaimer:
-      Use, reproduction, transfer, publication or disclosure is prohibited 
except as specifically provided for in your License Agreement with Software AG.
-      Contact GitHub API Training Shop Blog About
-
   (ASLv2) Jackson JSON processor
     The following NOTICE information applies:
       # Jackson JSON processor
diff --git a/nifi-nar-bundles/nifi-framework-bundle/pom.xml 
b/nifi-nar-bundles/nifi-framework-bundle/pom.xml
index 6f29f7117b..3bcb44e461 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/pom.xml
+++ b/nifi-nar-bundles/nifi-framework-bundle/pom.xml
@@ -255,11 +255,6 @@
                 <artifactId>javax.ws.rs-api</artifactId>
                 <version>2.1.1</version>
             </dependency>
-            <dependency>
-                <groupId>org.quartz-scheduler</groupId>
-                <artifactId>quartz</artifactId>
-                <version>2.3.2</version>
-            </dependency>
 
             <!-- open id connect - override transitive dependency version 
ranges -->
             <dependency>
diff --git 
a/nifi-nar-bundles/nifi-media-bundle/nifi-media-nar/src/main/resources/META-INF/NOTICE
 
b/nifi-nar-bundles/nifi-media-bundle/nifi-media-nar/src/main/resources/META-INF/NOTICE
index fe2b8c3429..5ad70bcfba 100644
--- 
a/nifi-nar-bundles/nifi-media-bundle/nifi-media-nar/src/main/resources/META-INF/NOTICE
+++ 
b/nifi-nar-bundles/nifi-media-bundle/nifi-media-nar/src/main/resources/META-INF/NOTICE
@@ -265,27 +265,6 @@ The following binary components are provided under the 
Apache Software License v
         Copyright 2004 Sun Microsystems, Inc.
         Copyright 2011 The ROME Team
 
-    (ASLv2) Quartz
-      The following NOTICE information applies:
-        Copyright Declaration:
-        Copyright © 2003-2016 Software AG, Darmstadt, Germany and/or Software 
AG USA Inc., Reston, VA, USA, and/or its subsidiaries and/or its affiliates 
and/or their licensors.
-
-        Trademark and Patent declaration
-        The name Software AG and all Software AG product names are either 
trademarks or registered trademarks of Software AG and/or Software AG USA Inc. 
and/or its subsidiaries and/or its affiliates
-        and/or their licensors. Other company and product names mentioned 
herein may be trademarks of their respective owners.
-
-        Detailed information on trademarks and patents owned by Software AG 
and/or its subsidiaries is located at http://softwareag.com/licenses.
-
-        Third Party declaration
-        This software may include portions of third-party products. For 
third-party copyright notices, license terms, additional rights or 
restrictions, please refer to "License Texts, Copyright
-        Notices and Disclaimers of Third Party Products". For certain specific 
third-party license restrictions, please refer to section E of the Legal 
Notices available under "License Terms and
-        Conditions for Use of Software AG Products / Copyright and Trademark 
Notices of Software AG Products". These documents are part of the product 
documentation, located at
-        http://softwareag.com/licenses and/or in the root installation 
directory of the licensed product(s).
-
-        Confidentiality Disclaimer:
-        Use, reproduction, transfer, publication or disclosure is prohibited 
except as specifically provided for in your License Agreement with Software AG.
-        Contact GitHub API Training Shop Blog About
-
     (ASLv2) JCommander
       The following NOTICE information applies:
         JCommander Copyright Notices
diff --git a/nifi-stateless/nifi-stateless-assembly/NOTICE 
b/nifi-stateless/nifi-stateless-assembly/NOTICE
index 225cf11e19..98747baddd 100644
--- a/nifi-stateless/nifi-stateless-assembly/NOTICE
+++ b/nifi-stateless/nifi-stateless-assembly/NOTICE
@@ -149,11 +149,3 @@ The following binary components are provided under the 
Eclipse Distribution Lice
     (EDL 1.0) JAXB (JSR 222) Reference Implementation 
(org.glassfish.jaxb:jaxb-runtime:jar:2.3.5)
     (EDL 1.0) Istack Common Utility Code Runtime 
(com.sun.istack:istack-commons-runtime:jar:3.0.12)
     (EDL 1.0) TXW2 Runtime (org.glassfish.jaxb:txw2:jar:2.3.5)
-
-************************
-Eclipse Public License 1.0
-************************
-
-The following binary components are provided under the Eclipse Public License 
1.0.  See project link for details.
-
-    (EPL 1.0)(LGPL 2.1) c3p0 (com.mchange:c3p0:jar:0.9.5.4 - 
https://github.com/swaldman/c3p0)
diff --git 
a/nifi-stateless/nifi-stateless-bundle/nifi-stateless-nar/src/main/resources/META-INF/NOTICE
 
b/nifi-stateless/nifi-stateless-bundle/nifi-stateless-nar/src/main/resources/META-INF/NOTICE
index d2f230e478..7505de5546 100644
--- 
a/nifi-stateless/nifi-stateless-bundle/nifi-stateless-nar/src/main/resources/META-INF/NOTICE
+++ 
b/nifi-stateless/nifi-stateless-bundle/nifi-stateless-nar/src/main/resources/META-INF/NOTICE
@@ -136,12 +136,3 @@ The following binary components are provided under the 
Common Development and Di
     (CDDL 1.1) (GPL2 w/ CPE) jersey-media-multipart 
(org.glassfish.jersey.media:jersey-media-multipart:jar:2.26 - 
https://jersey.github.io/)
     (CDDL 1.1) (GPL2 w/ CPE) MIME Streaming Extension 
(org.jvnet.mimepull:mimepull:jar:1.9.3 - http://mimepull.java.net)
     (CDDL 1.1) (GPL2 w/ CPE) OSGi resource locator bundle 
(org.glassfish.hk2:osgi-resource-locator:jar:1.0.1 - 
http://glassfish.org/osgi-resource-locator)
-
-
-************************
-Eclipse Public License 1.0
-************************
-
-The following binary components are provided under the Eclipse Public License 
1.0.  See project link for details.
-
-    (EPL 1.0)(LGPL 2.1) c3p0 (com.mchange:c3p0:jar:0.9.5.4 - 
https://github.com/swaldman/c3p0)

Reply via email to