I was trying with below script.
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.project.ProjectManager
import com.atlassian.jira.project.Project
import com.atlassian.jira.security.groups.GroupManager
import com.atlassian.jira.util.ImportUtils
import org.apache.log4j.Logger
// Initialize logger
def log = Logger.getLogger("com.acme.archive")
// Define the list of project keys to archive
def projectKeys = ["TVP"] // Modify this list with your project keys
// Get the Project Manager component
def projectManager = ComponentAccessor.getComponent(ProjectManager)
// Define the user to perform the actions as (you can replace this with an actual user, or assume current user)
def userManager = ComponentAccessor.getUserManager()
def adminUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser() // Use admin user for actions
// Define a helper function to archive a project
def archiveProject(Project project) {
try {
// Disable issue creation for the project
//project.setAllowCreateIssues(false)
//projectManager.updateProject(project)
// Make the project read-only
project.setArchived(true)
// project.archive() // Mark the project as archived (this step may need to be adjusted based on Jira's version)
projectManager.updateProject(project)
log.info("Project ${project.getKey()} archived successfully.")
} catch (Exception e) {
log.error("Error archiving project ${project.getKey()}: ${e.message}")
}
}
// Loop through each project key and attempt to archive
projectKeys.each { projectKey ->
Project project = projectManager.getProjectObjByKey(projectKey)
if (project) {
log.info("Found project: ${project.getName()} (${project.getKey()})")
archiveProject(project)
} else {
log.warn("Project with key ${projectKey} not found.")
}
}
log.info("Bulk project archiving completed.")