Groovy Script error after upgraded the jira server instance from 7.2.6 version to 8.20.1 version

Ravi Kanth
Contributor
March 9, 2022

Hi,

Groovy Script Error.PNG

We use the script to Find user in AD(Active Directry) and add user to JIRA user directory.
In the lower version jira 7.2.6 groovy script worked when we upgraded jira version to 8.20.1 we find errors in groovy script .

Logs : ERROR [importUser.groovy]: Create user '[meagrawal]' failed: email=You must specify a valid email address.

When I run the script it shows the error as
groovy.lang.MissingPropertyException: No such property: issue for class: Script723
at Script723.run(Script723.groovy:22)

Script

import com.atlassian.jira.bc.user.UserService
import com.atlassian.jira.bc.user.UserService.CreateUserRequest
import com.atlassian.jira.bc.user.UserService.CreateUserValidationResult
import com.atlassian.jira.bc.user.UserService.UpdateUserValidationResult
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.user.ApplicationUser
import com.atlassian.jira.user.util.UserManager
import com.atlassian.jira.issue.IssueManager
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import com.atlassian.jira.issue.MutableIssue

Issue issueObj = issue

Logger logger = LoggerFactory.getLogger("postfunctions.importUser.groovy")
logger.trace("Running post-function script. Issue: ${issueObj?.key}")

ApplicationUser currentUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager()
UserManager userManager = ComponentAccessor.getUserManager()

UserService userService = ComponentAccessor.getComponent(UserService.class)

CustomField hereAdUser = customFieldManager.getCustomFieldObjectByName("HERE AD User");
CustomField hereAdDisplay = customFieldManager.getCustomFieldObjectByName("HERE AD Display_Name");
CustomField hereAdEmail = customFieldManager.getCustomFieldObjectByName("HERE AD Email_Address");

String username = issueObj.getCustomFieldValue(hereAdUser)
if (username) {
String displayName = issueObj.getCustomFieldValue(hereAdDisplay)
String email = issueObj.getCustomFieldValue(hereAdEmail)
logger.debug("Username: ${username}; displayName: ${displayName}; email: ${email}")

ApplicationUser foundUser = userManager.getUserByName(username)
if (foundUser) {
if (!foundUser.active) {
logger.warn("User ${username} already found in JIRA directory; but is not active")
// Activate foundUser
ApplicationUser updateUser = userService.newUserBuilder(foundUser).active(true).build()
UpdateUserValidationResult updateValidationResult = userService.validateUpdateUser(updateUser)
if (updateValidationResult.isValid()) {
userService.updateUser(updateValidationResult)
logger.info("Activated ${updateUser.name}")
} else {
logger.error("Update of ${username} failed: ${updateValidationResult.getErrorCollection().getErrors().entrySet().join(',')}")
}

} else {
logger.error("Active user ${username} already found in JIRA directory")
}
} else {
logger.debug("User ${username} will be added to JIRA directory")
final CreateUserRequest createUserRequest = CreateUserRequest.withUserDetails(currentUser, username, null, email, displayName)
.performPermissionCheck(false)
.withNoApplicationAccess()
CreateUserValidationResult createResult = userService.validateCreateUser(createUserRequest);
if (createResult.isValid()) {
ApplicationUser newUser = userService.createUser(createResult);
logger.info("Created user '${newUser.name}'")
} else {
logger.error "Create user '${username}' failed: ${createResult.getErrorCollection().getErrors().entrySet().join(',')}"
}
}
} else {
logger.warn("No HERE AD user identified.")
}

 

 

Please do the needful..

Thanks,

N.Ravikanth

1 answer

0 votes
Sachin Dhamale
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
August 18, 2022

@Ravi Kanth ,

 

You need to replace the deprecated api with valid one.

After jira upgrade there will be some API wont work in the later version of jira so you need to replace those API with valid one

Suggest an answer

Log in or Sign up to answer