OIM out-of-the-box sends out a single mail containing userid and password.
Generated Password Notification Template is triggered by default to inform the user about his login id and password
Modify this template to send only the password
Create a new Template to include only the Login ID
Export
/metadata/iam-features-passwordmgmt/event-definition/EventHandlers.xml
using weblogicExportMetaData.sh
Add the below entry
<postprocess-handler
class="com.dubey.deepak.oim.user.NotifyUserIdToUser"
entity-type="User" operation="CREATE"
name="NotifyUserIdToUser" order="2180"
stage="postprocess" sync="TRUE"/>
Import back using weblogicImportMetaData.sh
Create a new Notification Event Resolver
Export
/metadata/iam-features-passwordmgmt/notification/ResetPasswordEvent.xml
using weblogicExportMetaData.sh
Add the below entry
<EventType name="NotifyUserIdToUser">
<StaticData>
<Attribute DataType="X2-Entity"
EntityName="User" Name="Granted User"/>
</StaticData>
<Resolver
class="oracle.iam.identity.notification.EndDateNotificationEventResolver">
<Param DataType="X2-Entity"
EntityName="User" Name="usr_key"/>
</Resolver>
</EventType>
Import back using weblogicImportMetaData.sh
NotifyUserIdToUser java class
1 package com.dubey.deepak.oim.user; 2 3 import static oracle.iam.identity.usermgmt.api.UserManagerConstants.AttributeName.MANAGER_KEY; 4 import static oracle.iam.identity.usermgmt.api.UserManagerConstants.AttributeName.USER_LOGIN; 5 6 import java.io.Serializable; 7 import java.util.ArrayList; 8 import java.util.HashMap; 9 import java.util.HashSet; 10 import java.util.List; 11 import java.util.Set; 12 13 import oracle.iam.identity.exception.NoSuchUserException; 14 import oracle.iam.identity.exception.UserLookupException; 15 import oracle.iam.identity.usermgmt.api.UserManager; 16 import oracle.iam.identity.usermgmt.vo.User; 17 import oracle.iam.notification.api.NotificationService; 18 import oracle.iam.notification.vo.NotificationEvent; 19 import oracle.iam.platform.Platform; 20 import oracle.iam.platform.authz.exception.AccessDeniedException; 21 import oracle.iam.platform.kernel.spi.PostProcessHandler; 22 import oracle.iam.platform.kernel.vo.AbstractGenericOrchestration; 23 import oracle.iam.platform.kernel.vo.BulkEventResult; 24 import oracle.iam.platform.kernel.vo.BulkOrchestration; 25 import oracle.iam.platform.kernel.vo.EventResult; 26 import oracle.iam.platform.kernel.vo.Orchestration; 27 28 public class NotifyUserIdToUser implements PostProcessHandler { 29 30 public EventResult execute(long processId, long eventId, 31 Orchestration orchestration) { 32 return new EventResult(); 33 } 34 35 private NotificationEvent createNotificationEvent(String poTemplateName, 36 String userKey) { 37 NotificationEvent event = null; 38 try { 39 event = new NotificationEvent(); 40 String[] receiverUserIds = getRecipientUserIds(userKey); 41 event.setUserIds(receiverUserIds); 42 event.setTemplateName(poTemplateName); 43 event.setSender(null); 44 HashMap<String, Object> templateParams = new HashMap<String, Object>(); 45 templateParams.put("usr_key", userKey); 46 event.setParams(templateParams); 47 } catch (Exception e) { 48 e.printStackTrace(); 49 System.out.println("e-------->" + e.getMessage()); 50 } 51 return event; 52 } 53 54 @Override 55 public void initialize(HashMap<String, String> arg0) { 56 57 } 58 59 @Override 60 public boolean cancel(long arg0, long arg1, 61 AbstractGenericOrchestration arg2) { 62 return false; 63 } 64 65 @Override 66 public void compensate(long arg0, long arg1, 67 AbstractGenericOrchestration arg2) { 68 69 } 70 71 @Override 72 public BulkEventResult execute(long l, long l1, BulkOrchestration bulkOrch) { 73 try { 74 System.out 75 .println("Entering BulkEventResult of NotifyUserIdToUser"); 76 System.out.println("l ->" + l); 77 System.out.println("l1 ->" + l1); 78 String oprType = bulkOrch.getOperation(); 79 System.out.println("oprType ->" + oprType); 80 HashMap<String, Serializable>[] bulkParams = bulkOrch 81 .getBulkParameters(); 82 for (HashMap<String, Serializable> bulkParam : bulkParams) { 83 System.out.println("bulkParam ->" + bulkParam); 84 Set<String> bulkKeySet = bulkParam.keySet(); 85 System.out.println("bulkKeySet ->" + bulkKeySet); 86 String usrLogin = null; 87 String usrKey = null; 88 for (String key : bulkKeySet) { 89 System.out.println("key ->" + key); 90 Serializable serializable = bulkParam.get(key); 91 System.out.println("serializable ->" + serializable); 92 if (key.equalsIgnoreCase("User Login")) { 93 usrLogin = serializable.toString(); 94 System.out.println("usrLogin ->" + usrLogin); 95 UserManager usrMgr = Platform 96 .getService(UserManager.class); 97 98 User user = usrMgr.getDetails(usrLogin, null, true); 99 usrKey = user.getEntityId(); // getAttribute("usr_key").toString(); 100 String uid = user.getId(); 101 System.out.println("uid--->" + uid); 102 System.out.println("usrKey ->" + usrKey); 103 String templateName = "Notify UserId to User"; 104 NotificationService notService = Platform 105 .getService(NotificationService.class); 106 NotificationEvent eventToSend = this 107 .createNotificationEvent(templateName, usrKey); 108 notService.notify(eventToSend); 109 110 } 111 112 } 113 } 114 } catch (Exception e) { 115 System.out.println("exception e in BulkExecuteEvent ->" 116 + e.getMessage()); 117 e.printStackTrace(); 118 } 119 System.out.println("Exiting BulkEventResult of NotifyUserIdToUser"); 120 return new BulkEventResult(); 121 } 122 123 private String[] getRecipientUserIds(String userKey) 124 throws NoSuchUserException, UserLookupException, 125 AccessDeniedException { 126 UserManager usrMgr = Platform.getService(UserManager.class); 127 User user = null; 128 String userId = null; 129 Set<String> userRetAttrs = new HashSet<String>(); 130 userRetAttrs.add(MANAGER_KEY.getId()); 131 userRetAttrs.add(USER_LOGIN.getId()); 132 User manager = null; 133 String managerId = null; 134 String managerKey = null; 135 Set<String> managerRetAttrs = new HashSet<String>(); 136 managerRetAttrs.add(USER_LOGIN.getId()); 137 user = usrMgr.getDetails(userKey, userRetAttrs, false); 138 userId = user.getAttribute(USER_LOGIN.getId()).toString(); 139 List<String> userIds = new ArrayList<String>(); 140 userIds.add(userId); 141 if (user.getAttribute(MANAGER_KEY.getId()) != null) { 142 managerKey = user.getAttribute(MANAGER_KEY.getId()).toString(); 143 manager = usrMgr.getDetails(managerKey, managerRetAttrs, false); 144 managerId = manager.getAttribute(USER_LOGIN.getId()).toString(); 145 userIds.add(managerId); 146 } 147 String[] recipientIDs = userIds.toArray(new String[0]); 148 return recipientIDs; 149 } 150 151 } 152
Finally the plugin.xml file to for packaging and registration
<?xml version="1.0" encoding="UTF-8"?>
<oimplugins>
<plugins
pluginpoint="oracle.iam.platform.kernel.spi.EventHandler">
<plugin pluginclass=
"com.dubey.deepak.oim.user.NotifyUserIdToUser"
version="1.0"
name="NotifyUserIdToUser">
</plugin>
</plugins>
</oimplugins>