# Custom ## Definition This step is used to define a custom script that will be executed ## Steps Tabs ### Task details All the process types have the same Task details for the Custom step: - **Script**: allows you to define a Script this step allows you to add a script to be executed. ##### Example ```Java comments = executionContext.getToken().getComments(); selector = executionContext.getVariable("userSelector"); if (selector == null || selector.equals("")) { return ("The userName is mandatory"); } user = serviceLocator.getUserService().findUserByUserName(selector); if (user != null) { subject = "Soffid - Notification"; message = "Automated mail sent .............."; if (comments != null && !comments.isEmpty()) { for (comment : comments) { message += comment.message; } } serviceLocator.getUserService().sendHtmlMailToActors(new String[]{user.userName}, subject, message); } ``` ### Incoming transitions The Incoming transitions tab displays the previous steps where the flow comes from. When you create a process from a template or from scratch default incoming transitions are defined. It is allowed to customize the default setup, add new transitions, or delete transitions. - **From**: the previous step, where the flow comes. Allows you to select where the workflow comes from. - **Incoming transition**: brief name to identify the transition. That is the name of the action the form will show to the final user. - **To**: current step. - **Action**: allows creating a custom script to perform specific actions.