Hi,
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
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.