Before you can use the Active Directory connector in workflows, you must configure a connection for Active Directory connector, as described in Configuring-service-connectors. The following table describes the parameters required to create a connection:
| | |
---|
| | Active Directory server host name |
| | Active Directory server LDAP port 389 is the default port. |
| dc=adhost,dc=server-1,dc=com | Base directory for search operations |
| | |
| | |
| | Password of authentication user |
| /etc/bmc/ARSystem/LDAPS.cert | The path of the SSL certificate. It is required only if SSL is used between the Active Directory server and the BMC Digital Workplace Catalog server. Note: The certificate must be located inside the Docker container. |
The following table provides an overview of all Active Directory connector actions:
| | | | |
---|
| Add Active Directory User To Group | Adds a user to a group in Active Directory. When a user is added to a group, the following changes are made to Active Directory: - A user profile is updated with a new memberOf attribute record that corresponds to the distinguishedName value of the group to which the user was added.
- A group profile is updated with a new member attribute record that corresponds to the distinguishedName value of the user added to the group.
| | |
Remove Active Directory User From Group | Removes a user from a group in Active Directory. A user record and a group record are updated when an association is removed. | | |
Find Active Directory User | Finds a user in Active Directory, and returns the user parameters. This action searches for the first filtering parameter in the following sequence: - Logon Name
- Distinguished Name
- Full Name
- Email
The returned object contains output properties that can be used in later workflow steps. If a search is performed without filtering parameters, the search will be performed only for the object type: User. If more than one user is found, an error is displayed. | | |
| Updates attributes for a user record in Active Directory. For details about how to build a workflow with this action, see an example workflow for updating user attributes. | | |
Find Active Directory Group | Returns the group if the group exists; otherwise, an error occurs. | | |
| Returns True if the user is a member of the group. | | |
| | Adds a computer to a group in Active Directory. A computer record and a group record are updated when an association is created. When a computer is added to a group, the following changes are made to Active Directory: - A computer profile is updated with a new memberOf attribute record that corresponds to the distinguishedName value of the group to which the computer was added.
- A group profile is updated with a new member attribute record that corresponds to the distinguishedName value of the computer added to the group.
| | |
Computer Is Member of Group | Checks whether a computer belongs to a group. | | |
| Finds a computer in Active Directory, and returns the computer details. The returned object contains output properties that can be used in later workflow steps. | | |
Remove Computer From Group | Removes a computer from a group in Active Directory. A computer record and a group record are updated when an association is removed. | | |
Update Computer Attributes | Updates attributes to a computer record in Active Directory. This is very similar to the Update User Attributes action. For details about how to build a workflow with this action, see an example workflow for updating user attributes. | | |
Tip
For all actions that return exceptions in case of a negative scenario (incorrect input), the workflow is interrupted, and a corresponding service request is failed with an error. You can catch these exceptions by using a Boundary Error, and handle them as you need by building alternative paths for your processes. For more details about error handling, see Handling-errors-in-processes.
For all actions that return NULL, TRUE, or FALSE, you can use an Exclusive gateway to define the alternative paths for your process. For more details, see example of error handling for Find AD user operation.
The following workflow shows how to configure error handling for a use case when no user is returned as a result of search.

If the queried user is not found, the service request is closed with a message configured in the Error End event:

The catalog administrator receives an in-app notification, whether the operation failed or succeeded. The Exclusive gateway configures this notification along with the corresponding messages in the Send In App Notification actions:

Click here to view JSON of this workflow
Failed to execute the [code] macro. Cause: [RuntimeError: maximum recursion limit exceeded]. Click on this message for details.
org.xwiki.rendering.macro.MacroExecutionException: Failed to highlight content
at org.xwiki.rendering.internal.macro.code.CodeMacro.highlight(CodeMacro.java:176)
at org.xwiki.rendering.internal.macro.code.CodeMacro.parseContent(CodeMacro.java:151)
at org.xwiki.rendering.internal.macro.code.CodeMacro.parseContent(CodeMacro.java:66)
at org.xwiki.rendering.macro.box.AbstractBoxMacro$BoxBlockBuilder.build(AbstractBoxMacro.java:264)
at org.xwiki.rendering.macro.box.AbstractBoxMacro.execute(AbstractBoxMacro.java:179)
at org.xwiki.rendering.macro.box.AbstractBoxMacro.execute(AbstractBoxMacro.java:56)
at org.xwiki.rendering.internal.transformation.macro.MacroTransformation.transform(MacroTransformation.java:441)
at org.xwiki.rendering.internal.transformation.DefaultRenderingContext.transformInContext(DefaultRenderingContext.java:183)
at org.xwiki.rendering.internal.transformation.DefaultTransformationManager.performTransformations(DefaultTransformationManager.java:88)
at org.xwiki.display.internal.DocumentContentAsyncExecutor.executeInCurrentExecutionContext(DocumentContentAsyncExecutor.java:396)
at org.xwiki.display.internal.DocumentContentAsyncExecutor.execute(DocumentContentAsyncExecutor.java:269)
at org.xwiki.display.internal.DocumentContentAsyncRenderer.execute(DocumentContentAsyncRenderer.java:112)
at org.xwiki.rendering.async.internal.block.AbstractBlockAsyncRenderer.render(AbstractBlockAsyncRenderer.java:157)
at org.xwiki.rendering.async.internal.block.AbstractBlockAsyncRenderer.render(AbstractBlockAsyncRenderer.java:54)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.syncRender(DefaultAsyncRendererExecutor.java:290)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.render(DefaultAsyncRendererExecutor.java:267)
at org.xwiki.rendering.async.internal.block.DefaultBlockAsyncRendererExecutor.execute(DefaultBlockAsyncRendererExecutor.java:125)
at org.xwiki.display.internal.DocumentContentDisplayer.display(DocumentContentDisplayer.java:67)
at org.xwiki.display.internal.DocumentContentDisplayer.display(DocumentContentDisplayer.java:43)
at org.xwiki.display.internal.DefaultDocumentDisplayer.display(DefaultDocumentDisplayer.java:96)
at org.xwiki.display.internal.DefaultDocumentDisplayer.display(DefaultDocumentDisplayer.java:39)
at org.xwiki.sheet.internal.SheetDocumentDisplayer.display(SheetDocumentDisplayer.java:123)
at org.xwiki.sheet.internal.SheetDocumentDisplayer.display(SheetDocumentDisplayer.java:52)
at org.xwiki.display.internal.ConfiguredDocumentDisplayer.display(ConfiguredDocumentDisplayer.java:68)
at org.xwiki.display.internal.ConfiguredDocumentDisplayer.display(ConfiguredDocumentDisplayer.java:42)
at com.xpn.xwiki.doc.XWikiDocument.display(XWikiDocument.java:1412)
at com.xpn.xwiki.doc.XWikiDocument.getRenderedContent(XWikiDocument.java:1548)
at com.xpn.xwiki.doc.XWikiDocument.displayDocument(XWikiDocument.java:1498)
at com.xpn.xwiki.doc.XWikiDocument.displayDocument(XWikiDocument.java:1467)
at com.xpn.xwiki.api.Document.displayDocument(Document.java:788)
at jdk.internal.reflect.GeneratedMethodAccessor545.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:571)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:554)
at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:221)
at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:368)
at org.apache.velocity.runtime.parser.node.ASTReference.value(ASTReference.java:704)
at org.apache.velocity.runtime.parser.node.ASTExpression.value(ASTExpression.java:75)
at org.apache.velocity.runtime.parser.node.ASTSetDirective.render(ASTSetDirective.java:242)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:190)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.xwiki.velocity.internal.directive.TryCatchDirective.render(TryCatchDirective.java:86)
at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:304)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
at org.apache.velocity.Template.merge(Template.java:358)
at org.apache.velocity.Template.merge(Template.java:262)
at org.xwiki.velocity.internal.InternalVelocityEngine.evaluate(InternalVelocityEngine.java:225)
at com.xpn.xwiki.internal.template.VelocityTemplateEvaluator.evaluateContent(VelocityTemplateEvaluator.java:105)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.evaluateContent(TemplateAsyncRenderer.java:219)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.renderVelocity(TemplateAsyncRenderer.java:174)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:135)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:54)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.lambda$syncRender$0(DefaultAsyncRendererExecutor.java:284)
at com.xpn.xwiki.internal.security.authorization.DefaultAuthorExecutor.call(DefaultAuthorExecutor.java:98)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.syncRender(DefaultAsyncRendererExecutor.java:284)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.render(DefaultAsyncRendererExecutor.java:267)
at org.xwiki.rendering.async.internal.block.DefaultBlockAsyncRendererExecutor.render(DefaultBlockAsyncRendererExecutor.java:154)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:906)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:868)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:855)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderNoException(InternalTemplateManager.java:810)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderNoException(InternalTemplateManager.java:802)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.renderNoException(DefaultTemplateManager.java:79)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.renderNoException(DefaultTemplateManager.java:73)
at org.xwiki.template.script.TemplateScriptService.render(TemplateScriptService.java:54)
at jdk.internal.reflect.GeneratedMethodAccessor8547.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:571)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:554)
at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:221)
at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:368)
at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:492)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:218)
at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:331)
at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:261)
at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:304)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
at org.apache.velocity.Template.merge(Template.java:358)
at org.apache.velocity.Template.merge(Template.java:262)
at org.xwiki.velocity.internal.InternalVelocityEngine.evaluate(InternalVelocityEngine.java:225)
at com.xpn.xwiki.internal.template.VelocityTemplateEvaluator.evaluateContent(VelocityTemplateEvaluator.java:105)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.evaluateContent(TemplateAsyncRenderer.java:219)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.renderVelocity(TemplateAsyncRenderer.java:174)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:135)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:54)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.lambda$syncRender$0(DefaultAsyncRendererExecutor.java:284)
at com.xpn.xwiki.internal.security.authorization.DefaultAuthorExecutor.call(DefaultAuthorExecutor.java:98)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.syncRender(DefaultAsyncRendererExecutor.java:284)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.render(DefaultAsyncRendererExecutor.java:267)
at org.xwiki.rendering.async.internal.block.DefaultBlockAsyncRendererExecutor.render(DefaultBlockAsyncRendererExecutor.java:154)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:906)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:868)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:855)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderNoException(InternalTemplateManager.java:810)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderNoException(InternalTemplateManager.java:802)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.renderNoException(DefaultTemplateManager.java:79)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.renderNoException(DefaultTemplateManager.java:73)
at org.xwiki.template.script.TemplateScriptService.render(TemplateScriptService.java:54)
at jdk.internal.reflect.GeneratedMethodAccessor8547.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:571)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:554)
at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:221)
at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:368)
at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:492)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:218)
at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:331)
at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:261)
at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:304)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:171)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:190)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:147)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:190)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:439)
at org.apache.velocity.Template.merge(Template.java:358)
at org.apache.velocity.Template.merge(Template.java:262)
at org.xwiki.velocity.internal.InternalVelocityEngine.evaluate(InternalVelocityEngine.java:225)
at com.xpn.xwiki.internal.template.VelocityTemplateEvaluator.evaluateContent(VelocityTemplateEvaluator.java:105)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.evaluateContent(TemplateAsyncRenderer.java:219)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.renderVelocity(TemplateAsyncRenderer.java:174)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:135)
at com.xpn.xwiki.internal.template.TemplateAsyncRenderer.render(TemplateAsyncRenderer.java:54)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.lambda$syncRender$0(DefaultAsyncRendererExecutor.java:284)
at com.xpn.xwiki.internal.security.authorization.DefaultAuthorExecutor.call(DefaultAuthorExecutor.java:98)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.syncRender(DefaultAsyncRendererExecutor.java:284)
at org.xwiki.rendering.async.internal.DefaultAsyncRendererExecutor.render(DefaultAsyncRendererExecutor.java:267)
at org.xwiki.rendering.async.internal.block.DefaultBlockAsyncRendererExecutor.render(DefaultBlockAsyncRendererExecutor.java:154)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:906)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:868)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:848)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:834)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.render(DefaultTemplateManager.java:91)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.render(DefaultTemplateManager.java:85)
at com.xpn.xwiki.XWiki.evaluateTemplate(XWiki.java:2564)
at com.xpn.xwiki.web.Utils.parseTemplate(Utils.java:180)
at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:651)
at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:339)
at com.xpn.xwiki.web.LegacyActionServlet.service(LegacyActionServlet.java:108)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at com.xpn.xwiki.web.ActionFilter.doFilter(ActionFilter.java:122)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.xwiki.wysiwyg.filter.ConversionFilter.doFilter(ConversionFilter.java:61)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.xwiki.resource.servlet.RoutingFilter.doFilter(RoutingFilter.java:132)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.xwiki.container.servlet.filters.internal.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:208)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.xwiki.container.servlet.filters.internal.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:117)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:710)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:457)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:384)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)
at com.xpn.xwiki.web.XWikiAction.redirectSpaceURLs(XWikiAction.java:1171)
at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:509)
at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:339)
at com.xpn.xwiki.web.LegacyActionServlet.service(LegacyActionServlet.java:108)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at com.xpn.xwiki.web.ActionFilter.doFilter(ActionFilter.java:122)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.xwiki.wysiwyg.filter.ConversionFilter.doFilter(ConversionFilter.java:61)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.xwiki.container.servlet.filters.internal.SetHTTPHeaderFilter.doFilter(SetHTTPHeaderFilter.java:63)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.xwiki.resource.servlet.RoutingFilter.doFilter(RoutingFilter.java:132)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.xwiki.container.servlet.filters.internal.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:208)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.xwiki.container.servlet.filters.internal.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:117)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:764)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:354)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:888)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1684)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: org.xwiki.rendering.parser.ParseException: Failed to highlight code
at org.xwiki.rendering.internal.parser.pygments.PygmentsParser.highlight(PygmentsParser.java:176)
at org.xwiki.rendering.internal.macro.code.CodeMacro.highlight(CodeMacro.java:237)
at org.xwiki.rendering.internal.macro.code.CodeMacro.highlight(CodeMacro.java:173)
... 219 more
Caused by: javax.script.ScriptException: RuntimeError: maximum recursion limit exceeded in <script> at line number 52
at org.python.jsr223.PyScriptEngine.scriptException(PyScriptEngine.java:222)
at org.python.jsr223.PyScriptEngine.eval(PyScriptEngine.java:59)
at org.python.jsr223.PyScriptEngine.eval(PyScriptEngine.java:31)
at org.xwiki.rendering.internal.parser.pygments.PygmentsParser.highlight(PygmentsParser.java:208)
at org.xwiki.rendering.internal.parser.pygments.PygmentsParser.highlight(PygmentsParser.java:174)
... 221 more
Caused by: Traceback (most recent call last):
File "<script>", line 52, in <module>
File "__pyclasspath__/pygments/__init__.py", line 85, in highlight
File "__pyclasspath__/pygments/__init__.py", line 64, in format
File "__pyclasspath__/pygments/__init__.py", line 64, in format
File "__pyclasspath__/pygments/formatters/xdom.py", line 44, in format
File "__pyclasspath__/pygments/lexer.py", line 191, in streamer
File "__pyclasspath__/pygments/lexer.py", line 628, in get_tokens_unprocessed
RuntimeError: maximum recursion limit exceeded
at org.python.core.Py.RuntimeError(Py.java:155)
at org.python.modules.sre.PatternObject._error(PatternObject.java:352)
at org.python.modules.sre.PatternObject._pattern_new_match(PatternObject.java:398)
at org.python.modules.sre.PatternObject.match(PatternObject.java:85)
at org.python.modules.sre.PatternObject$match_exposer.__call__(Unknown Source)
at org.python.core.PyObject.__call__(PyObject.java:477)
at org.python.core.PyObject.__call__(PyObject.java:481)
at pygments.lexer$py.get_tokens_unprocessed$48(__pyclasspath__/pygments/lexer.py:626)
at pygments.lexer$py.call_function(__pyclasspath__/pygments/lexer.py)
at org.python.core.PyTableCode.call(PyTableCode.java:173)
at org.python.core.PyGenerator.__iternext__(PyGenerator.java:161)
at org.python.core.PyGenerator.__iternext__(PyGenerator.java:143)
at pygments.lexer$py.streamer$10(__pyclasspath__/pygments/lexer.py:191)
at pygments.lexer$py.call_function(__pyclasspath__/pygments/lexer.py)
at org.python.core.PyTableCode.call(PyTableCode.java:173)
at org.python.core.PyGenerator.__iternext__(PyGenerator.java:161)
at org.python.core.PyGenerator.__iternext__(PyGenerator.java:143)
at pygments.formatters.xdom$py.format$3(__pyclasspath__/pygments/formatters/xdom.py:56)
at pygments.formatters.xdom$py.call_function(__pyclasspath__/pygments/formatters/xdom.py)
at org.python.core.PyTableCode.call(PyTableCode.java:173)
at org.python.core.PyBaseCode.call(PyBaseCode.java:168)
at org.python.core.PyFunction.__call__(PyFunction.java:437)
at org.python.core.PyMethod.__call__(PyMethod.java:156)
at pygments$py.format$2(__pyclasspath__/pygments/__init__.py:74)
at pygments$py.call_function(__pyclasspath__/pygments/__init__.py)
at org.python.core.PyTableCode.call(PyTableCode.java:173)
at org.python.core.PyBaseCode.call(PyBaseCode.java:168)
at org.python.core.PyFunction.__call__(PyFunction.java:437)
at pygments$py.highlight$3(__pyclasspath__/pygments/__init__.py:85)
at pygments$py.call_function(__pyclasspath__/pygments/__init__.py)
at org.python.core.PyTableCode.call(PyTableCode.java:173)
at org.python.core.PyBaseCode.call(PyBaseCode.java:306)
at org.python.core.PyBaseCode.call(PyBaseCode.java:158)
at org.python.core.PyFunction.__call__(PyFunction.java:437)
at org.python.pycode._pyx1825344.f$0(<script>:52)
at org.python.pycode._pyx1825344.call_function(<script>)
at org.python.core.PyTableCode.call(PyTableCode.java:173)
at org.python.core.PyCode.call(PyCode.java:18)
at org.python.core.Py.runCode(Py.java:1703)
at org.python.core.__builtin__.eval(__builtin__.java:497)
at org.python.core.__builtin__.eval(__builtin__.java:501)
at org.python.util.PythonInterpreter.eval(PythonInterpreter.java:255)
at org.python.jsr223.PyScriptEngine.eval(PyScriptEngine.java:57)
... 224 more
For configuration details about this service, save the attached Find AD user.zip, and import it to your environment.
The following workflow example shows how to build a workflow that will update a user attribute in Active Directory:

In this workflow example, the Build Input Set action creates an input parameter mapped to a process input value. An output from this action is sent to the Update Entry Attributes action. The Send In App Notification action is configured to send a notification to the catalog administrator about success of the update operation.
For configuration details about this service, save the attached Update_attribute.zip, and import it to your environment.
The tables in this section describe each workflow action and its significant parameters.
Both of these actions have the same input parameters described in the following table:
| | | | |
---|
| | | Connection > Connection ID | Default Connection ID for this connector. |
| | | | sAMAccountName attribute of a user to be added or removed from a group. |
| | | | CN attribute of a group to be added to the user profile. |
| | | | |
---|
| | | Connection > Connection ID | Default Connection ID for this connector. |
At least one of these parameters must be specified | | | | sAMAccountName attribute of a queried user. |
| | "CN=Bobbi Baxter,CN=Users,DC=ADServer,DC=local" | distinguishedName attribute of a queried user. |
| | | cn attribute of a queried user. |
| | | mail attribute of a queried user. |
| | |
---|
| | <Map of multiple values with keys of string type and values of string type> |
| | CN=Bobbi Baxter,CN=Users,DC=ADServer,DC=local |
| | |
| | |
| | |
| | |
| | | | |
---|
| | | Connection > Connection ID | Default Connection ID for this connector. |
| | | | Use the output from the Build Input Set. In the Build Input Set, you must create key and value pairs that you want to update as a part of this action. |
| | | "CN=Bobbi Baxter,CN=Users,DC=ADServer,DC=local" | distinguishedName attribute of a queried user. |
| | | | sAMAccountName attribute of a queried user. |
| | | | cn attribute of a queried user. |
| | | | mail attribute of a queried user. |
| | | | |
---|
| | | Connection > Connection ID | Default Connection ID for this connector. |
At least one of these parameters must be specified | | | | sAMAccountName attribute of a queried group. |
| | | groupName attribute of a queried group. |
All of these actions have the same input parameters described in the following table:
| | | | |
---|
| | | Connection > Connection ID | Default Connection ID for this connector. |
| | | | sAMAccountName attribute of an Active Directory computer. |
| | | | cn attribute of Active Directory group to assign the computer. |
Find Computer input parameters
| | | | |
---|
| | | Connection > Connection ID | Default Connection ID for this connector. |
At least one of these parameters must be specified
| | | | sAMAccountName attribute of Active Directory computer. |
| | "CN=IgorPC,CN=Computers,DC=ADServer,DC=local" | distinguishedName attribute of an Active Directory computer. |
| | | cn attribute of an Active Directory computer. |
| | |
---|
| | <Map of multiple values with keys of type String and values of type String.> |
| | CN=IgorPC,CN=Computers,DC=ADServer,DC=local |
| | |
| | |
| | | | |
---|
| | | Connection > Connection ID | Default Connection ID for this connector. |
| | | | Use the output from the Build Input Set. In the Build Input Set you must create key and value pairs that you want to update as a part of this action. |
| | | "CN=IgorPC,CN=Computers,DC=ADServer,DC=local" | distinguishedName attribute of a queried computer. |
| | | | sAMAccountName attribute of a queried computer. |
| | | | cn attribute of a queried computer. |
This section includes helpful screenshots about information referenced in this topic.


