Package com.xebialabs.xlrelease.domain

# Class Release

java.lang.Object
com.xebialabs.deployit.plugin.api.udm.base.BaseConfigurationItem
com.xebialabs.xlrelease.domain.PlanItem
com.xebialabs.xlrelease.domain.Release

All Implemented Interfaces:
  `ConfigurationItem`, `com.xebialabs.deployit.repository.core.Securable`, `CiWithInternalMetadata`, `CiWithUid`, `VariableContainer`, `VisitableItem`, `Serializable`, `Comparable<BaseConfigurationItem>`

@Metadata(description="A release or template.", root=APPLICATIONS, versioned=false) public class Release extends PlanItem implements com.xebialabs.deployit.repository.core.Securable, CiWithInternalMetadata, VariableContainer, CiWithUid

See Also:
  - Serialized Form

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected boolean`
  `abortOnFailure`
  `protected boolean`
  `allowConcurrentReleasesFromTrigger`
  `protected boolean`
  `allowPasswordsInAllFields`
  `protected boolean`
  `archiveRelease`
  `protected String`
  `author`
  `protected int`
  `automatedResumeCount`
  `protected boolean`
  `autoStart`
  `protected String`
  `calendarLinkToken`
  `protected boolean`
  `calendarPublished`
  `protected Set<String>`
  `categories`
  `protected boolean`
  `createdFromTrigger`
  `static final String`
  `DEFAULT_TARGET_FOLDER_ID_PROPERTY_NAME`
  `protected boolean`
  `disableNotifications`
  `protected List<ReleaseExtension>`
  `extensions`
  `protected ReleaseKind`
  `kind`
  `protected TemplateLogo`
  `logo`
  `protected int`
  `maxAutomatedResumes`
  `protected String`
  `originTemplateId`
  `protected List<Phase>`
  `phases`
  `protected Date`
  `queryableEndDate`
  `protected Date`
  `queryableStartDate`
  `protected FlagStatus`
  `realFlagStatus`
  `protected List<ReleaseTrigger>`
  `releaseTriggers`
  Deprecated.
  `protected RiskProfile`
  `riskProfile`
  `static final String`
  `SCRIPT_USER_PASSWORD_VARIABLE_MAPPING_KEY`
  `protected String`
  `scriptUsername`
  `protected String`
  `scriptUserPassword`
  `protected String`
  `startedFromTaskId`
  `protected ReleaseStatus`
  `status`
  `protected List<String>`
  `tags`
  `protected List<Team>`
  `teams`
  The Digital.ai Release teams are transient CIs and are kept for backwards-compatibility.
  `protected boolean`
  `tutorial`
  `protected List<Variable>`
  `variables`

  ### Fields inherited from class com.xebialabs.xlrelease.domain.PlanItem

  `BY_TITLE, description, dueDate, endDate, flagComment, flagStatus, overdueNotified, owner, plannedDuration, scheduledStartDate, startDate, title`

  ### Fields inherited from class com.xebialabs.deployit.plugin.api.udm.base.BaseConfigurationItem

  `id, syntheticProperties, type`

  ### Fields inherited from interface com.xebialabs.deployit.plugin.api.udm.ConfigurationItem

  `SYNTHETIC_PROPERTIES_FIELD, TYPE_FIELD`

  ### Fields inherited from interface com.xebialabs.deployit.repository.core.Securable

  `SECURITY_PERMISSIONS_PROPERTY`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Release()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Changes`
  `abort(String abortComment)`
  `Changes`
  `abortAsPartOfBulkOperation(String abortComment)`
  `void`
  `accept(ReleaseVisitor visitor)`
  `void`
  `addBelow(String phaseId, Phase addedPhase)`
  `void`
  `addPhase(Phase phase)`
  `void`
  `addPhase(Phase phase, int position)`
  `void`
  `addTeam(Team team)`
  `Variable`
  `addVariable(Variable variable)`
  `void`
  `addVariables(List<Variable> newVariables)`
  `boolean`
  `canAutomaticallyStartReleaseNow()`
  `boolean`
  `canScheduleReleaseStart()`
  `void`
  `checkDatesValidity()`
  `void`
  `checkDatesValidityForRelease()`
  `void`
  `checkDatesValidityForTemplate()`
  `void`
  `checkVariableCanBeAdded(Variable variable)`
  `void`
  `clearComments()`
  `void`
  `clearTaskModificationAttributes()`
  `Set<VariableReference>`
  `collectVariableReferences()`
  `Set<VariableReference>`
  `collectVariableReferences(VisitableItem updated)`
  `void`
  `createCiAttributes()`
  `void`
  `deleteAttachment(String attachmentId)`
  `void`
  `deletePhase(Phase phase)`
  `void`
  `deleteReleaseTriggerById(String triggerId)`
  Deprecated.
  `void`
  `deleteTask(Task task)`
  `void`
  `deleteTeam(String teamId)`
  `Changes`
  `failTask(String taskId, String failReason)`
  `Changes`
  `failTask(String taskId, String failReason, boolean fromAbort)`
  `Changes`
  `failTask(String taskId, String failReason, User user, boolean fromAbort)`
  `List<Phase>`
  `filterPhasesContainingInTitle(List<Phase> phases, String partialTitleToLookFor)`
  `Date`
  `findFirstSetDate()`
  `String`
  `findFolderId()`
  `void`
  `fixId(String folderId)`
  `Map<String,InternalMetadata>`
  `get$metadata()`
  `String`
  `getAbortComment()`
  `List<Task>`
  `getActiveTasks()`
  `Team`
  `getAdminTeam()`
  `List<GateTask>`
  `getAllGates()`
  `boolean`
  `getAllowTargetFolderOverride()`
  `List<PlanItem>`
  `getAllPlanItems()`
  `Map<String,String>`
  `getAllStringVariableValues()`
  `List<Task>`
  `getAllTasks()`
  `<T> List<T>`
  `getAllTasksOfType(Class<T> clazz)`
  `List<UserInputTask>`
  `getAllUserInputTasks()`
  `List<Variable>`
  `getAllVariables()`
  `Map<String,ValueWithInterpolation>`
  `getAllVariableValuesAsStringsWithInterpolationInfo()`
  `Attachment`
  `getAttachment(String attachmentId)`
  `List<Attachment>`
  `getAttachments()`
  `String`
  `getAuthor()`
  `int`
  `getAutomatedResumeCount()`
  `String`
  `getCalendarLinkToken()`
  `Set<String>`
  `getCategories()`
  `List<PlanItem>`
  `getChildren()`
  `List<Variable>`
  `getCiPropertyVariables()`
  `Integer`
  `getCiUid()`
  `Phase`
  `getCurrentPhase()`
  `Task`
  `getCurrentTask()`
  `String`
  `getDefaultTargetFolderId()`
  `String`
  `getDisplayPath()`
  `List<ReleaseExtension>`
  `getExtensions()`
  `String`
  `getFolderId()`
  `FolderVariables`
  `getFolderVariables()`
  `GlobalVariables`
  `getGlobalVariables()`
  `ReleaseKind`
  `getKind()`
  `TemplateLogo`
  `getLogo()`
  `int`
  `getMaxAutomatedResumes()`
  `int`
  `getMaxConcurrentReleases()`
  `Phase`
  `getNextPhase(Phase currentPhase)`
  `String`
  `getOriginTemplateId()`
  `String`
  `getParentReleaseId()`
  `Map<String,String>`
  `getPasswordVariableValues()`
  This method is kept for backwards compatibility.
  `Set<String>`
  `getPermissions(String user, List<com.xebialabs.deployit.security.Role> userRoles)`
  `Set<String>`
  `getPermissions(Collection<String> principals, List<com.xebialabs.deployit.security.Role> userRoles)`
  `Phase`
  `getPhase(Integer index)`
  `Phase`
  `getPhase(String phaseId)`
  `List<Phase>`
  `getPhases()`
  `List<Phase>`
  `getPhasesByTitle(String phaseTitle)`
  `List<Phase>`
  `getPhasesContainingInTitle(String partialTitleToLookFor)`
  `Date`
  `getQueryableEndDate()`
  `Date`
  `getQueryableStartDate()`
  `FlagStatus`
  `getRealFlagStatus()`
  `Release`
  `getRelease()`
  `List<Attachment>`
  `getReleaseAttachments()`
  `Optional<ReleaseTrigger>`
  `getReleaseTriggerById(String releaseTriggerId)`
  Deprecated.
  `List<ReleaseTrigger>`
  `getReleaseTriggers()`
  Deprecated.
  `Integer`
  `getReleaseUid()`
  `RiskProfile`
  `getRiskProfile()`
  `String`
  `getRootReleaseId()`
  `String`
  `getScriptUsername()`
  `String`
  `getScriptUserPassword()`
  `String`
  `getStartedFromTaskId()`
  `ReleaseStatus`
  `getStatus()`
  `List<String>`
  `getTags()`
  `Task`
  `getTask(String taskId)`
  `List<Task>`
  `getTasksByTitle(String phaseTitle, String taskTitle)`
  `Set<Task>`
  `getTasksUsingAttachment(String attachmentId)`
  `List<Team>`
  `getTeams()`
  `Set<String>`
  `getTeamsOf(String username, List<com.xebialabs.deployit.security.Role> userRoles)`
  `Team`
  `getTeamWithId(String id)`
  `String`
  `getUrl()`
  `Optional<Variable>`
  `getVariableById(String variableId)`
  `Map<String,String>`
  `getVariableMapping()`
  `List<Variable>`
  `getVariables()`
  `Map<String,Variable>`
  `getVariablesByKeys()`
  `Set<String>`
  `getVariablesKeysInNonInterpolatableVariableValues()`
  `List<UsagePoint>`
  `getVariableUsages()`
  `Map<String,String>`
  `getVariableValues()`
  This method is kept for backwards compatibility.
  `boolean`
  `hasBeenStarted()`
  `boolean`
  `hasCurrentPhase()`
  `boolean`
  `hasNextPhase(Phase phase)`
  `boolean`
  `hasNoAutomatedTaskRunning()`
  `boolean`
  `hasPhase(String phaseId)`
  `boolean`
  `hasScriptUsername()`
  `boolean`
  `hasTeam(String teamName)`
  `boolean`
  `isAborted()`
  `boolean`
  `isAbortOnFailure()`
  `boolean`
  `isActive()`
  `boolean`
  `isAllowConcurrentReleasesFromTrigger()`
  `boolean`
  `isAllowPasswordsInAllFields()`
  `boolean`
  `isArchived()`
  `boolean`
  `isArchiveRelease()`
  `boolean`
  `isAutoStart()`
  `boolean`
  `isCalendarPublished()`
  `boolean`
  `isCreatedFromTrigger()`
  `boolean`
  `isDefunct()`
  `boolean`
  `isDisableNotifications()`
  `boolean`
  `isDone()`
  `boolean`
  `isFailed()`
  `boolean`
  `isFailing()`
  `boolean`
  `isInProgress()`
  `boolean`
  `isPaused()`
  `boolean`
  `isPending()`
  `boolean`
  `isPlanned()`
  `boolean`
  `isPlannedOrActive()`
  `boolean`
  `isTemplate()`
  `boolean`
  `isTutorial()`
  `boolean`
  `isUpdatable()`
  `boolean`
  `isVariableUsed(Variable variable)`
  `boolean`
  `isWorkflow()`
  `Changes`
  `markTaskAsDone(String taskId, TaskStatus status)`
  `Phase`
  `movePhase(Integer originIndex, Integer targetIndex)`
  `Changes`
  `removeVariable(String variableId)`
  `void`
  `replaceTask(Task task)`
  `void`
  `replaceTrigger(ReleaseTrigger releaseTrigger)`
  Deprecated.
  `void`
  `replaceVariable(Variable current, Variable replacement)`
  `Changes`
  `restorePhases(List<Phase> phases)`
  `Changes`
  `resume()`
  `Changes`
  `retryTask(String taskId)`
  `List<Variable>`
  `scanAndAddNewVariables()`
  `List<Variable>`
  `scanAndAddNewVariables(VisitableItem updated)`
  `void`
  `setAbortOnFailure(boolean abortOnFailure)`
  `void`
  `setAllowConcurrentReleasesFromTrigger(boolean allowConcurrentReleasesFromTrigger)`
  `void`
  `setAllowPasswordsInAllFields(boolean allowPasswordsInAllFields)`
  `void`
  `setAllowTargetFolderOverride(boolean allowTargetFolderOverride)`
  `void`
  `setArchived(boolean isArchived)`
  `void`
  `setArchiveRelease(boolean archiveRelease)`
  `void`
  `setAttachments(List<Attachment> attachments)`
  `void`
  `setAuthor(String author)`
  `void`
  `setAutomatedResumeCount(int automatedResumeCount)`
  `void`
  `setAutoStart(boolean autoStart)`
  `void`
  `setCalendarLinkToken(String calendarLinkToken)`
  `void`
  `setCalendarPublished(boolean calendarPublished)`
  `void`
  `setCategories(Set<String> categories)`
  `void`
  `setCiUid(Integer ciUid)`
  `void`
  `setCreatedFromTrigger(boolean createdFromTrigger)`
  `void`
  `setDefaultTargetFolderId(String defaultTargetFolderId)`
  `void`
  `setDisableNotifications(boolean disableNotifications)`
  `void`
  `setDueDate(Date value)`
  `void`
  `setEndDate(Date value)`
  `void`
  `setExtensions(List<ReleaseExtension> extensions)`
  `void`
  `setFolderVariables(FolderVariables folderVariables)`
  `void`
  `setGlobalVariables(GlobalVariables globalVariables)`
  `void`
  `setKind(ReleaseKind kind)`
  `void`
  `setLogo(TemplateLogo logo)`
  `void`
  `setMaxAutomatedResumes(int maxAutomatedResumes)`
  `void`
  `setMaxConcurrentReleases(int maxConcurrentReleases)`
  `void`
  `setOriginTemplateId(String originTemplateId)`
  `void`
  `setParentReleaseId(String parentReleaseId)`
  `void`
  `setPasswordVariableValues(Map<String,?> variableValues)`
  This method is kept for backwards compatibility.
  `void`
  `setPhases(List<Phase> phases)`
  `void`
  `setQueryableEndDate(Date queryableEndDate)`
  `void`
  `setQueryableStartDate(Date queryableStartDate)`
  `void`
  `setReleaseTriggers(List<ReleaseTrigger> releaseTriggers)`
  Deprecated.
  `void`
  `setReleaseUid(Integer releaseUid)`
  `void`
  `setRiskProfile(RiskProfile riskProfile)`
  `void`
  `setRootReleaseId(String rootReleaseId)`
  `void`
  `setScheduledStartDate(Date scheduledStartDate)`
  `void`
  `setScriptUsername(String scriptUsername)`
  `void`
  `setScriptUserPassword(String scriptUserPassword)`
  `void`
  `setStartDate(Date value)`
  `void`
  `setStartedFromTaskId(String startedFromTaskId)`
  `void`
  `setStatus(ReleaseStatus value)`
  `void`
  `setTags(List<String> tags)`
  `void`
  `setTeams(List<Team> teams)`
  `void`
  `setTutorial(boolean tutorial)`
  `void`
  `setVariableMapping(Map<String,String> variableMapping)`
  `void`
  `setVariables(List<Variable> variables)`
  `void`
  `setVariableValues(Map<String,?> variableValues)`
  This method is kept for backwards compatibility.
  `Changes`
  `start()`
  `Changes`
  `start(boolean releaseStartedImmediatelyAfterBeingCreated)`
  `Changes`
  `startAsPartOfBulkOperation()`
  `Changes`
  `startPendingTask(String taskId)`
  `Changes`
  `startWithInput(String taskId)`
  `Changes`
  `taskPreconditionValidated(String taskId)`
  `String`
  `toString()`
  `void`
  `updateCiAttributes()`
  `void`
  `updateDatesForRelease(Date scheduledStartDate, Date dueDate, Integer plannedDuration)`
  `void`
  `updateDatesForTemplate(Date scheduledStartDate, Date dueDate, Integer plannedDuration)`
  `void`
  `updateRealFlagStatus()`
  `void`
  `updateTeam(Team newTeam)`

  ### Methods inherited from class com.xebialabs.xlrelease.domain.PlanItem

  `calculateDueDate, checkDatesValidity, getActualDuration, getComputedPlannedDuration, getDescription, getDueDate, getEndDate, getEndOrDueDate, getFlagComment, getFlagStatus, getOrCalculateDueDate, getOwner, getPlannedDuration, getScheduledStartDate, getStartDate, getStartOrScheduledDate, getTitle, hasDueDate, hasEndDate, hasEndOrDueDate, hasOwner, hasOwner, hasPlannedDuration, hasScheduledStartDate, hasStartDate, hasStartOrScheduledDate, hasTitle, hasTitle, hasValidStartDates, isFlagged, isOverdue, isOverdueNotified, isTitleContaining, moveChildren, setDates, setDescription, setFlagComment, setFlagStatus, setOverdueNotified, setOwner, setPlannedDuration, setStartAndEndDatesIfEmpty, setTitle, shouldNotifyOverdue, updateDates, updateDuration`

  ### Methods inherited from class com.xebialabs.deployit.plugin.api.udm.base.BaseConfigurationItem

  `compareTo, equals, get$ciAttributes, get$directoryReference, get$externalProperties, get$internalId, get$referenceId, get$securedCi, get$securedDirectoryReference, get$token, get$validationMessages, getId, getName, getProperty, getPropertyDescriptor, getType, hashCode, hasProperty, set$ciAttributes, set$directoryReference, set$externalProperties, set$internalId, set$referenceId, set$securedCi, set$securedDirectoryReference, set$token, set$validationMessages, setId, setProperty, setType`

  ### Methods inherited from class java.lang.Object

  `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

  ### Methods inherited from interface com.xebialabs.deployit.plugin.api.udm.ConfigurationItem

  `get$directoryReference, get$internalId, get$referenceId, get$securedCi, get$securedDirectoryReference, get$validationMessages, getId, getName, getProperty, getType, hasProperty, setId, setProperty`

- ## Field Details

  - ### SCRIPT_USER_PASSWORD_VARIABLE_MAPPING_KEY

    public static final String SCRIPT_USER_PASSWORD_VARIABLE_MAPPING_KEY
    See Also:
      - Constant Field Values

  - ### DEFAULT_TARGET_FOLDER_ID_PROPERTY_NAME

    public static final String DEFAULT_TARGET_FOLDER_ID_PROPERTY_NAME
    See Also:
      - Constant Field Values

  - ### releaseTriggers

    @Deprecated @Property(asContainment=true, required=false, description="The triggers that may start a release from a template. (Templates only)", isTransient=true) protected List<ReleaseTrigger> releaseTriggers
    Deprecated.

  - ### teams

    @Property(asContainment=true, required=false, description="The teams configured on the release.", isTransient=true) protected List<Team> teams
    The Digital.ai Release teams are transient CIs and are kept for backwards-compatibility. The teams' data is stored using platform's `Role`. The teams need to be exported to template JSONs so they have to be a UDM property.

  - ### phases

    @Property(asContainment=true, required=false, description="The list of phases in the release.") protected List<Phase> phases

  - ### queryableStartDate

    @Property(required=false, category="internal") protected Date queryableStartDate

  - ### queryableEndDate

    @Property(required=false, category="internal") protected Date queryableEndDate

  - ### realFlagStatus

    @Property(description="The calculated flag status, derived from the flags from the release and its tasks.", defaultValue="OK") protected FlagStatus realFlagStatus

  - ### status

    @Property(description="The state the release is in.") protected ReleaseStatus status

  - ### kind

    @Property(defaultValue="RELEASE", label="Kind", description="The kind of a template.") protected ReleaseKind kind

  - ### tags

    @Property(required=false, description="The tags of the release. Tags can be used for grouping and querying.") protected List<String> tags

  - ### categories

    @Property(required=false, description="The categories for the release.") protected Set<String> categories

  - ### variables

    @Property(asContainment=true, required=false, description="List of variable CIs representing variables in this release or template") protected List<Variable> variables

  - ### calendarLinkToken

    @Property(required=false, category="internal") protected String calendarLinkToken

  - ### calendarPublished

    @Property(required=false, category="internal") protected boolean calendarPublished

  - ### tutorial

    @Property(required=false, category="internal") protected boolean tutorial

  - ### abortOnFailure

    @Property(required=false, description="Releases automatically abort when a task fails if this property is set to true.") protected boolean abortOnFailure

  - ### archiveRelease

    @Property(required=false, defaultValue="true", description="Archive release") protected boolean archiveRelease

  - ### allowPasswordsInAllFields

    @Property(required=false, description="Allows the usage of passwords in non-password fields. Passwords values are masked in the UI and logging output but are decrypted before the task execution.") protected boolean allowPasswordsInAllFields

  - ### disableNotifications

    @Property(required=false, description="Disable all notifications for this release.") protected boolean disableNotifications

  - ### allowConcurrentReleasesFromTrigger

    @Property(required=false, description="If set to false, a trigger can\'t create a release if the previous one it created is still running.") protected boolean allowConcurrentReleasesFromTrigger

  - ### originTemplateId

    @Property(required=false, description="The ID of the template that created this release.") protected String originTemplateId

  - ### createdFromTrigger

    @Property(required=false, description="True if release was created by a trigger.") protected boolean createdFromTrigger

  - ### scriptUsername

    @Property(required=false, description="The credentials of this user are used to run automated scripts in this release.") protected String scriptUsername

  - ### scriptUserPassword

    @Property(required=false, password=true, description="The password of the user that lends his credentials to run the scripts.") protected String scriptUserPassword

  - ### extensions

    @Property(required=false, asContainment=true, description="Extensions of this release, e.g. \'Release contents dashboard\'") protected List<ReleaseExtension> extensions

  - ### startedFromTaskId

    @Property(required=false, description="The Create Release task from which this release was created, if any") protected String startedFromTaskId

  - ### autoStart

    @Property(required=false, defaultValue="false", description="If true, the release will automatically start at scheduledStartDate.") protected boolean autoStart

  - ### automatedResumeCount

    @Property(category="internal") protected int automatedResumeCount

  - ### maxAutomatedResumes

    @Property(category="internal", hidden=true, defaultValue="50", description="The maximum number of automatic release resumes performed during phase restarts.") protected int maxAutomatedResumes

  - ### riskProfile

    @Property(required=false, description="Risk profile used in risk calculations") protected RiskProfile riskProfile

  - ### author

    @Property(required=false, description="The author of the template") protected String author

  - ### logo

    @Property(nested=true, required=false, description="The logo of the template") protected TemplateLogo logo

- ## Constructor Details

  - ### Release

    public Release()

- ## Method Details

  - ### getPhases

    public List<Phase> getPhases()

  - ### setPhases

    public void setPhases(List<Phase> phases)

  - ### getReleaseTriggers

    @Deprecated public List<ReleaseTrigger> getReleaseTriggers()
    Deprecated.

  - ### getReleaseTriggerById

    @Deprecated public Optional<ReleaseTrigger> getReleaseTriggerById(String releaseTriggerId)
    Deprecated.

  - ### setReleaseTriggers

    @Deprecated public void setReleaseTriggers(List<ReleaseTrigger> releaseTriggers)
    Deprecated.

  - ### deleteReleaseTriggerById

    @Deprecated public void deleteReleaseTriggerById(String triggerId)
    Deprecated.

  - ### replaceTrigger

    @Deprecated public void replaceTrigger(ReleaseTrigger releaseTrigger)
    Deprecated.

  - ### getRootReleaseId

    public String getRootReleaseId()

  - ### setRootReleaseId

    public void setRootReleaseId(String rootReleaseId)

  - ### getParentReleaseId

    public String getParentReleaseId()

  - ### setParentReleaseId

    public void setParentReleaseId(String parentReleaseId)

  - ### getMaxConcurrentReleases

    public int getMaxConcurrentReleases()

  - ### setMaxConcurrentReleases

    public void setMaxConcurrentReleases(int maxConcurrentReleases)

  - ### getCiUid

    public Integer getCiUid()
    Specified by:
      `getCiUid` in interface `CiWithUid`

  - ### setCiUid

    public void setCiUid(Integer ciUid)
    Specified by:
      `setCiUid` in interface `CiWithUid`

  - ### getAutomatedResumeCount

    public int getAutomatedResumeCount()

  - ### setAutomatedResumeCount

    public void setAutomatedResumeCount(int automatedResumeCount)

  - ### getMaxAutomatedResumes

    public int getMaxAutomatedResumes()

  - ### setMaxAutomatedResumes

    public void setMaxAutomatedResumes(int maxAutomatedResumes)

  - ### getAbortComment

    public String getAbortComment()

  - ### getVariableValues

    public Map<String,String> getVariableValues()
    This method is kept for backwards compatibility. `getVariables()` method provides richer access to the variable management.
    Returns:
      mapping from variable name to variable value containing only variables with string values. Variable names are in `${key}` format.

  - ### getPasswordVariableValues

    public Map<String,String> getPasswordVariableValues()
    This method is kept for backwards compatibility. `getVariables()` method provides richer access to the variable management.
    Returns:
      mapping from variable name to variable value containing only variables with single password values. Variable names are in `${key}` format.

  - ### getCiPropertyVariables

    public List<Variable> getCiPropertyVariables()

  - ### getAllStringVariableValues

    public Map<String,String> getAllStringVariableValues()

  - ### getAllVariableValuesAsStringsWithInterpolationInfo

    public Map<String,ValueWithInterpolation> getAllVariableValuesAsStringsWithInterpolationInfo()

  - ### getVariablesKeysInNonInterpolatableVariableValues

    public Set<String> getVariablesKeysInNonInterpolatableVariableValues()

  - ### getVariablesByKeys

    public Map<String,Variable> getVariablesByKeys()

  - ### setVariableValues

    public void setVariableValues(Map<String,?> variableValues)
    This method is kept for backwards compatibility. `setVariables(List)` method provides richer access to the variable management.
    Parameters:
      `variableValues` - mapping from variable name to variable value containing only variables with string values. Variable names are in `${key}` or `key` format.

  - ### setPasswordVariableValues

    public void setPasswordVariableValues(Map<String,?> variableValues)
    This method is kept for backwards compatibility. `setVariables(List)` method provides richer access to the variable management.
    Parameters:
      `variableValues` - mapping from password variable name to password variable value. Variable names are in `${key}` or `key` format.

  - ### scanAndAddNewVariables

    public List<Variable> scanAndAddNewVariables(VisitableItem updated)

  - ### scanAndAddNewVariables

    public List<Variable> scanAndAddNewVariables()

  - ### getAllVariables

    public List<Variable> getAllVariables()
    Specified by:
      `getAllVariables` in interface `VariableContainer`

  - ### getVariables

    public List<Variable> getVariables()

  - ### addVariables

    public void addVariables(List<Variable> newVariables)

  - ### replaceVariable

    public void replaceVariable(Variable current, Variable replacement)

  - ### setVariables

    public void setVariables(List<Variable> variables)

  - ### getVariableById

    public Optional<Variable> getVariableById(String variableId)

  - ### addVariable

    public Variable addVariable(Variable variable)

  - ### checkVariableCanBeAdded

    public void checkVariableCanBeAdded(Variable variable)

  - ### getGlobalVariables

    public GlobalVariables getGlobalVariables()

  - ### setGlobalVariables

    public void setGlobalVariables(GlobalVariables globalVariables)

  - ### getFolderVariables

    public FolderVariables getFolderVariables()

  - ### setFolderVariables

    public void setFolderVariables(FolderVariables folderVariables)

  - ### removeVariable

    public Changes removeVariable(String variableId)

  - ### isVariableUsed

    public boolean isVariableUsed(Variable variable)

  - ### getStatus

    public ReleaseStatus getStatus()

  - ### setStatus

    public void setStatus(ReleaseStatus value)

  - ### getAdminTeam

    public Team getAdminTeam()

  - ### getTeams

    public List<Team> getTeams()

  - ### setTeams

    public void setTeams(List<Team> teams)

  - ### getCategories

    public Set<String> getCategories()

  - ### setCategories

    public void setCategories(Set<String> categories)

  - ### getTags

    public List<String> getTags()

  - ### setTags

    public void setTags(List<String> tags)

  - ### getAttachments

    public List<Attachment> getAttachments()

  - ### setAttachments

    public void setAttachments(List<Attachment> attachments)

  - ### deleteAttachment

    public void deleteAttachment(String attachmentId)

  - ### getTasksUsingAttachment

    public Set<Task> getTasksUsingAttachment(String attachmentId)

  - ### hasBeenStarted

    public boolean hasBeenStarted()
    Specified by:
      `hasBeenStarted` in class `PlanItem`

  - ### getReleaseAttachments

    public List<Attachment> getReleaseAttachments()

  - ### getCalendarLinkToken

    public String getCalendarLinkToken()

  - ### setCalendarLinkToken

    public void setCalendarLinkToken(String calendarLinkToken)

  - ### isCalendarPublished

    public boolean isCalendarPublished()

  - ### setCalendarPublished

    public void setCalendarPublished(boolean calendarPublished)

  - ### getExtensions

    public List<ReleaseExtension> getExtensions()

  - ### setExtensions

    public void setExtensions(List<ReleaseExtension> extensions)

  - ### getRealFlagStatus

    public FlagStatus getRealFlagStatus()

  - ### getCurrentPhase

    public Phase getCurrentPhase()

  - ### getCurrentTask

    public Task getCurrentTask()

  - ### hasCurrentPhase

    public boolean hasCurrentPhase()

  - ### start

    public Changes start()

  - ### start

    public Changes start(boolean releaseStartedImmediatelyAfterBeingCreated)

  - ### startAsPartOfBulkOperation

    public Changes startAsPartOfBulkOperation()

  - ### resume

    public Changes resume()

  - ### markTaskAsDone

    public Changes markTaskAsDone(String taskId, TaskStatus status)

  - ### startPendingTask

    public Changes startPendingTask(String taskId)

  - ### startWithInput

    public Changes startWithInput(String taskId)

  - ### taskPreconditionValidated

    public Changes taskPreconditionValidated(String taskId)

  - ### failTask

    public Changes failTask(String taskId, String failReason)

  - ### failTask

    public Changes failTask(String taskId, String failReason, boolean fromAbort)

  - ### failTask

    public Changes failTask(String taskId, String failReason, User user, boolean fromAbort)

  - ### abort

    public Changes abort(String abortComment)

  - ### abortAsPartOfBulkOperation

    public Changes abortAsPartOfBulkOperation(String abortComment)

  - ### retryTask

    public Changes retryTask(String taskId)

  - ### getNextPhase

    public Phase getNextPhase(Phase currentPhase)

  - ### hasNextPhase

    public boolean hasNextPhase(Phase phase)

  - ### addPhase

    public void addPhase(Phase phase)

  - ### addPhase

    public void addPhase(Phase phase, int position)

  - ### deletePhase

    public void deletePhase(Phase phase)

  - ### getAllTasks

    public List<Task> getAllTasks()

  - ### getTask

    public Task getTask(String taskId)

  - ### getAttachment

    public Attachment getAttachment(String attachmentId)

  - ### movePhase

    public Phase movePhase(Integer originIndex, Integer targetIndex)

  - ### getPhase

    public Phase getPhase(Integer index)

  - ### getPhase

    public Phase getPhase(String phaseId)

  - ### hasPhase

    public boolean hasPhase(String phaseId)

  - ### addTeam

    public void addTeam(Team team)

  - ### deleteTeam

    public void deleteTeam(String teamId)

  - ### addBelow

    public void addBelow(String phaseId, Phase addedPhase)

  - ### collectVariableReferences

    public Set<VariableReference> collectVariableReferences()

  - ### collectVariableReferences

    public Set<VariableReference> collectVariableReferences(VisitableItem updated)

  - ### getAllGates

    public List<GateTask> getAllGates()

  - ### getAllUserInputTasks

    public List<UserInputTask> getAllUserInputTasks()

  - ### getAllTasksOfType

    public <T> List<T> getAllTasksOfType(Class<T> clazz)

  - ### findFirstSetDate

    public Date findFirstSetDate()

  - ### clearComments

    public void clearComments()

  - ### clearTaskModificationAttributes

    public void clearTaskModificationAttributes()

  - ### hasNoAutomatedTaskRunning

    public boolean hasNoAutomatedTaskRunning()

  - ### isDone

    public boolean isDone()
    Specified by:
      `isDone` in class `PlanItem`

  - ### isPlannedOrActive

    public boolean isPlannedOrActive()

  - ### isActive

    public boolean isActive()
    Specified by:
      `isActive` in class `PlanItem`

  - ### isDefunct

    public boolean isDefunct()

  - ### isUpdatable

    public boolean isUpdatable()
    Specified by:
      `isUpdatable` in class `PlanItem`

  - ### isAborted

    public boolean isAborted()
    Specified by:
      `isAborted` in class `PlanItem`

  - ### isFailing

    public boolean isFailing()

  - ### isFailed

    public boolean isFailed()

  - ### isPaused

    public boolean isPaused()

  - ### isTemplate

    public boolean isTemplate()

  - ### isWorkflow

    public boolean isWorkflow()

  - ### isPlanned

    public boolean isPlanned()

  - ### isInProgress

    public boolean isInProgress()

  - ### isTutorial

    public boolean isTutorial()

  - ### setTutorial

    public void setTutorial(boolean tutorial)

  - ### isAbortOnFailure

    public boolean isAbortOnFailure()

  - ### setAbortOnFailure

    public void setAbortOnFailure(boolean abortOnFailure)

  - ### isArchiveRelease

    public boolean isArchiveRelease()

  - ### setArchiveRelease

    public void setArchiveRelease(boolean archiveRelease)

  - ### isAllowPasswordsInAllFields

    public boolean isAllowPasswordsInAllFields()

  - ### setAllowPasswordsInAllFields

    public void setAllowPasswordsInAllFields(boolean allowPasswordsInAllFields)

  - ### isDisableNotifications

    public boolean isDisableNotifications()

  - ### setDisableNotifications

    public void setDisableNotifications(boolean disableNotifications)

  - ### isAllowConcurrentReleasesFromTrigger

    public boolean isAllowConcurrentReleasesFromTrigger()

  - ### setAllowConcurrentReleasesFromTrigger

    public void setAllowConcurrentReleasesFromTrigger(boolean allowConcurrentReleasesFromTrigger)

  - ### getOriginTemplateId

    public String getOriginTemplateId()

  - ### setOriginTemplateId

    public void setOriginTemplateId(String originTemplateId)

  - ### isCreatedFromTrigger

    public boolean isCreatedFromTrigger()

  - ### setCreatedFromTrigger

    public void setCreatedFromTrigger(boolean createdFromTrigger)

  - ### getRelease

    public Release getRelease()
    Specified by:
      `getRelease` in class `PlanItem`

  - ### getReleaseUid

    public Integer getReleaseUid()
    Specified by:
      `getReleaseUid` in class `PlanItem`

  - ### setReleaseUid

    public void setReleaseUid(Integer releaseUid)
    Specified by:
      `setReleaseUid` in class `PlanItem`

  - ### getDisplayPath

    public String getDisplayPath()
    Specified by:
      `getDisplayPath` in class `PlanItem`

  - ### getTeamWithId

    public Team getTeamWithId(String id)

  - ### getChildren

    public List<PlanItem> getChildren()
    Specified by:
      `getChildren` in class `PlanItem`

  - ### getAllPlanItems

    public List<PlanItem> getAllPlanItems()

  - ### toString

    public String toString()
    Overrides:
      `toString` in class `BaseConfigurationItem`

  - ### checkDatesValidityForRelease

    public void checkDatesValidityForRelease()

  - ### checkDatesValidityForTemplate

    public void checkDatesValidityForTemplate()

  - ### checkDatesValidity

    public void checkDatesValidity()

  - ### updateDatesForRelease

    public void updateDatesForRelease(Date scheduledStartDate, Date dueDate, Integer plannedDuration)

  - ### updateDatesForTemplate

    public void updateDatesForTemplate(Date scheduledStartDate, Date dueDate, Integer plannedDuration)

  - ### getQueryableStartDate

    public Date getQueryableStartDate()

  - ### setQueryableStartDate

    public void setQueryableStartDate(Date queryableStartDate)

  - ### getQueryableEndDate

    public Date getQueryableEndDate()

  - ### setQueryableEndDate

    public void setQueryableEndDate(Date queryableEndDate)

  - ### getScriptUsername

    public String getScriptUsername()

  - ### setScriptUsername

    public void setScriptUsername(String scriptUsername)

  - ### getScriptUserPassword

    public String getScriptUserPassword()

  - ### setScriptUserPassword

    public void setScriptUserPassword(String scriptUserPassword)

  - ### getUrl

    public String getUrl()

  - ### getVariableMapping

    public Map<String,String> getVariableMapping()

  - ### setVariableMapping

    public void setVariableMapping(Map<String,String> variableMapping)

  - ### getRiskProfile

    public RiskProfile getRiskProfile()

  - ### setRiskProfile

    public void setRiskProfile(RiskProfile riskProfile)

  - ### getStartedFromTaskId

    public String getStartedFromTaskId()

  - ### setStartedFromTaskId

    public void setStartedFromTaskId(String startedFromTaskId)

  - ### setStartDate

    public void setStartDate(Date value)
    Overrides:
      `setStartDate` in class `PlanItem`

  - ### setScheduledStartDate

    public void setScheduledStartDate(Date scheduledStartDate)
    Overrides:
      `setScheduledStartDate` in class `PlanItem`

  - ### setEndDate

    public void setEndDate(Date value)
    Overrides:
      `setEndDate` in class `PlanItem`

  - ### setDueDate

    public void setDueDate(Date value)
    Overrides:
      `setDueDate` in class `PlanItem`

  - ### getKind

    public ReleaseKind getKind()

  - ### setKind

    public void setKind(ReleaseKind kind)

  - ### getAuthor

    public String getAuthor()

  - ### setAuthor

    public void setAuthor(String author)

  - ### getLogo

    public TemplateLogo getLogo()

  - ### setLogo

    public void setLogo(TemplateLogo logo)

  - ### getDefaultTargetFolderId

    public String getDefaultTargetFolderId()

  - ### setDefaultTargetFolderId

    public void setDefaultTargetFolderId(String defaultTargetFolderId)

  - ### getAllowTargetFolderOverride

    public boolean getAllowTargetFolderOverride()

  - ### setAllowTargetFolderOverride

    public void setAllowTargetFolderOverride(boolean allowTargetFolderOverride)

  - ### updateTeam

    public void updateTeam(Team newTeam)

  - ### updateRealFlagStatus

    public void updateRealFlagStatus()

  - ### hasScriptUsername

    public boolean hasScriptUsername()

  - ### getActiveTasks

    public List<Task> getActiveTasks()

  - ### isArchived

    public boolean isArchived()

  - ### setArchived

    public void setArchived(boolean isArchived)

  - ### accept

    public void accept(ReleaseVisitor visitor)
    Specified by:
      `accept` in interface `VisitableItem`

  - ### getVariableUsages

    public List<UsagePoint> getVariableUsages()
    Specified by:
      `getVariableUsages` in class `PlanItem`

  - ### get$metadata

    public Map<String,InternalMetadata> get$metadata()
    Specified by:
      `get$metadata` in interface `CiWithInternalMetadata`

  - ### getFolderId

    public String getFolderId()

  - ### findFolderId

    public String findFolderId()

  - ### hasTeam

    public boolean hasTeam(String teamName)

  - ### getTeamsOf

    public Set<String> getTeamsOf(String username, List<com.xebialabs.deployit.security.Role> userRoles)

  - ### getPermissions

    public Set<String> getPermissions(String user, List<com.xebialabs.deployit.security.Role> userRoles)

  - ### getPermissions

    public Set<String> getPermissions(Collection<String> principals, List<com.xebialabs.deployit.security.Role> userRoles)

  - ### isAutoStart

    public boolean isAutoStart()

  - ### setAutoStart

    public void setAutoStart(boolean autoStart)

  - ### canAutomaticallyStartReleaseNow

    public boolean canAutomaticallyStartReleaseNow()

  - ### canScheduleReleaseStart

    public boolean canScheduleReleaseStart()

  - ### isPending

    public boolean isPending()

  - ### deleteTask

    public void deleteTask(Task task)

  - ### replaceTask

    public void replaceTask(Task task)

  - ### getPhasesByTitle

    public List<Phase> getPhasesByTitle(String phaseTitle)

  - ### getPhasesContainingInTitle

    public List<Phase> getPhasesContainingInTitle(String partialTitleToLookFor)

  - ### filterPhasesContainingInTitle

    public List<Phase> filterPhasesContainingInTitle(List<Phase> phases, String partialTitleToLookFor)

  - ### getTasksByTitle

    public List<Task> getTasksByTitle(String phaseTitle, String taskTitle)

  - ### restorePhases

    public Changes restorePhases(List<Phase> phases)

  - ### fixId

    public void fixId(String folderId)

  - ### createCiAttributes

    public void createCiAttributes()

  - ### updateCiAttributes

    public void updateCiAttributes()