code: public static void addJob(
        String jobName,
        Class<? extends Job> jobClass,
        Map<String, Object> params,
        boolean isConcurrencyAllowed)
        throws SundialSchedulerException {
  
      try {
        JobDataMap jobDataMap = new JobDataMap();
        if (params != null) {
          for (Entry<String, Object> entry : params.entrySet()) {
            jobDataMap.put(entry.getKey(), entry.getValue());
          }
        }
  
        JobDetail jobDetail =
            newJobBuilder(jobClass)
                .withIdentity(jobName)
                .usingJobData(jobDataMap)
                .isConcurrencyAllowed(isConcurrencyAllowed)
                .build();
  
        getScheduler().addJob(jobDetail);
  
      } catch (SchedulerException e) {
        logger.error("ERROR ADDING JOB!!!", e);
        throw new SundialSchedulerException("ERROR ADDING JOB!!!", e);
      }
    }
docs: Adds a Job to the scheduler. Replaces a matching existing Job.
  
  @param jobName
  @param jobClass
  @param params Set this null if there are no params
  @param isConcurrencyAllowed