Your SlideShare is downloading. ×
Introducing tivoli personalized services manager 1.1 sg246031
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Introducing tivoli personalized services manager 1.1 sg246031

11,558
views

Published on

Published in: Technology, Business

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
11,558
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. IntroducingTivoli PersonalizedServices Manager 1.1Supports pervasive devicesCreates personalized serviceenvironmentsProvides self care Stephen Hochstetler Edgar Gutierrez Patricia Iglesiasibm.com/redbooks
  • 2. SG24-6031-00International Technical Support OrganizationIntroducingTivoli Personalized Services Manager 1.1June 2001
  • 3. Take Note! Before using this information and the product it supports, be sure to read the general information in Appendix A, “Special notices” on page 291.First Edition (June 2001)This edition applies to V1R1 of Tivoli Personalized Services Manager, TPSM product number5698-PSM for use with the AIX and Solaris operating systems.Comments may be addressed to:IBM Corporation, International Technical Support OrganizationDept. JN9B Building 003 Internal Zip 283411400 Burnet RoadAustin, Texas 78758-3493When you send information to IBM, you grant IBM a non-exclusive right to use or distribute theinformation in any way it believes appropriate without incurring any obligation to you.© Copyright International Business Machines Corporation 2001. All rights reserved.Note to U.S Government Users – Documentation related to restricted rights – Use, duplication or disclosure is subject torestrictions set forth in GSA ADP Schedule Contract with IBM Corp.
  • 4. Contents Figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .ix Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv The team that wrote this redbook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv Comments welcome . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi Chapter 1. Evolution of the Internet and ISP solutions . . . . . . . . . . . . . 1 Chapter 2. Overview of Tivoli Personalized Service Manager . . . . . . . . 5 2.1 Whats new for this release of Tivoli Personalized Services Manager . . 6 2.1.1 Web Hosting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.1.2 Portal Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.1.3 Radius . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.1.4 DB2 support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.1.5 Localization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.1.6 Device Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.1.7 Integration with WebSphere Everyplace suite . . . . . . . . . . . . . . . 10 2.2 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.2.1 Device Manager (only in TPSM) . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.2.2 Enrollment and service provisioning . . . . . . . . . . . . . . . . . . . . . . 11 2.2.3 Subscriber authentication and access control . . . . . . . . . . . . . . . 12 2.2.4 Customer care support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.2.5 Subscriber personalized service environment and self care . . . . 14 2.2.6 Integration with third party components and tools . . . . . . . . . . . . 16 2.2.7 Operation support for growing provider business . . . . . . . . . . . . 16 2.2.8 Emerging Internet business models-wholesale and virtual ISP . . 17 2.2.9 Adherence to industry standards . . . . . . . . . . . . . . . . . . . . . . . . 18 Chapter 3. Installation checklist . . . . . . . . . . . . . . . . . . .. . . . . .. . . . . 21 3.1 Infrastructure used in this project . . . . . . . . . . . . . . . . .. . . . . .. . . . . 21 3.2 Infrastructure installation . . . . . . . . . . . . . . . . . . . . . . .. . . . . .. . . . . 22 3.2.1 AIX software . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . .. . . . . 22 3.2.2 Installing additional IBM AIX filesets . . . . . . . . . . .. . . . . .. . . . . 22 3.2.3 JDK 1.2.2 installation and setup procedure. . . . . .. . . . . .. . . . . 25 3.2.4 IBM HTTP Server V1.3.12 for AIX . . . . . . . . . . . .. . . . . .. . . . . 29 3.3 Oracle JDBC driver 8.1.6 . . . . . . . . . . . . . . . . . . . . . . .. . . . . .. . . . . 30 Chapter 4. Building the environment . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.1 File system configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.2 Oracle installation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32© Copyright IBM Corp. 2001 iii
  • 5. 4.3 Installing Netscape Enterprise Server 3.63 . . . . . . . . . . . . . . . . . . . . . 38 4.3.1 Creating groups and users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.3.2 Installing Netscape Enterprise Server 3.6 . . . . . . . . . . . . . . . . . . 38 4.4 Creating Netscape server instances . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.4.1 Creating the Authentication Server . . . . . . . . . . . . . . . . . . . . . . . 42 4.4.2 Creating the Customer Care Server . . . . . . . . . . . . . . . . . . . . . . 43 4.4.3 Creating the Selfcare Server . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 4.4.4 Creating the System Management Tools Server . . . . . . . . . . . . . 45 4.4.5 Creating the Personalization Server . . . . . . . . . . . . . . . . . . . . . . 46 4.4.6 Creating the Premium Server . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.4.7 Creating the Enrollment Server. . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.4.8 Creating the SDP Servlet Server . . . . . . . . . . . . . . . . . . . . . . . . 50 4.4.9 Creating the Web Hosting Content Server . . . . . . . . . . . . . . . . . 51 4.5 Installation of IBM WebSphere Application Server . . . . . . . . . . . . . . . 52 4.6 Installing Tivoli Internet Services Manager software . . . . . . . . . . . . . . 57 4.6.1 Post-Installation tasks for TISM software. . . . . . . . . . . . . . . . . . . 66 4.7 Usage and verification test of installed TISM software . . . . . . . . . . . . 69 4.7.1 Director test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 4.7.2 Authentication test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.7.3 Premium test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.7.4 Customer Care test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.7.5 Enrollment test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.7.6 SelfCare test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.7.7 Personal test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.8 Startup order for starting up a system. . . . . . . . . . . . . . . . . . . . . . . . . 70 4.8.1 Oracle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 4.8.2 Start Provisioning server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 4.8.3 Transaction Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 4.8.4 Start Netscape Servers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 4.8.5 Start WebSphere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Chapter 5. Enrollment and service provisioning . . . . . .. . . . . .. . . . . 73 5.1 Registration configuration . . . . . . . . . . . . . . . . . . . . . . .. . . . . .. . . . . 73 5.1.1 Creation of a Realm . . . . . . . . . . . . . . . . . . . . . . .. . . . . .. . . . . 76 5.1.2 Creation of Registration Names . . . . . . . . . . . . . .. . . . . .. . . . . 77 5.1.3 Creation of Access Codes . . . . . . . . . . . . . . . . . .. . . . . .. . . . . 79 5.1.4 Creation of a deal . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . .. . . . . 82 5.1.5 Creation of deal text . . . . . . . . . . . . . . . . . . . . . . .. . . . . .. . . . . 84 5.1.6 Creating a property. . . . . . . . . . . . . . . . . . . . . . . .. . . . . .. . . . . 87 5.1.7 Associating the deals with the Realm . . . . . . . . . .. . . . . .. . . . . 90 5.1.8 Associating the Access Codes with the deals . . . .. . . . . .. . . . . 92 5.1.9 Creating a Sales Channel . . . . . . . . . . . . . . . . . . .. . . . . .. . . . . 93 5.1.10 Creating a Method of Payment . . . . . . . . . . . . . .. . . . . .. . . . . 95iv Introducing Tivoli Personalized Services Manager 1.1
  • 6. 5.1.11 Creating a List of Method of Payment . . . . . . . . . . . . . . . . . . . . 96 5.1.12 Association of a MOP list and a deal . . . . . . . . . . . . . . . . . . . . 98 5.1.13 Managing the enrollment process . . . . . . . . . . . . . . . . . . . . . . . 99 5.1.14 Enrollment JSPs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108Chapter 6. Subscriber authentication and access control. . . . . . . . . 1116.1 Authentication stages . . . . . . . . . . . . . . . . . . . . . ....... . . . . . . . . 1126.2 Authentication modes . . . . . . . . . . . . . . . . . . . . . ....... . . . . . . . . 1136.3 Internet world . . . . . . . . . . . . . . . . . . . . . . . . . . . ....... . . . . . . . . 113 6.3.1 Structure of Authentication Server . . . . . . . ....... . . . . . . . . 1146.4 Wireless World . . . . . . . . . . . . . . . . . . . . . . . . . . ....... . . . . . . . . 133 6.4.1 Structure of Authentication Server . . . . . . . ....... . . . . . . . . 135 6.4.2 Business case 1 . . . . . . . . . . . . . . . . . . . . . ....... . . . . . . . . 138 6.4.3 Business case 2 . . . . . . . . . . . . . . . . . . . . . ....... . . . . . . . . 144Chapter 7. Using Customer Care and Director Tool . . . . . . . . . . . . . . 1497.1 Assigning login IDs and access control profiles to CSRs . . . . . . . . . 1507.2 Logging on to Customer Care. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1547.3 Log on steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1557.4 Managing consumer accounts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 7.4.1 Enroll a new consumer subscriber . . . . . . . . . . . . . . . . . . . . . . 156 7.4.2 View and update a subscriber account . . . . . . . . . . . . . . . . . . . 157 7.4.3 Changing a subscribers deal . . . . . . . . . . . . . . . . . . . . . . . . . . 159 7.4.4 Change subscribers method of payment . . . . . . . . . . . . . . . . . 159 7.4.5 Disconnect a subscriber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 7.4.6 Reconnect a subscriber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 7.4.7 Create a consumer child subscriber . . . . . . . . . . . . . . . . . . . . . 162 7.4.8 Disconnect a child subscriber . . . . . . . . . . . . . . . . . . . . . . . . . . 1637.5 Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1637.6 Additional services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647.7 Using the Search Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 7.7.1 Search criteria for individual subscribers . . . . . . . . . . . . . . . . . 165 7.7.2 Exact match feature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165Chapter 8. Subscriber Selfcare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1678.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1678.2 Customization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1678.3 Running Subscriber Selfcare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 8.3.1 Changing a subscriber’s password . . . . . . . . . . . . . . . . . . . . . . 172 8.3.2 Changing personal information . . . . . . . . . . . . . . . . . . . . . . . . . 174 8.3.3 Change payment information . . . . . . . . . . . . . . . . . . . . . . . . . . 176 8.3.4 Adding new members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 v
  • 7. Chapter 9. Subscriber Personalized Service Environment . . . . . . . . 181 9.1 Portal Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 9.2 Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 9.2.1 Multi-device Portal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 9.2.2 User Preferences API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 9.2.3 Hierarchical repository of referenced links . . . . . . . . . . . . . . . . 182 9.2.4 Double click AdServer interface . . . . . . . . . . . . . . . . . . . . . . . . 182 9.2.5 JSP Portlet framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 9.2.6 WAP portal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 9.2.7 WES Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 9.2.8 Portal page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 9.3 Portal software architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 9.3.1 Authentication API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 9.3.2 User preferences API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 9.4 JSP portlets framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 9.4.1 JSP portlet architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 9.4.2 Portlet design pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 9.4.3 Portlet addressing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 9.4.4 Portlet API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 9.5 TPSM portlet library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 9.5.1 Structural portlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 9.6 Service portlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 9.6.1 Customizor Portlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 9.6.2 LinkSelector Portlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 9.6.3 Calendar Portlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 9.6.4 Agenda Portlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 9.6.5 AddressBook Portlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 9.7 Filter API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 9.8 Profiler API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 9.9 Example of personalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.9.1 Internet world . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.9.2 Wireless World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 Chapter 10. Virtual ISP . . . . . . . . . . . . . . . .. . . . . .. . . . .. . . . . .. . . . 263 10.1 Overview . . . . . . . . . . . . . . . . . . . . . . .. . . . . .. . . . .. . . . . .. . . . 263 10.2 REALMs . . . . . . . . . . . . . . . . . . . . . . . .. . . . . .. . . . .. . . . . .. . . . 264 10.2.1 User groups Within Realms . . . . .. . . . . .. . . . .. . . . . .. . . . 265 10.3 Enrollment and service provisioning . . .. . . . . .. . . . .. . . . . .. . . . 265 10.4 Configuring a Virtual ISP . . . . . . . . . . .. . . . . .. . . . .. . . . . .. . . . 266 10.5 Enrolling into the Virtual ISP . . . . . . . . .. . . . . .. . . . .. . . . . .. . . . 267 Chapter 11. Integration Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 11.1 Architectural overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269vi Introducing Tivoli Personalized Services Manager 1.1
  • 8. 11.2 iTk usage scenarios . . . . . . . . . .. . . . .. . . . . .. . . . .. . . . . .. . . . 27111.3 iTk classes . . . . . . . . . . . . . . . . .. . . . .. . . . . .. . . . .. . . . . .. . . . 272 11.3.1 Core classes. . . . . . . . . . . .. . . . .. . . . . .. . . . .. . . . . .. . . . 272 11.3.2 iTk Business Objects . . . . .. . . . .. . . . . .. . . . .. . . . . .. . . . 275Chapter 12. Device Manager . . . . . . . . . . . . . . . . . . . . . .. . . . . .. . . . 27712.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . .. . . . 27712.2 Device Manager on TPSM . . . . . . . . . . . . . . . . . . . . .. . . . . .. . . . 27812.3 Device Manager Components . . . . . . . . . . . . . . . . . .. . . . . .. . . . 278 12.3.1 Device Manager server. . . . . . . . . . . . . . . . . . . .. . . . . .. . . . 279 12.3.2 Device plug-ins . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . .. . . . 280 12.3.3 Device management server API . . . . . . . . . . . . .. . . . . .. . . . 281 12.3.4 Device Manager database . . . . . . . . . . . . . . . . .. . . . . .. . . . 281 12.3.5 Device management API . . . . . . . . . . . . . . . . . .. . . . . .. . . . 282 12.3.6 Device Manager console . . . . . . . . . . . . . . . . . .. . . . . .. . . . 28312.4 Device Manager functions . . . . . . . . . . . . . . . . . . . . .. . . . . .. . . . 28412.5 Supported devices . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . .. . . . 285 12.5.1 Palm Computing PDAs . . . . . . . . . . . . . . . . . . . .. . . . . .. . . . 286 12.5.2 Compaq Aero 8000 H/PC Pro devices . . . . . . . .. . . . . .. . . . 286 12.5.3 NetVista Internet Appliance devices . . . . . . . . . .. . . . . .. . . . 287 12.5.4 Generic Windows CE devices . . . . . . . . . . . . . . .. . . . . .. . . . 28812.6 Features of Device Manager . . . . . . . . . . . . . . . . . . .. . . . . .. . . . 289 12.6.1 Extensibility for managing various devices . . . . .. . . . . .. . . . 289 12.6.2 Centralized management . . . . . . . . . . . . . . . . . .. . . . . .. . . . 290 12.6.3 Provisioning to other system . . . . . . . . . . . . . . . .. . . . . .. . . . 290 12.6.4 Scalability and availability . . . . . . . . . . . . . . . . . .. . . . . .. . . . 290Appendix A. Special notices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291Appendix B. Related publications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295B.1 IBM Redbooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295B.2 IBM Redbooks collections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295B.3 Other resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296How to get IBM Redbooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297IBM Redbooks fax order form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305IBM Redbooks review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317 vii
  • 9. viii Introducing Tivoli Personalized Services Manager 1.1
  • 10. Figures 1. Tivoli Internet Services Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2. Device Manager Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3. Enrollment and service provisioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4. Subscriber authentication and access control . . . . . . . . . . . . . . . . . . . . . . 13 5. Customer care support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 6. Subscriber personalization and self care . . . . . . . . . . . . . . . . . . . . . . . . . . 15 7. Operation support for growing provider business . . . . . . . . . . . . . . . . . . . 17 8. Supporting emerging Internet business models. . . . . . . . . . . . . . . . . . . . . 18 9. Netscape Server Administration console . . . . . . . . . . . . . . . . . . . . . . . . . . 40 10. Form for Authentication Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 11. Form for Customer Care Serer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 12. Form for Selfcare Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 13. Form for System Management Tools Server . . . . . . . . . . . . . . . . . . . . . . . 45 14. Form for Personalization Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 15. Form for Premium Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 16. Form for Enrollment Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 17. Form of CGI for Enrollment Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 18. Form for SDP Servlet Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 19. Form for the Web Hosting Content Server. . . . . . . . . . . . . . . . . . . . . . . . . 51 20. WebSphere Application Server Installation on AIX - welcome page . . . . . 53 21. WebSphere Application Server Installation on AIX - type of installation . . 53 22. WebSphere Installation on AIX - selecting components to install . . . . . . . 54 23. WebSphere Installation on AIX - selecting plug-ins to install. . . . . . . . . . . 55 24. WebSphere Installation on AIX - web server configuration file . . . . . . . . . 55 25. WebSphere Installation on AIX - indicating database repository . . . . . . . . 56 26. WebSphere Installation on AIX - security information . . . . . . . . . . . . . . . . 56 27. WebSphere Installation on AIX - specifying WebSphere home directory . 57 28. TISM/TPSM installationwelcome . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 29. Choosing the database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 30. Local Information for the install . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 31. Oracle configuration information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 32. TISM install components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 33. TISM prerequisite checklist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 34. Prerequisites’ installation directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 35. Installation verification dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 36. Installation is finished . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 37. WebSphere administration console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 38. Starting up an Application Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 39. Administration Console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 40. The TISM Administration Console dialog box . . . . . . . . . . . . . . . . . . . . . . 74© Copyright IBM Corp. 2001 ix
  • 11. 41. Director Tool Console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 42. Structure of the enrollment objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 43. Press the right mouse button and select Add . . . . . . . . . . . . . . . . . . . . . . 76 44. Dialog box for the creation of Realm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 45. Registration Names dialog box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 46. Flow of a multi-access registration name. . . . . . . . . . . . . . . . . . . . . . . . . . 81 47. Access Code dialog box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 48. Deal examples offered to the user in the enrollment process . . . . . . . . . . 82 49. Dialog of the creation of a new deal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 50. Deal text dialog box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 51. Dialog for properties of a deal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 52. Table with the deals and deal text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 53. Menu to create a property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 54. Dialog to create the property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 55. Creating a value for FAVBOOKS property. . . . . . . . . . . . . . . . . . . . . . . . . 90 56. Table of deals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 57. Example of how to relate a deal with several Realms . . . . . . . . . . . . . . . . 92 58. Relation of access code and deals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 59. A new Sales Channel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 60. Table of existing Sales Channel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 61. Example of selection of created Sales Channel in the new Access Code . 95 62. Payment Method dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 63. Method of Payment list dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 64. Relationship between method of payment list and table . . . . . . . . . . . . . . 97 65. Example of how to relate the MOP list to MOPs . . . . . . . . . . . . . . . . . . . . 98 66. Example of combo-box of MOP list for a deal . . . . . . . . . . . . . . . . . . . . . . 99 67. Enroll home page. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 68. Enroll with access code PUBLIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 69. Agreement window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 70. Personal detail of enroll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 71. Deal and Userid details for enroll details . . . . . . . . . . . . . . . . . . . . . . . . . 104 72. Password for enroll details. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 73. Details of chosen deal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 74. Payment Method details for enroll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 75. Confirmation details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 76. Congratulations screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 77. Configuration enroll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 78. Choosing the cheapest deal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 79. Structure of directories of enroll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 80. How the authentication server works . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 81. Authentication form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 82. Active components of the Authentication Server for internet access. . . . 115 83. Cluster configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125x Introducing Tivoli Personalized Services Manager 1.1
  • 12. 84. Premium configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12585. Hierarchal device type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13386. WAP architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13487. Active components of the Authentication Server (mobile internet) . . . . . 13688. Example of navigation for business case 1 . . . . . . . . . . . . . . . . . . . . . . . 14489. The TISM Administration Console dialog box . . . . . . . . . . . . . . . . . . . . . 15090. TISM Administration Console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15091. Add a New Access Role (1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15192. Add a New Access Role (2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15193. TISM Administration Console (1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15294. TISM Administration Console (2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15295. Add a New Login Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15396. TISM Administration Console (3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15497. Customer care logging page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15598. TISM customer care. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15799. Search results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158100.Subscriber update panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159101.Changing method of payment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160102.Disconnecting a user . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161103.User disconnected. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161104.Enrolling a customer child subscriber . . . . . . . . . . . . . . . . . . . . . . . . . . . 162105.TISM Reporting Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164106.Selfcare initial page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172107.Logging into Selfcare. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173108.Changing a subscriber’s password . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173109.Change Password confirmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174110.Password successfully changed message . . . . . . . . . . . . . . . . . . . . . . . 174111.Change Personal Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175112.Changing Personal Information confirmation . . . . . . . . . . . . . . . . . . . . . 176113.Changing Payment Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177114.Changing method of payment confirmation. . . . . . . . . . . . . . . . . . . . . . . 178115.Adding a new member (1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179116.Adding a new member (2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180117.Portal software architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184118.JSP Portlet Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203119.Pattern model-view-controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203120.More detail about the architecture of JSP Portlets . . . . . . . . . . . . . . . . . 204121.Example of welcome.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205122./perso/home without an authentication . . . . . . . . . . . . . . . . . . . . . . . . . . 205123./perso/home with authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206124./perso/home for WAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206125.Sending a command and parameters to a portlet in the HTTP request . 208126.Use of LayoutSelectorComponent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 xi
  • 13. 127.Example for HTML browsers of ComponentSelectorComponent . . . . . . 214 128.Example for WAP browsers of ComponentSelectorComponent . . . . . . . 214 129.Example of redirection to authentication server . . . . . . . . . . . . . . . . . . . 241 130.Customizor component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 131.Topics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 132.Abstracts news . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 133.Content news . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 134.The selection of themes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 135.An applied theme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 136.Example of link selector step 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 137.Example of link selector step 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 138.Example of link selector step 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 139.Example of Calendar component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 140.Example of Agenda component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 141.Example of ComponentSelector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 142.ComponentSelectorComponent after adding an external application . . . 256 143.New application added by the user . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 144.Internet business model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 145.Enrollment and Service Provisioning. . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 146.iTk architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 147.iTk usage scenarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 148.iTk core classes structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 149.Device Manager on TPSM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278xii Introducing Tivoli Personalized Services Manager 1.1
  • 14. Tables 1. AIX requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2. Netscape Enterprise Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 3. Values of Registration Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 4. Required fields for the creation of a new deal . . . . . . . . . . . . . . . . . . . . . . 83 5. Fields to create deal text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 6. Fields to create a property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 7. Fields for a Sales Channel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 8. Description of the required fields for a method of payment . . . . . . . . . . . . 95 9. JSPs for enroll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 10. Property files for enroll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 11. Limitations of single-domain mode authentication . . . . . . . . . . . . . . . . . . 113 12. JSPs for SelfCare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 13. SelfCare.properties file variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 14. AccessBean implementations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 15. List of portlet commands for the LayoutSelectorComponent . . . . . . . . . . 212 16. Macros for ComponentSelectorComponent. . . . . . . . . . . . . . . . . . . . . . . 217 17. Commands for ComponentSelectorComponent . . . . . . . . . . . . . . . . . . . 217 18. Commands for Aggregator.class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 19. Commands for Customizor Portlet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 20. Commands for LinkSelectorComponent.class . . . . . . . . . . . . . . . . . . . . . 226 21. Commands for Calendar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 22. Commands for Agenda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 23. Commands for AddressBook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 24. DM functions and device plugins matrix . . . . . . . . . . . . . . . . . . . . . . . . . 285© Copyright IBM Corp. 2001 xiii
  • 15. xiv Introducing Tivoli Personalized Services Manager 1.1
  • 16. Preface This redbook will help you install, tailor, and configure the new Tivoli Personalized Service Manager (TPSM) V1.1.1. This redbook is about building business solutions using the Tivoli Personalized Service Manager product to enable ISPs to manage different domains or realms and provide different services such as customer care, selfcare, premium, personalization server, and authentication, among others for any type of devices, Web browsers, or pervasive computing devices. It will help you to understand this product and focuses on implemented solutions for both environments; Web and mobile internet browsers. TPSM has been integrated in an AIX environment running as a database, Oracle 8.1.5. In this redbook, you will find information that will help you successfully implement solutions to manage the domains, access Web, and enterprise applications from desktop browsers and the new class of client devices such as WAP phones, Palm Pilots, and WorkPads to the personalized server. A basic knowledge of AIX, Oracle, HTTP, and WAP protocols as well as some understanding of Web and Java technologies (HTML, WML, servlets, and JSPs) and the terminology used in Web and enterprise applications is assumed.The team that wrote this redbook This redbook was produced by a team of specialists from around the world working at the International Technical Support Organization Austin Center. Stephen Hochstetler is a Project Leader at the International Technical Support Organization, Austin Center. He applies his 17 years of experience as an I/T Tivoli Specialist to his work at the ITSO where he writes extensively on all areas of Systems Management. Before joining the ITSO, Stephen worked in the Tivoli Services organization of Tivoli as a Network Management Specialist. He was involved in numerous projects designing and implementing large systems management solutions for major customers of Tivoli. For the last four years, he has concentrated on architectural work and the design of network management solutions for large customer environments and service providers. Patricia Iglesias is an IT Specialist with IBM in Spain. She has one year of experience in the e-business field. She has worked at IBM for one year. Her areas of expertise include TPSM, Java, object orientation, e-commerce, and© Copyright IBM Corp. 2001 xv
  • 17. pervasive. For the last several months she has concentrated in pervasive device development, e-business, and simulation with multi-agents. Edgar Gutierrez is an RS/6000 support specialist for Grupo Vitro, an IBM customer in Monterrey, Mexico. He has 5 years of experience with RS/6000. His areas of expertise includes Oracle implementation and support as well as performance tuning. For the last year he has concentrated on the software platforms for e-business in his company. Thanks to the following people for their invaluable contributions to this project: Tivoli Systems Doug Geiger, Kent Hayes, Al Montibello, Theresa Morris, Dean Skidmore, IBM USA Ernest A. Keenan, Bill Tracey IBM France Jean-Michel Porce IBM Spain Rafael Sanchez AlfonsoComments welcome Your comments are important to us! We want our Redbooks to be as helpful as possible. Please send us your comments about this or other Redbooks in one of the following ways: • Fax the evaluation form found in “IBM Redbooks review” on page 317 to the fax number shown on the form. • Use the online evaluation form found at ibm.com/redbooks • Send your comments in an Internet note to redbook@us.ibm.comxvi Introducing Tivoli Personalized Services Manager 1.1
  • 18. Chapter 1. Evolution of the Internet and ISP solutions This is an abbreviated history to demonstrate how quickly the Internet has expanded. With this expansion comes opportunities for your business. The goal of Tivoli Personalized Services Manager (TPSM) is to allow you to seize that opportunity by delivering premium services to your customers quickly. As you seize that opportunity, TPSM can grow with your success by easily scaling to handle millions of enrollments. An abbreviated Internet history: 1969 ARPANET commissioned by DoD for research into networking. One of the original four nodes is an IBM 360. 1972 Ray Tomlinson of Bolt Beranek and Newman, Inc. (BBN) modifies the E-mail program for ARPANET, where it becomes a quick hit. The @ sign was chosen from the punctuation keys on Tomlinsons Model 33 Teletype for its “at” meaning. 1974 BBN opens Telenet, the first public packet data service (a commercial version of ARPANET). 1978 TCP split into TCP and IP. 1979 USENET established using UUCP between Duke and UNC by Tom Truscott, Jim Ellis, and Steve Bellovin. All original groups were under the net.* hierarchy. 1982 DCA and ARPA establish the Transmission Control Protocol (TCP) and Internet Protocol (IP) as the protocol suite, commonly known as TCP/IP, for ARPANET. 1983 EARN (European Academic and Research Network) established. Very similar to the way BITNET works with a gateway funded by IBM. 1984 Domain Name System (DNS) introduced. Number of hosts breaks 1,000. 1985 100 years to the day of the last spike being driven on the cross-Canada railroad, the last Canadian university is connected to NetNorth in a one year effort to have coast-to-coast connectivity. 1987 National Science Foundation (NSF) signs a cooperative agreement to manage the NSFNET backbone with Merit Network, Inc. (IBM and MCI involvement was through an agreement with Merit). Merit, IBM, and MCI later founded ANS. Number of hosts breaks 10,000.© Copyright IBM Corp. 2001 1
  • 19. 1989 Number of hosts breaks 100,000. 1990 The World comes on-line (world.std.com), becoming the first commercial provider of Internet dial-up access. 1992 Number of hosts breaks 1,000,000. The term “surfing the Internet” is coined by Jean Armour Polly. 1993 Mosaic takes the Internet by storm; WWW proliferates at a 341,634% annual growth rate of service traffic. Gophers growth is 997%. 1994 WWW edges out telnet to become 2nd most popular service on the Net (behind ftp-data) based on percentage of packets and bytes traffic distribution on NSFNET. 1995 WWW surpasses ftp-data in March as the service with greatest traffic on NSFNet based on packet count, and in April based on byte count. 1996 Various ISPs suffer extended service outages, bringing into question whether they will be able to handle the growing number of users. AOL (19 hours), Netcom (13 hours), and AT&T WorldNet (28 hours - E-mail only). Starting in 1990, individual companies, such as The World, have been writing custom ISP programs to enroll customers, bill customers, provision services, deliver content, provide hot backup, rewrite code to increase scalability, and write new code for premium services. Many of those programs are still in use today, maintained by an army of programmers, each fighting the issues of scalability and content. There is a better way. In late 1997, the IBM Telecommunications and Media Industry Solutions Unit wanted to enter the Internet space. IBM named the new system ISMS (Internet Subscription Management System). In mid 1999 the process to move the ISMS team to Tivoli began. The name was changed to TSM (Tivoli Subscription Manager), and ultimately, to TISM (Tivoli Internet Services Manager) and TPSM (Tivoli Personalized Services Manager), where TPSM operates on the same code base as TISM with some additional modules to support pervasive device management. TISM is a completely integrated infrastructure of software components for Internet service provisioning. TISM is an industrial strength system designed to allow the Internet Service Provider (ISP) to support multiple separately branded offerings simultaneously, and provide each brand with a unique and completely stand-alone identity and full range of business offerings. To do2 Introducing Tivoli Personalized Services Manager 1.1
  • 20. this, TISM is designed for continuous operation, flexible enhancement, and ishighly scalable. The system relies on industry standard hardware andsoftware components with a flexible architecture for integrating variedcomponents so that ISPs operating under the TISM umbrella can offer theirsubscribers an unlimited variety of Internet value-add features and benefitswithout having to alter the core base of information management andcustomer service platform that TISM maintains in a centralized database.TISM is designed to anticipate growth by allowing service providers to initiallydeploy a system size that comfortably accommodates their immediateoperational needs and grow it exponentially to support a subscription installbase of millions of users while providing uninterrupted services andmaintaining database consistency.TPSM expands on TISM. It is a complete business infrastructure thatempowers ISPs to offer new and different types of value-added andpremium-content services. TPSM will carry ISP s into the next generation ofIP communication services.TPSM extends the capability of present day Internet services to new mobileand handheld service offerings. TPSM is designed to scale and managemillions of subscribers and pervasive devices in a feature-rich environment.TPSMs new operational service paradigm goes beyond the simpleconnection of subscribers by single devices. TPSM associates and linkssubscribers with individual Personalized Service Environments and allowseach subscriber to access their customized secure environment from avariety of pervasive devices anywhere and anytime.Tivoli and IBM will continue to push the envelope on developing scalableInternet solutions. In 1999 IBM became the first Corporate partner to beapproved for Internet2 access. Chapter 1. Evolution of the Internet and ISP solutions 3
  • 21. 4 Introducing Tivoli Personalized Services Manager 1.1
  • 22. Chapter 2. Overview of Tivoli Personalized Service Manager The Tivoli Internet Services Manager provides a completely integrated infrastructure of software components for Internet service provisioning. It is an industrial strength system designed to allow the Internet Service Provider (ISP) to support several separately branded offerings simultaneously and to provide each brand with a unique marketplace identity and with a full range of business offerings. The Tivoli Internet Services Manager is designed for continuous operation and flexible enhancement, and is highly scalable. The system relies on industry standard hardware and software components with a flexible architecture for integrating additional and varied components. ISPs using the Tivoli Internet Services Manager can offer their subscribers an unlimited variety of Internet features without having to alter a core base of information management and customer service features that the system centralized database. The systems design anticipates growth and allows the Tivoli Internet Services Manager owner to start with a size that comfortably accommodates the initial anticipated subscriber base while remaining poised to grow exponentially as needed (see Figure 1). Figure 1. Tivoli Internet Services Manager© Copyright IBM Corp. 2001 5
  • 23. 2.1 Whats new for this release of Tivoli Personalized Services Manager Tivoli Internet Services Manager contains several new features to help enhance the functionality. These include a web content hosting system that allows user to create and maintain personal web pages, a portal toolkit to enhance personalization, a radius server to assist with authentication, localization, and a device manager system to help filter realms and deals. Each of these new enhancements are discussed in detail in the following paragraphs.2.1.1 Web Hosting The Web Content Hosting system allows users to manage their own published webspace. It is a separate process from other parts of the TISM infrastructure. The interface between the core TISM processes and Web Content Hosting is through the provisioning subsystem. Below is a list of each of the components associated with the web content hosting server and how they fit into the overall picture. Upload Facility Web Hosting contains an upload facility that allows users to use either an HTTP interface or FTP client for the purpose of managing their personal webspace. Users can use their own FTP client, while the ISP can customize the HTTP GUI to comply with their look and feel. The upload facility automatically publishes files via an HTTP Server. Provisioning Provisioning utilizes both FTP and HTTP support. There are two FTP systems; the Provisioning FTP Daemon (PFTPD) and the FTP server (NcFTPd). The PFTPD sends and receives user information from the Tivoli Internet Services Manager database. From this information gathering process, it creates the user structure and the NcFTPd user account. The NcFTPD is what allows user to upload and download from their device to the web content hosting server. CGI Script The following features are provided to ISP users through Perl scripts: • Page access counter • Guestbook • Mail-to function • Access counters statistics6 Introducing Tivoli Personalized Services Manager 1.1
  • 24. WebSpace Administration Servlet WebSpace management application provides the user with the following operations: • Personal Web space display • File upload and automatic publishing • File download • File delete2.1.2 Portal Toolkit The Portal Toolkit (pTk) enhances personalization by allowing the development of portal pages. Below is a listing of the new features for 1.1 Multi-device Portal Engine This provides the ability to build portals with unique URLs capable of generating pages for specific devices such as PCs with web browsers, mobile phones with WAP devices, or screenphones. User Preferences API Allows users to personalize portal home pages. For example, users can selecting from a list of news channels to appear within the news JSP. Referenced Links Management Administrators create a database repository of links that the portal can reference. Users can access these links to customize their portal pages. Vertical Services Integrated with pTk These services provide the users with functionality such as a calendar, agenda, and address book. ISPs can use these services to develop their own additional services. JSP Portlet Framework Allows you to construct portal pages by assembling portlets. Authentication Services User are authenticated at the beginning of each user session. A user does not have to be re-authenticated to access different services. This is all part of a Single Sign-On process, which allows premium content access control. Chapter 2. Overview of Tivoli Personalized Service Manager 7
  • 25. Targeted Ads: Interface with Double Click Ads Server Personalization allows users to customize their devices home page. Subscribers can proactively customize their portal page by configuring categories such as: • Stock quotes (personal portfolio) • Weather (local, national, or international) • Entertainment (music, movies, theatre, etc.) • Travel (destinations, prices, etc.) • News (local, national, or international) The Tivoli Personalized Service Manager and virtual ISPs can personalize subscriber home pages over and above the choices made by subscribers by adding: • Links to local content based on subscriber profile • Targeted ads pulled from an external ad-queue management system2.1.3 Radius The following are enhancements and changes to the Radius server. • DB2 support - DB2 is not supported in this release. • NLS message support - RADIUS will now support translated messages written to an NLS log file in addition to the English-only message written to the standard log file. • IP Allocation - Rather than using the IP address generated by the RADIUS client (NAS), the RADIUS server can be configured to generate an IP address from a pool of IP addresses set up through the Director Console.2.1.4 DB2 support TPSM now supports IBM DB2 as well as Oracle relational database management system.2.1.5 Localization Enhancements were made to the data model, toolkits, and applications to support localization. The purpose of localization is to have the ability to translate into many different languages. In this release, only Japanese translation is provided.8 Introducing Tivoli Personalized Services Manager 1.1
  • 26. 2.1.6 Device Manager The enhancements and changes for this release of Device Manager are as follows: Job distribution by realm, deal, or both A devices owner can be the member of a single realm and of one or more deals, as defined by the subscription manager component used with Device Manager. It is now possible to distribute jobs to devices in a realm, a deal, or both. In addition, an administrator can filter jobs by realm or deal. Support for DB2 Universal Database Version 7 and Oracle 8.1.5 Device Manager can now use DB2 Universal Database Version 7.1 as its relational database. In addition, Device Manager has added support for Oracle8i Version 8.1.5. Changes to plug-ins The following plug-ins have been added: • The Internet appliance device (IAD) plug-in provides support for devices used for Internet access, e-mail, voice mail, Personal Information Management (PIM), and other pervasive computing tasks that use the PVC client stack as their base architecture. • The Generic Windows CE device plug-in provides basic support for all devices that use the Windows CE operating system. In addition, support for the Iap500 plug-in has been dropped for this release of Device Manager. Enhancements to the Device Manager console The Device Manager consoles filtering capability now allows for more granularity and more complex combinations of filtering criteria. New icons help an administrator to identify which criteria are being used, and which are not valid or not in effect. Other “look and feel” changes improve the usability of the console and its ability to display very large numbers of devices. Integration with WebSphere Everyplace Suite (WES) As part of Tivoli Personalized Services Manager Version 1.1, Device Manager supports the WES concept of an authentication proxy. The authentication proxy provides a single sign-on to the WES servers, including the Tivoli Personalized Services Manager server. Installers who choose to take advantage of this support need to take additional steps during the Device Manager configuration so the Device Manager can redirect devices through the authentication proxy during enrollment. Chapter 2. Overview of Tivoli Personalized Service Manager 9
  • 27. 2.1.7 Integration with WebSphere Everyplace suite TPSM can be used as a stand-alone system or as a component of the WebSphere Everyplace Suite (WES). Lightweight Directory Access Protocol (LDAP) Integration enhances integration to provide information to the IBM LDAP Server. Active Session Support provides complete tracking of subscribers user sessions across their device set. TPSM Portal Toolkit can provide portlets in the WES environment. It can also delegate authentication to the WES Authentication Proxy. The web authentication server interfaces with the WES authentication proxy and when used, users are authenticated and device type identification is achieved.2.2 Features This section highlights the features that make TISM and TPSM formidable Internet service provisioning systems. TISM and TPSM contain several new features to help enhance the functionality that are detailed in the following pages.2.2.1 Device Manager (only in TPSM) The Tivoli Personalized Services Manager provides a wide range of subscriber device management features, including: • Enrolling subscribers and their devices • Distributing software to the device • Updating device configuration remotely • Listing the devices owned by a user • Updating restpages (startup pages) for screenphones The Device Manager feature provides a flexible framework and a set of services for managing a subscribers devices. Device vendors can extend the systems framework and use it to enable their devices to be managed by the Tivoli Personalized Services Manager (Figure 2 on page 11). Support is provided for several distinct types of devises such as: • Personal Digital Assistants (PDAs) • Screenphones • Wireless Access Protocol (WAP) devices10 Introducing Tivoli Personalized Services Manager 1.1
  • 28. Figure 2. Device Manager Services2.2.2 Enrollment and service provisioning Every ISP relies on a centrally managed enrollment engine while being allowed total autonomy in presentation and payment plan offers. A standard set of enrollment screens can be customized to deliver uniquely branded messages and graphics as well as ISP-specific billing plans and payment options. Behind the scenes, a consistent array of data elements are captured from each new subscriber, thereby distributing all of Tivoli Personalized Services Managers additional features to every subscriber, regardless of their ISP (Figure 3 on page 12). With individual branding comes unique realm name distinction. Every ISP hosted on Tivoli Personalized Services Manager is granted a realm, which is a partition within the overall database that distinguishes them and their subscribers from all others in the system and the Internet at large. Realms help extend brand name identification. For example, realm 1 could be “alpha.com” and realm 2 could be “beta.com.” Every subscriber to the ISP named “Alpha” would receive a user name and e-mail address that is unique to the realm of “alpha.com” (John@alpha.com, Mary@alpha.com, etc.), while subscribers to “Beta” would receive addresses ending in beta.com. Chapter 2. Overview of Tivoli Personalized Service Manager 11
  • 29. Realm distinctions provide benefits to system management. Customer Care Reps can be granted complete read and write security provisions to specific realms, which keeps each realms data separate and secure from any others. Figure 3. Enrollment and service provisioning2.2.3 Subscriber authentication and access control Subscribers are granted single sign-on status throughout a session. Information pertinent to the continuation of the session is preserved via cookies, eliminating the need to re-enter ID information. For access to critically secure data, Tivolis SecureWay Policy Director can be used in conjunction with the Tivoli Personalized Services Manager (Figure 4 on page 13).12 Introducing Tivoli Personalized Services Manager 1.1
  • 30. Figure 4. Subscriber authentication and access control2.2.4 Customer care support All data viewed by the customer service representatives (CSRs) is completely up-to-date and any changes made are immediately accessible to the billing system and any other integrated systems (Figure 5 on page 14). Access control for Customer Service personnel can be restricted in several ways. For example, they can be limited to read or write capabilities, or be allowed to only access certain portions of the subscriber population. This degree of security control allows ISPs within TPSM to subcontract Customer Service help in off-site locations where Customer Service Reps can log into the Tivoli Personalized Services Manager Customer Care application remotely and work with secure, online subscriber data. Chapter 2. Overview of Tivoli Personalized Service Manager 13
  • 31. Figure 5. Customer care support2.2.5 Subscriber personalized service environment and self care Personalization allows users to customize their devices home page. Subscribers can proactively customize their portal page by configuring categories such as: • Stock quotes (personal portfolio) • Weather (local, national, or international) • Entertainment (music, movies, theatre, etc.) • Travel (destination, prices, etc.) • News (local, national or international) The Portal Toolkit (pTk) was created to simplify the design and implementation of custom portal pages. This is achieved through a building block structure, or components. Structural components assist in creating the layout and content of a portal page, while service components include “turn-key” applications or services within portal pages (Figure 6 on page 15).14 Introducing Tivoli Personalized Services Manager 1.1
  • 32. Figure 6. Subscriber personalization and self careThe portal engine is delivered with built-in components, such as PersonalInformation Management (PIM), components such as calendar, agenda, andaddress book. These components allow the subscriber to customize theportal pages on their devices. Some additional key functions associated withpTk are:1. Multi-device Portal Engine Web devices (e.g., PC, Win CE, screenphones), WAP devices2. User Preferences API Users and user groups profiling3. Referenced Links Management Hierarchical repository of links referenced by the portal4. Vertical Services Integrated with pTk Web Content Hosting PIM: Calendar, Agenda, Address Book, etc.5. JSP Components Framework Components framework drastically simplifies JavaServer Pages (JSP) writing Components library: PIM components, structural components Chapter 2. Overview of Tivoli Personalized Service Manager 15
  • 33. 6. Authentication Services User authentication and device type identification Single sign-on, Premium content access control, WAP support 7. Targeted Ads: Interface with Double Click Ads Server This feature provides a marketing opportunity for ISPs. They can target their subscribers portal pages for banner ads and special interest notices. Another aspect of personalization is self-care. Subscribers can access and modify some of their profile data. They can update their address and telephone data, change their billing plan and method of payment data, and subscribe to premium content through the Tivoli Personalized Services Managers self-care application, which is linked to the central database from links on their portal page.2.2.6 Integration with third party components and tools Tivoli Personalized Services Manager also supports an LDAP interface for easy integration with LDAP oriented systems and servers such as mail and messaging systems.2.2.7 Operation support for growing provider business A centralized configuration tool, called the Director Tool, allows easy access to the central controls for system administration, enrollment customization, billing plan customization, and Customer Service Rep. security profiling (Figure 7 on page 17). Many of the configuration options can be used by non-technical managers and marketing personnel, making Tivoli Personalized Services Manager a more flexible Internet solution.16 Introducing Tivoli Personalized Services Manager 1.1
  • 34. Figure 7. Operation support for growing provider business2.2.8 Emerging Internet business models-wholesale and virtual ISP A variety of APIs allow Tivoli Personalized Services Manager to integrate nearly any Internet component that meets industry standards so it can provide diverse functionality and follow new trends in Internet interaction (Figure 8 on page 18). Tivoli Personalized Services Manager can host several stand-alone ISPs (virtual ISPs) with unique brand names and identities without any degradation to response time or to processing efficiency. Bulk transfers of subscriber bases can be accomplished programmatically, allowing ISPs to purchase existing subscriber populations and quickly add them to the ISPs business. Chapter 2. Overview of Tivoli Personalized Service Manager 17
  • 35. Figure 8. Supporting emerging Internet business models2.2.9 Adherence to industry standards The Tivoli Internet Services Manager uses industry standard languages and protocols to facilitate integration with third party components and tools: • Industry standard relational databases (DB2, Oracle) • Java based .application programming interfaces (APIs) • TCP/IP-based communications between components and systems • Web user interfaces based on industry standard implementations of Java, JavaScript, HTML and similar web content languages Benefits gained by using industry standards: • ISPs are able to take advantage of their staffs existing technical skills • Tivoli Internet Services Manager integrates well with other industry standard systems Industry standard components include: • IBM DB2 or Oracle RDBMS • Netscape Enterprise Server or IBM AIX httpd software for Web servers • WebSphere Application Server • IBM AIX operating system18 Introducing Tivoli Personalized Services Manager 1.1
  • 36. • Sun Solaris supportIndustry standard protocols and languages include: • Structured Query Language (SQL 92) standard interface for relational database access. • The Tivoli Internet Services Manager RADIUS authentication server, which complies with Internet Engineering Task Force (IETF) specifications. • Web user interfaces and publishing based on industry standard implementations of Java, JavaScript, HTML, and similar web content languages. • Java based APIs (Tivoli Internet Services Manager Integration Toolkits - iTks) • Java Standard Java Server Pages (JSP) interfaces and Servlets • Use of industry-standard utilities such as Perl for CGI. • TCP/IP-based communications between components and systems. • Standard scripts to assist in installation, maintenance, and troubleshooting. Chapter 2. Overview of Tivoli Personalized Service Manager 19
  • 37. 20 Introducing Tivoli Personalized Services Manager 1.1
  • 38. Chapter 3. Installation checklist This chapter is a guide to the installation of all the software infrastructure that we implemented for the successful operation of TPSM. The hardware and software requirements for Tivoli Internet & Personalized Services Manager on AIX are as follows (Table 1): Table 1. AIX requirements Operating System IBM AIX Version 4.3.3 Web Server IBM HTTP Server 1.3.12 or Netscape Enterprise Server 3.6 JDK JDK 1.2.2 with PTF 7. See IBM APAR IY12075 Supported Databases Oracle Database Enterprise Edition 8.1.5 IBM DB2 Version 7.1 Application Server WebSphere Application Server V3.5 Standard Edition using Instant DB Option. • RS/6000 or RS/6000 SP running AIX V4.3.3, with maintenance level 06 applied • Support for an appropriate network interface • Minimum 300 MB of free disk space on the /usr filesystem for installation • CD-ROM drive • Minimum 256MB of memory; 512 MB recommended3.1 Infrastructure used in this project The following is a list of hardware and software that was used for this project: RS/6000: • RS/6000 F50 (7025-140) • Four 332 MHz PowerPC_604e processors • 1.5 GB RAM • 4 * 8 GB SCSI HDD© Copyright IBM Corp. 2001 21
  • 39. AIX Software: • AIX 4.3.3.06 • Tivoli Personalized Services Manager V1.1.1 • WebSphere Application Server Standard V3.5 • Netscape Enterprise Server 3.63 • Oracle Enterprise Edition 8.1.5 • Oracle JDBC driver 8.1.6 • JDK 1.2.2 with APAR IY12075 • IBM HTTP Server V1.3.123.2 Infrastructure installation In this section we explain the installation procedures for all TPSM software pre-requisites.3.2.1 AIX software We made a new installation of the AIX 4.3.3 and applied the latest maintenance level, which in our case was ML 06.3.2.2 Installing additional IBM AIX filesets The following filesets were installed from the IBM AIX 4.3.3 CDs. The CD contains the minimum level of the filesets. Later in this chapter we show how to bring them all to the latest level. • bos.adt (ALL) • bos.compat.termcap - Termcap Compatibility Package (2) • xlC.rte - C++ runtime library for IBM AIX (select ALL) • X11.adt - Applications Development Toolkit (all) • X11.base (x windows) (ALL) • perl.rte 5.5.3 (all) • X11.motif.mwsm.4.3.3.1 • X11.motif.lib.4.3.3.2 • X11.adt.motif.4.3.3.1 • X11.compat.lib.X11R5.4.3.3.2 • X11.base.rte.4.3.3.222 Introducing Tivoli Personalized Services Manager 1.1
  • 40. • X11.base.lib.4.3.3.2 • X11.Dt.lib.4.3.3.2 • X11.Dt.rte.4.3.3.3 • bos.up.4.3.3.3 • bos.sysmgt.serv_aid.4.3.3.2 • bos.rte.libpthreads.4.3.3.2 • bos.net.tcp.client.4.3.3.3 • bos.mp.4.3.3.3 • bos.adt.prof.4.3.3.3 • bos.adt.include.4.3.3.1To verify that we have installed the fileset, we used the lslpp command asshown below: # lslpp -l bos.net.tcp.* Fileset Level State Description ---------------------------------------------------------------------------- Path: /usr/lib/objrepos bos.net.tcp.adt 4.3.3.25 COMMITTED TCP/IP Application Toolkit bos.net.tcp.client 4.3.3.26 COMMITTED TCP/IP Client Support bos.net.tcp.server 4.3.3.25 COMMITTED TCP/IP Server bos.net.tcp.smit 4.3.3.25 COMMITTED TCP/IP SMIT Support Path: /etc/objrepos bos.net.tcp.client 4.3.3.26 COMMITTED TCP/IP Client Support bos.net.tcp.server 4.3.3.25 COMMITTED TCP/IP ServerWe can see that the bos.net.tcp.client is at the 4.3.3.26 level and werequired 4.3.3.3 as minimum, so with the 4.3.3.26 we do not have anyproblem.1. Use the following steps to install the required filesets with smit: - smitty or smit - Select Software Installation and Maintenance. - Select Install and Update Software. - Select Install and Update from LATEST Available Software. - Enter INPUT device (press F4 to list devices). - Select the CD-ROM where the IBM AIX CD is located, then press Enter. Chapter 3. Installation checklist 23
  • 41. - Select SOFTWARE to install (press F4 to list available software from CD). - Using the find and select keys on all of the following file sets: • bos.adt (select ALL) • Base Operating System Application Developers Toolkit • bos.compat.termcap - Termcap Compatibility Package (2) • xlC.rte - C++ runtime library for IBM AIX (select ALL) • X11.adt - Applications Development Toolkit (ALL) • X11.base (x windows) (ALL) • perl.rte 5.5.3 (ALL) • X11.motif.mwsm.4.3.3.1 • X11.motif.lib.4.3.3.2 • X11.adt.motif.4.3.3.1 • X11.compat.lib.X11R5.4.3.3.2 • X11.base.rte.4.3.3.2 • X11.base.lib.4.3.3.2 • X11.Dt.lib.4.3.3.2 • X11.Dt.rte.4.3.3.3 • bos.up.4.3.3.3 • bos.sysmgt.serv_aid.4.3.3.2 • bos.rte.libpthreads.4.3.3.2 • bos.net.tcp.client.4.3.3.3 • bos.mp.4.3.3.3 • bos.adt.prof.4.3.3.3 • bos.adt.include.4.3.3.1 - When you have finished, press Enter to install the selected filesets. 2. To obtain maintenance level 06, please contact your local Software Service Center or use FixDist to get the latest maintenance level for the AIX. Once you obtained the ML, use the following steps to install the update with smit: • smitty or smit • Select Software Installation and Maintenance.24 Introducing Tivoli Personalized Services Manager 1.1
  • 42. • Select Install and Update Software. • Select Install and Update from LATEST Available Software. • Enter INPUT device (press F4 to list devices). • Select the directory where you downloaded the maintenance level • Select all file sets from SOFTWARE maintenance level 6 • When you have finished, press Enter to install.3.2.3 JDK 1.2.2 installation and setup procedure This section will show you how to install a Java Developer Toolkit (JDK) on an AIX machine. You can obtain the JDK by downloading from http://www.ibm.com/java/jdk/download/index.html. On the AIX platform, the JDK is available in tar format. You need to make sure to download the following files: • Java_dev2.rte.tar • Java_dev2.msg.tar • Java_dev2.samples.tar • Java_dev2.ext.tar • Java_dev2.adt.tar You need to uncompress each of these files into a temporary directory before starting the installation. - Uncompress the downloaded tar file using: tar -xvf <tar-filename> - Change directory to the directory that contains uncompressed results. If the installation package table of contents (the .toc file) does not exist, create it with the following command while still in the install directory: inutoc . To perform the installation, you need to be a user that has root privileges. In an AIX terminal window, enter the following command: smitty installp This will bring up the AIX System Management Interface Tool window and put you at the Install and Update Software menu as shown in the next screen: Chapter 3. Installation checklist 25
  • 43. Install and Update Software Move cursor to desired item and press Enter. Install and Update from LATEST Available Software Update Installed Software to Latest Level (Update All) Install and Update Software by Package Name (includes devices and printers) Install Software Bundle (Easy Install) Update Software by Fix (APAR) Install and Update from ALL Available Software F1=Help F2=Refresh F3=Cancel Esc+8=Image Esc+9=Shell Esc+0=Exit Enter=Do Choose Install and Update from LATEST Available Software to invoke the installation process. After that, enter the device or directory where the JDK installation package is located, as shown in the next screen: Install and Update from LATEST Available Software Type or select a value for the entry field. Press Enter AFTER making all desired changes. [Entry Fields] * INPUT device / directory for software [] + F1=Help F2=Refresh F3=Cancel F4=List Esc+5=Reset Esc+6=Command Esc+7=Edit Esc+8=Image Esc+9=Shell Esc+0=Exit Enter=Do smitty will then let you choose which software to install, as shown in the next screen. Choose _all_latest and click Enter to start the installation.26 Introducing Tivoli Personalized Services Manager 1.1
  • 44. Install and Update from LATEST Available Software Type or select values in entry fields. Press Enter AFTER making all desired changes. [Entry Fields] * INPUT device / directory for software /software/JDK * SOFTWARE to install [_all_latest] + PREVIEW only? (install operation will NOT occur) no + COMMIT software updates? yes + SAVE replaced files? no + AUTOMATICALLY install requisite software? yes + EXTEND file systems if space needed? yes + OVERWRITE same or newer versions? no + VERIFY install and check file sizes? no + Include corresponding LANGUAGE filesets? yes + DETAILED output? no + Process multiple volumes? yes + F1=Help F2=Refresh F3=Cancel F4=List F5=Reset F6=Command F7=Edit F8=ImageAfter it finishes, it will provide you with an installation summary at the bottomof the command status screen, as shown in the next screen. You should verifyeach component’s installation status. COMMAND STATUS Command: OK stdout: yes stderr: no Before command completion, additional instructions may appear below. [MORE...143] Installation Summary -------------------- Name Level Part Event Result ----------------------------------------------------------------------- Java_dev2.ext.plugin 1.2.2.0 USR APPLY SUCCESS Java_dev2.ext.jaas 1.2.2.0 USR APPLY SUCCESS Java_dev2.ext.commapi 1.2.2.0 USR APPLY SUCCESS Java_dev2.rte.lib 1.2.2.0 USR APPLY SUCCESS Java_dev2.rte.bin 1.2.2.0 USR APPLY SUCCESS Java_dev2.samples.demos 1.2.2.0 USR APPLY SUCCESS [BOTTOM] F1=Help F2=Refresh F3=Cancel F6=Command F8=Image F9=Shell F10=Exit /=FindAfter the successful installation of IBM Developer Kit for AIX, Java TechnologyEdition, Version 1.2.2, we proceded to apply PTF 7. See APAR IY12075. Chapter 3. Installation checklist 27
  • 45. The instfix -ik command tells you if you’ve applied the APAR, as seen in the next screen: # instfix -ik IY12075 There was no data for IY12075 in the fix database. The above output tells us that we have not installed all filesets for IY12075. You can obtain the APAR from: http://techsupport.services.ibm.com/rs6k/fixdb.html You have to download the next filesets: - Java_dev2.adt.debug.1.2.2.8 - Java_dev2.adt.src.1.2.2.8 - Java_dev2.ext.plugin.1.2.2.8 - Java_dev2.rte.bin.1.2.2.8 - Java_dev2.rte.lib.1.2.2.8 Total number of images: 5 Total byte size of fix package(s): 44889088 To install the APAR, you should log on as a root user and perform the following steps: 1. Change directory to the directory that contains uncompressed results. If the installation package table of contents (the .toc file) does not exist, create it with the following command while still in the install directory: inutoc . 2. Call the AIX smitty utility for package installation: smitty installp 3. Specify the source directory of installation package, and click Enter to start the installation. At the end of the installation process, you can verify the installation status from the installation summary. We used the instfix -icvk command to determine the status of IY12075. See the next screen.28 Introducing Tivoli Personalized Services Manager 1.1
  • 46. # instfix -ivck IY12075 #Keyword:Fileset:ReqLevel:InstLevel:Status:Abstract IY12075:Java_dev2.adt.debug:1.2.2.8:1.2.2.8:=:SDK 1.2.2 PTF 7: ca122-20000726 IY12075:Java_dev2.adt.src:1.2.2.8:1.2.2.8:=:SDK 1.2.2 PTF 7: ca122-20000726 IY12075:Java_dev2.ext.plugin:1.2.2.8:1.2.2.8:=:SDK 1.2.2 PTF 7: ca122-20000726 IY12075:Java_dev2.rte.bin:1.2.2.8:1.2.2.8:=:SDK 1.2.2 PTF 7: ca122-20000726 IY12075:Java_dev2.rte.lib:1.2.2.8:1.2.2.8:=:SDK 1.2.2 PTF 7: ca122-20000726 # There are five filesets for IY12075. The Status field tells us if we’ve installed the fileset or not. If it says “+”, it means that we’ve already applied the correct level of fileset. If it shows “-”, it indicates that we need to apply the level of fileset that the ReqLevel field shows you. Setting environment variable After installation, the JDK needs to know the path to its own class libraries. To enable the JDK to find other class libraries, you should set the system CLASSPATH environment variable. You should also set the JAVA_HOME environment variable to point to the base directory for the JDK, which is /usr/jdk_dev2 by default. You can set this variable in your current AIX session by using the export command or put these commands into your login profile. export CLASSPATH=$CLASSPATH:.:path1:path2:any path to class library export JAVA_HOME=/usr/jdk_dev23.2.4 IBM HTTP Server V1.3.12 for AIX For the AIX platform, you can obtain the IBM HTTP Server from the WebSphere CD or obtain it in tar format from: http://www.software.ibm.com/webservers/httpservers/download.html 3.2.4.1 Installing IBM HTTP Server If you install the HTTP Server from a downloaded package, you should log on as a root user, and perform the following steps: • Uncompress the downloaded tar file using: tar -xvf <tar-filename> • Change directory to the directory that contains uncompressed results. If the installation package table of contents (the .toc file) does not exist, create it with the following command while still in the install directory: inutoc . Chapter 3. Installation checklist 29
  • 47. • Call the AIX smitty utility for package installation: smitty installp • Specify the source directory of installation package, and click Enter to start the installation. At the end of the installation process, you can verify the installation status from the installation summary.3.3 Oracle JDBC driver 8.1.6 We obtained the classes12.zip file from: http://technet.oracle.com/software After we downloaded the classes12.zip file, we copied to the $ORACLE_HOME/jdbc/lib directory. This file must be available to Java through the CLASSPATH variable.30 Introducing Tivoli Personalized Services Manager 1.1
  • 48. Chapter 4. Building the environment In this chapter we explain all the Operating Systems tasks that we performed, and also explain the installation and configuration of the products that we used in this project. We choose the following products to run the TPSM: • Oracle 8.1.5i • Netscape Enterprise Server 3.63 • WebSphere Application Server 3.5 Standard Edition4.1 File system configuration In order to begin installing the products, we must increase the size of some filesystems. You can use smitty to change the file system sizes, or use the following commands: chfs -a size=65536 / chfs -a size=32768 /var chfs -a size=32768 /home chfs -a size=655360 /tmp chfs -a size=4030464 /usr Also we need to create two new file systems; /db and /var/adm/logs. For /var/adm/logs, we are going to create it in the rootvg volume group. crfs -v jfs -grootvg -asize=49152 -m/var/adm/logs -Ayes For /db, we are going to create in a new volume group dbvg. If you have only one disk, it´s possible to create the new file system for the database in the same volume group. This change requires that you change the Oracle scripts. We will explain that in Section 4.2, “Oracle installation” on page 32. We create the volume group and the new file system /db. mkvg -f -ydbvg -s8 hdisk1 crfs -v jfs -gdbvg -asize= 4259840 -m/db -Ayes We mount the file systems. mount /var/adm/logs mount /db© Copyright IBM Corp. 2001 31
  • 49. 4.2 Oracle installation The Oracle installation scripts are packaged as a file set in TivTISM.ora.1.1.0.1.1025.bff. The installation has two parts; the Oracle installation script and the installation of Oracle, and the Tivoli Personalized Services Manager schema. To install the Oracle installation script: 1. Open a console 2. Type smitty install_latest 3. Select the device or directory where you have located the Oracle installation scripts 4. Press F4 in the field SOFTWARE TO INSTALL. This will open a window where you can select the software that you want to install. 5. Select 1.1.1.0 Tivoli Internet Services Manager - Oracle Database Integration and install it. Now, the Oracle scripts are installed. 6. To install the Oracle and the Tivoli Personalized Service Manager Schema export DISPLAY=:0.0 7. xhost + . You should receive the message access control disabled, clients can connect from any host. Try to open the smit console: smit. If the smit console doesn’t open you have to solve this problem. 8. Unmount any CD-ROMs, making sure there are no file systems that begin with the name cdrom. 9. Place the Oracle 8i CD in the CD-ROM drive 10.Change directory to /usr/TivTSM/install/db/oracle. 11. export PATH=$PATH:/usr/TivTSM/install/db/oracle 12.../TSMOracle8i 13.Press Enter when you are prompted to place the Oracle CD in the drive. 14.Answer Yes when prompted for Checking for dba group...dba group not found. Create? created. 15.Answer Yes when prompted for Checking for oracle8 user...oracle8 user not found. Create? created. 16.Answer /db when prompted, What is the mount point for Oracle users home?32 Introducing Tivoli Personalized Services Manager 1.1
  • 50. This process initializes Java Virtual Machine, which may take up to 10 minutes. If after 10 minutes you do not see the message Install phase starts, updates every 15 seconds, an error has occurred. Press Ctrl+C to stop the install. Otherwise, within 20-90 minutes, you will receive a message informing you of the progress of the Oracle software installation. If you do not receive a message, or if the install process immediately asks for the database instance, an error has occurred. You should quit the install at once and look in the log file for errors. The cause of errors in this part is usually a wrong installation of Java 1.2.217.When the install and link phase have completed, you will receive the following message: Enter the full pathname of the local bin directory: [/usr/local/bin]:. Use the default value.18.Enter ispb when asked, Enter instance name to be created, or q to abort:.19.Enter n when asked, Do you want logging on or off for this install? (n/f)20.Answer How many subscribers in this database? Note: The minimum number of subscribers is 10,000, while the maximum number is limited by your hardware. Dont use any punctuation, i.e., 100000.21.Press Enter to review/update the /db/creispblv.ksh file. If all the information looks acceptable, quit the file without saving. This information is also saved in the /usr/TivTSM/install/db/oracle/dbcalc.log file. An example of this file is: Physical Partition Size: 16MB File Units Size ====== ===== ========= Data: 8 127999K Index: 6 95999K Temp: 2 31999K System: 11 User: 1 Rbs: 1 Drsystem: 6 Oem: 1 Redo: 1 Ctrl: 1 This table shows the values that you have to have in mind to review the files /db/creispblv.ksh and /db/app/oracle/admin/ispb/create/ispbrun1.ksh. /db/creispblv.ksh Chapter 4. Building the environment 33
  • 51. #!/bin/ksh COMMAND=$(basename $0 .ksh) DIR=$(dirname $0) echo "Sending output to $DIR/$COMMAND.log" exec 2>$DIR/$COMMAND.log 1>&2 MAXRC=0 mklv -a c -y lvispbdata -ex -u1 rootvg 8 hdisk3 Compare the number of lvispbdata units with the number of units for data in the table. RC=$?;[ $RC -gt $MAXRC ] && MAXRC=$RC mklv -a c -y lvispbindex -ex -u1 rootvg 6 hdisk3 Compare the number of lvispbindex units with the number of units for index in the table. RC=$?;[ $RC -gt $MAXRC ] && MAXRC=$RC mklv -a c -y lvispbrbs1 rootvg 1 hdisk3 RC=$?;[ $RC -gt $MAXRC ] && MAXRC=$RC mklv -a c -y lvispbrbs2 rootvg 1 hdisk3 RC=$?;[ $RC -gt $MAXRC ] && MAXRC=$RC mklv -a c -y lvispbredo11 rootvg 1 hdisk3 RC=$?;[ $RC -gt $MAXRC ] && MAXRC=$RC mklv -a c -y lvispbredo12 rootvg 1 hdisk3 RC=$?;[ $RC -gt $MAXRC ] && MAXRC=$RC mklv -a c -y lvispbredo13 rootvg 1 hdisk3 RC=$?;[ $RC -gt $MAXRC ] && MAXRC=$RC mklv -a c -y lvispbredo21 rootvg 1 hdisk3 RC=$?;[ $RC -gt $MAXRC ] && MAXRC=$RC mklv -a c -y lvispbredo22 rootvg 1 hdisk3 RC=$?;[ $RC -gt $MAXRC ] && MAXRC=$RC mklv -a c -y lvispbredo23 rootvg 1 hdisk3 RC=$?;[ $RC -gt $MAXRC ] && MAXRC=$RC mklv -a c -y lvispbsys rootvg 11 hdisk3 Compare the number of lvispbsys units with the number of units for system in the table. RC=$?;[ $RC -gt $MAXRC ] && MAXRC=$RC mklv -a c -y lvispbdrsys rootvg 6 hdisk3 Compare the number of lvispbdrsys units with the number of units for drsystem in the table. RC=$?;[ $RC -gt $MAXRC ] && MAXRC=$RC mklv -a c -y lvispbtemp rootvg 2 hdisk3 Compare the number of lvispbtemp units with the number of units for temp in the table.34 Introducing Tivoli Personalized Services Manager 1.1
  • 52. RC=$?;[ $RC -gt $MAXRC ] && MAXRC=$RCmklv -a c -y lvispbctrl1 rootvg 1 hdisk3RC=$?;[ $RC -gt $MAXRC ] && MAXRC=$RCmklv -a c -y lvispbctrl2 rootvg 1 hdisk3RC=$?;[ $RC -gt $MAXRC ] && MAXRC=$RCmklv -a c -y lvispbctrl3 rootvg 1 hdisk3RC=$?;[ $RC -gt $MAXRC ] && MAXRC=$RCmklv -a c -y lvispbuser rootvg 1 hdisk3Compare the number of lvispbuser units with the number of units for userin the table.RC=$?;[ $RC -gt $MAXRC ] && MAXRC=$RCmklv -a c -y lvispboem rootvg 1 hdisk3Finally, compare the number of lvispboem units with the number of unitsfor oem in the table.RC=$?;[ $RC -gt $MAXRC ] && MAXRC=$RCchown oracle8:dba /dev/lvispb*chown oracle8:dba /dev/rlvispb*exit $MAXRCThe others usually are 1 so you don´t have to worry about them.Another important point is the volume group where you are going to installit. It´s specified here, so if you want to install in another volume group (inour case dbvg) you must change the command to read:mklv -a c -y lvispboem dbvg 1 hdisk3If you change the name of the instance for the db, you will notice that thenames for the logical volumes change in the middle for the name of theinstance./db/app/oracle/admin/ispb/create/ispbrun1.ksh#!/bin/shORACLE_SID=ispbexport ORACLE_SID/db/app/oracle/products/8.1.5/bin/svrmgrl << EOFconnect internal@/db/app/oracle/products/8.1.5/rdbms/admin/catalog.sql;CREATE ROLLBACK SEGMENT r0 TABLESPACE SYSTEMSTORAGE (INITIAL 32K NEXT 64K MINEXTENTS 10 MAXEXTENTS 512);ALTER ROLLBACK SEGMENT r0 ONLINE; Chapter 4. Building the environment 35
  • 53. REM ************ TABLESPACE FOR OEM_REPOSITORY *************** CREATE TABLESPACE OEM_REPOSITORY DATAFILE /dev/rlvispboem SIZE 5M REUSE AUTOEXTEND ON NEXT 25M MAXSIZE 80M MINIMUM EXTENT 128K DEFAULT STORAGE ( INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0); REM ************** TABLESPACE FOR ROLLBACK ***************** CREATE TABLESPACE RBS1 DATAFILE /dev/rlvispbrbs1 SIZE 12M REUSE DEFAULT STORAGE ( INITIAL 128K NEXT 128K MINEXTENTS 2 MAXEXTENTS UNLIMITED PCTINCREASE 0); ALTER DATABASE DATAFILE /dev/rlvispbrbs1 AUTOEXTEND ON; REM ************** TABLESPACE FOR ROLLBACK ***************** CREATE TABLESPACE RBS2 DATAFILE /dev/rlvispbrbs2 SIZE 12M REUSE DEFAULT STORAGE ( INITIAL 128K NEXT 128K MINEXTENTS 2 MAXEXTENTS UNLIMITED PCTINCREASE 0); ALTER DATABASE DATAFILE /dev/rlvispbrbs2 AUTOEXTEND ON; REM ************** TABLESPACE FOR TEMPORARY ***************** CREATE TABLESPACE TEMP_DATA DATAFILE /dev/rlvispbtemp SIZE 31999K REUSE You have to compare the size of /dev/rlvispbtemp with the size of temp. DEFAULT STORAGE ( INITIAL 256K NEXT 256K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0) TEMPORARY; ALTER DATABASE DATAFILE /dev/rlvispbtemp AUTOEXTEND ON; REM ************** TABLESPACE FOR USER ********************* CREATE TABLESPACE USER_DATA DATAFILE /dev/rlvispbuser SIZE 5M REUSE DEFAULT STORAGE ( INITIAL 50K NEXT 50K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0); ALTER DATABASE DATAFILE /dev/rlvispbuser AUTOEXTEND ON; REM ************** TABLESPACE FOR INDEX ********************* CREATE TABLESPACE ISPB_INDEX DATAFILE /dev/rlvispbindex SIZE 95999K REUSE You have to compare the size of /dev/rlvispbindex with the size of index. DEFAULT STORAGE ( INITIAL 50K NEXT 50K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0); ALTER DATABASE DATAFILE /dev/rlvispbindex AUTOEXTEND ON; REM ************** TABLESPACE FOR DATA ********************* CREATE TABLESPACE ISPB_DATA DATAFILE /dev/rlvispbdata SIZE 127999K REUSE36 Introducing Tivoli Personalized Services Manager 1.1
  • 54. You have to compare the size of /dev/rlvispbdata with the size of data. DEFAULT STORAGE ( INITIAL 50K NEXT 50K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0); ALTER DATABASE DATAFILE /dev/rlvispbdata AUTOEXTEND ON; REM **** Creating four rollback segments **************** CREATE ROLLBACK SEGMENT r01 TABLESPACE RBS1; CREATE ROLLBACK SEGMENT r02 TABLESPACE RBS2; CREATE ROLLBACK SEGMENT r03 TABLESPACE RBS1; CREATE ROLLBACK SEGMENT r04 TABLESPACE RBS2; ALTER ROLLBACK SEGMENT r01 ONLINE; ALTER ROLLBACK SEGMENT r02 ONLINE; ALTER ROLLBACK SEGMENT r03 ONLINE; ALTER ROLLBACK SEGMENT r04 ONLINE; ALTER ROLLBACK SEGMENT r0 OFFLINE; DROP ROLLBACK SEGMENT r0; REM **** SYS and SYSTEM users **************** alter user sys temporary tablespace TEMP_DATA; alter user system temporary tablespace TEMP_DATA; disconnect exit EOF22.Enter Y to run the script and create the logical volumes. Details of the run are available by entering: tail -f /usr/TivTSM/install/db/oracle/./sqlispb.log.23.Use the following steps for the schema creation script: Press Enter to accept the default single value between parenthesis, or type a new value and press Enter. - Enter the password for the db user system manager. Note You may accept the defaults for the remaining steps if you used ispb as the database instance. - Enter stage_master as schema owner. - Enter stage_user as schema user. - Enter en as default local Chapter 4. Building the environment 37
  • 55. - e value. - Enter Y to create the schema. - The install will load tables and check results. - If you will use Device Manager, enter Y to include the Device Schema. - Enter Y to load the zip code table. - Enter Y to configure LDAP Integration. - Enter Y to configure eBill. - Enter Y to configure Web Hosting. 24.At this point the installation is complete. You may review the logs in the following directories: - /usr/TivTSM/install/db/oracle/ - /db/app/oracle/products/8.1.5/schemas/ispb - /tmp/OrasoftInst.log.4.3 Installing Netscape Enterprise Server 3.63 We installed the Netscape Enterprise Server 3.63 as our Web Server. In this section we explain the tasks we performed to get Netscape Server up and running.4.3.1 Creating groups and users 1. mkgroup -A netscape 2. mkuser enterpri 3. chuser pgrp=netscape enterpri4.3.2 Installing Netscape Enterprise Server 3.6 The Netscape installation requires approximately 250 MB of file system space for the 3.6 server version. Execute the ns-setup file (./ns-setup). Use the following answers to the Netscape install prompts: Do you agree to the license terms? [no]: y Server root [/usr/netscape/suitespot]: /usr/netscape/suitespot Machines name [hostname.]: hostname.domainname.com SuiteSpot User [nobody]: enterpri38 Introducing Tivoli Personalized Services Manager 1.1
  • 56. SuiteSpot Group [nobody]: netscape Are you using an LDAP-based directory server? [n] n After all prompts, press Enter to copy the software. When prompted provide the following information: Administration port [6557]: 11043 Run Administration Server as [root]:root Enter path to 2.x version of Netscape Administration Server root: [/usr/ns-home] leave blank if 2.x of Netscape was not loaded prior Server Administrator ID [admin]: admin password: admin password (again): admin Web browser [netscape]: NONE Perform the following steps to allow remote access to Netscape server: Stop the admin server by typing the command /usr/netscape/suitespot/stop-admin Type cd /usr/netscape/suitespot/admin-serv/config In a text editor, open ns-admin.conf. Change Hosts X.X.X.X to Hosts * Change Addresses X.X.X.X to Addresses * Start the admin server by typing the following command: /usr/netscape/suitespot/start-admin4.4 Creating Netscape server instances Use the following steps to create Netscape server instances. 1. To get to the Netscape server administration console, start a browser and go to http://hostname:11043, where ‘hostname’ is the name of the server and ‘11043’ is the port where the admin was loaded as shown in Figure 9 on page 40. Chapter 4. Building the environment 39
  • 57. Figure 9. Netscape Server Administration console 2. Press Create New Netscape Enterprise Server 3.63. 3. Fill in form using the table below for each server instance. The following sections show you examples of filling out the form for each server instance. - When you create the Enrollment Server, follow the additional steps described in the example for Enrollment Server - Server Name field is the name of the server where you have installed Netscape (host.domain). - Take the default value for Bind address, Server User, MTA Host, NNTP Host. - Verify that the “Never attempt to resolve IP addresses into hostnames” radio button is selected. Confirm that the server port, server identifier,40 Introducing Tivoli Personalized Services Manager 1.1
  • 58. and primary document directory values are set in the form as in Table 2.Table 2. Netscape Enterprise Servers Server Server Server Primary document directory component port identifier Authentication 8080 authserv /usr/TivTSM/authentication/conte Insecure nt Customer Care 14080 custcare /usr/TivTSM/custcare/content Subscriber 15080 selfcare /usr/TivTSM/selfcare/content Self-Care System 9080 sysmgmt /usr/TivTSM/sysmgmt/content Management Tools Personalization 16080 personal /usr/TivTSM/personal/content Premium 10080 premium /usr/TivTSM/premium/content 1 Enrollment 18080 enroll /usr/TivTSM/enroll/content SDP Servlet 8090 sdp /usr/TivTSM/sdp/content Web Content 12080 wch /usr/TivTSM/wch/content Hosting Chapter 4. Building the environment 41
  • 59. 4.4.1 Creating the Authentication Server Fill in the form as shown in Figure 10 to create the Authentication Server instance. Figure 10. Form for Authentication Server42 Introducing Tivoli Personalized Services Manager 1.1
  • 60. 4.4.2 Creating the Customer Care Server Fill in the form as shown in Figure 11 to create the Customer Care Server instance. Figure 11. Form for Customer Care Serer Chapter 4. Building the environment 43
  • 61. 4.4.3 Creating the Selfcare Server Fill in the form as shown in Figure 12 to create the Selfcare Server instance. Figure 12. Form for Selfcare Server44 Introducing Tivoli Personalized Services Manager 1.1
  • 62. 4.4.4 Creating the System Management Tools Server Fill in the form as shown in Figure 13 to create the System Management Tools Server instance. Figure 13. Form for System Management Tools Server Chapter 4. Building the environment 45
  • 63. 4.4.5 Creating the Personalization Server Fill in the form as shown in Figure 14 to create the Personalization Server instance. Figure 14. Form for Personalization Server46 Introducing Tivoli Personalized Services Manager 1.1
  • 64. 4.4.6 Creating the Premium Server Fill in the form as shown in Figure 15 to create the Premium Server instance. Figure 15. Form for Premium Server Chapter 4. Building the environment 47
  • 65. 4.4.7 Creating the Enrollment Server Fill in the form as shown in Figure 16 to create the Enrollment Server instance. Figure 16. Form for Enrollment Server 1. After you create the Enrollment Server, click on the enroll server button to configure the server. 2. Click Programs, then click CGI Directory (see Figure 17 on page 49).48 Introducing Tivoli Personalized Services Manager 1.1
  • 66. Figure 17. Form of CGI for Enrollment Server3. Type cgi-bin on the URL prefix line.4. Type /usr/TivTSM/enroll/cgi-bin on the CGI directory line.5. When you see a warning that the directory does not exist, click OK.6. Save.7. Apply.8. Click OK.9. Click admin. Chapter 4. Building the environment 49
  • 67. 4.4.8 Creating the SDP Servlet Server Fill in the form as shown in Figure 18 to create the SDP Servlet Server instance. Figure 18. Form for SDP Servlet Server50 Introducing Tivoli Personalized Services Manager 1.1
  • 68. 4.4.9 Creating the Web Hosting Content Server Fill in the form as shown in Figure 19 to create the Web Hosting Content Server instance. Figure 19. Form for the Web Hosting Content Server Chapter 4. Building the environment 51
  • 69. 4.5 Installation of IBM WebSphere Application Server To ensure a smooth installation process, do the following before you install the WebSphere in your AIX machine: • Choose an edition of WebSphere Application Server that matches your requirements (in our case WebSphere Application Server 3.5 Standard Edition). • Make sure that all hardware and software requirements are set up and running on your machine. This includes working versions of JDK/JRE, Web browser, Web Server, and database systems. • Ensure that you have configured your TCP/IP environment correctly. Verify your machine’s Host Name, Domain Name, and IP, routing, and name server addresses. • Make sure that your Internet/intranet access from/to your machine is working properly. • You should have an AIX user ID for running the Web Server. WebSphere will use the same user ID for executing its process. To install WebSphere Application Server, you can either log in as a root ID, or as a user ID that can run the Web Server. The installation process consists of a sequence of dialog boxes. After each dialog box, you can proceed to the next dialog box by clicking the Next> button. If you miss some information in a screen, you can always go back by clicking the Back>button. • After the Welcome dialog box (Figure 20 on page 53), go to the next dialog box.52 Introducing Tivoli Personalized Services Manager 1.1
  • 70. Figure 20. WebSphere Application Server Installation on AIX - welcome page • Specify the type of installation (Figure 21). Select Custom Installation from the list.Figure 21. WebSphere Application Server Installation on AIX - type of installation Chapter 4. Building the environment 53
  • 71. • The next dialog box (Figure 22) asks you to select the application server components that you want to install. Figure 22. WebSphere Installation on AIX - selecting components to install • The installation will ask you to select the Web Server on which WebSphere will run (Figure 23 on page 55). Select the appropriate Web server plug-ins on the right. If your Web server has a later version than those listed in the dialog box, choose the latest plug-in version available.54 Introducing Tivoli Personalized Services Manager 1.1
  • 72. Figure 23. WebSphere Installation on AIX - selecting plug-ins to install • Specify the location of your Web server configuration file (Figure 24). For Netscape Server, the file is obj.conf; for Apache or IBM HTTP Server, the file is httpd.conf.Figure 24. WebSphere Installation on AIX - web server configuration file Chapter 4. Building the environment 55
  • 73. • The next dialog box (Figure 25) asks you to indicate the type of the database you would like to use. For our purposes, choose InstantDB. Figure 25. WebSphere Installation on AIX - indicating database repository • Now, enter the security information (Figure 26). The user is the user that WebSphere is going to run under. Use the dummy key ring file. Figure 26. WebSphere Installation on AIX - security information56 Introducing Tivoli Personalized Services Manager 1.1
  • 74. • Specify a directory to install the WebSphere (Figure 27). This directory will be the WebSphere Application Server root directory. Figure 27. WebSphere Installation on AIX - specifying WebSphere home directory • The installation program will take some time to install files into your system. • After it finishes, the last dialog box will allow you to read the readme.txt file or click Finish to complete the installation. At that point, the Websphere Application server is ready.4.6 Installing Tivoli Internet Services Manager software This section will show you how to install TISM/TPSM software on an AIX machine. Before you run the following command, be sure that you can start an X-application like xclock. If not, set your DISPLAY variable properly before continuing. To perform the installation, you need to be a user that has root privileges. First, change directory to the where you have the TISM/TPSM installation CD mounted. In the TISM Planning and Installation online manual, it says to run Chapter 4. Building the environment 57
  • 75. ./install.sh in an AIX terminal window, but it really should be the following command: ./install.ksh This will bring up the install welcome panel as shown in Figure 28. Figure 28. TISM/TPSM installationwelcome Choose Next to continue. You will then be asked which database you will be using. Select the proper database and click on Next as shown in Figure 29 on page 59.58 Introducing Tivoli Personalized Services Manager 1.1
  • 76. Figure 29. Choosing the databaseIt is interesting that we are prompted for the database because we areinstalling from the TPSM/Oracle CD. It appears that in the future, this willallow both DB2 and Oracle support to be shipped on one CD instead of two.Selecting Next will bring up the next dialog (Figure 30 on page 60) where youwill be prompted for the local machine information. DNS domain resolution isa requirement. Chapter 4. Building the environment 59
  • 77. Figure 30. Local Information for the install Fill in the information and select Next to bring up the next dialog as shown in Figure 31 on page 61.60 Introducing Tivoli Personalized Services Manager 1.1
  • 78. Figure 31. Oracle configuration informationWhile the ITSO did an initial install on itso14.dev.tivoli.com, this screencapture was done on a separate machine, knight1. This is the reason for thediscrepancy in hostnames on our dialog boxes.No information was changed on this dialog. Selecting Next opened the nextdialog as shown in Figure 32 on page 62. If you have a Radius server alreadyinstalled, you can unselect the internal TISM Radius server. Chapter 4. Building the environment 61
  • 79. Figure 32. TISM install components You will notice that Systems Management and Authentication is greyed out. This is because the installation of these components are required. Select Next to bring up a prerequisite checklist dialog as shown in Figure 33 on page 63.62 Introducing Tivoli Personalized Services Manager 1.1
  • 80. Figure 33. TISM prerequisite checklistSelecting Next will bring up the dialog to ask you where the prerequisiteshave been installed as shown in Figure 34 on page 64. Update the dialog withany changes from the application defaults. Chapter 4. Building the environment 63
  • 81. Figure 34. Prerequisites’ installation directories Select Next to open the verification dialog as shown in Figure 35 on page 65.64 Introducing Tivoli Personalized Services Manager 1.1
  • 82. Figure 35. Installation verification dialogYou can scroll up/down the information that you have chosen from theprevious panels. When you have verified that it is correct select Next to startthe install.While it is installing this version of the install code does not display a statuswindow. While the install document tells us to look at/installdir/TivTSM/install/tisminstall.log, that file is not written until theinstallation is complete or fails. You cannot tail the file to check the status ofthe installation. After the installation has completed a dialog will open asshown in Figure 36 on page 66. Chapter 4. Building the environment 65
  • 83. Figure 36. Installation is finished Select Finish to close the installation dialogs.4.6.1 Post-Installation tasks for TISM software. In this section we make the final configurations to ready TISM for use. • Start all the Netscape Servers • Create the WebSphere Application Servers • Configure all of the components of the TISM. 4.6.1.1 IBM WebSphere Application Server configuration 1. For TISM Application, execute the following command: cp /usr/TivTSM/install/etc/rc.txservers /etc 2. For starting and stopping the Netscape services, we created a rc.webservers file in the /etc filesystem. Our file looks like this:66 Introducing Tivoli Personalized Services Manager 1.1
  • 84. cat /etc/rc.webservers /usr/netscape/suitespot/https-enroll/$1 /usr/netscape/suitespot/https-custcare/$1 /usr/netscape/suitespot/https-personal/$1 /usr/netscape/suitespot/https-selfcare/$1 /usr/netscape/suitespot/https-premium/$1 /usr/netscape/suitespot/https-authserv/$13. In the Netscape server administration console, http://hostname:port, select each Netscape server instance and select Apply to load manual file changes.4. Stop all the Netscape servers: /etc/rc.webservers stop5. Start all the Netscape servers: /etc/rc.webservers start4.6.1.2 IBM WebSphere Application Server configurationThis section shows you the steps to configure the Application Servers.1. Change directory to /usr/WebSphere/AppServer/bin.2. In a text editor, open was.prp. and change traceLevel=0 to traceLevel=4 to avoid a huge log file.3. Enter ./startupServer.sh to start the WebSphere.4. Enter tail -f ../logs/tracefile. Wait for an Open for e-business message.To create all the application servers for TISM, follow the next steps:5. Enter ./setupCmdLine.sh6. Enter ./XMLConfig.sh -adminNodeName nodename -import SMAPPV11ora.xml.7. Ignore the following warning messages during the import process Failed to find Servlet Creating Servlet : xxxxxxxxxxxx, since it was not found for update.8. Backup the InstantDB database: - Change directory to usr/WebSphere/AppServer/bin and issue tar -cvf ./idbstore.tar ./idbStore. - Enter ./XMLConfig.sh -adminNodeName node name -export nodename.xmlNow we can start the Admin Console (Figure 37 on page 68) to verify thecreation of the application servers. Go to the /usr/WebSphere/AppServer andissue ./adminclient.sh&. Ignore the following warning messages: Chapter 4. Building the environment 67
  • 85. [00.11.15 15:59:11:457 CST] bbe7e34f IExtendedSecu A 2000.11.15 15:59:11.457 SecurityConfiguration reportVerificationAnalysis IBM WebSphere Security The security service will not be disabled during bootstrap activation. Figure 37. WebSphere administration console Now we start up all the application servers. Just click on the Application Server to be started and then click on Start. You should see a completed message as shown in Figure 38 on page 69.68 Introducing Tivoli Personalized Services Manager 1.1
  • 86. Figure 38. Starting up an Application Server4.7 Usage and verification test of installed TISM software In this section we access each component of the TISM to verify the operation.4.7.1 Director test To start the Director Tool, you should open a browser and go to http://<hostname>:9080/console/console.html to get the TSM Administration page (see Figure 39 on page 73). Download and install the console application code in your local machine. Then edit the Transaction.properties file and change the TransactionURL variable to match the hostname and port where the server is running: http://itso14.dev.tivoli.com:2001/Transaction. Start console with the command console.bat, which will open a dialog box where you have to give Administrator login and password. See Figure 40 on page 74. After filling in the username and password, the Administration Console appears as shown in Figure 41 on page 74. Chapter 4. Building the environment 69
  • 87. 4.7.2 Authentication test Open a browser and go to: http://<hostname>:8080/authentication/server. You should see a TSM userid/password prompt screen. Enter a valid user id and password (TEST1/test1).4.7.3 Premium test Open a browser and go to http://<hostname>:10080/premium/sample.jsp. You should see a TSM userid/password prompt screen. Enter a valid user id and password (TEST1/test1).4.7.4 Customer Care test Open a browser and go to http://<hostname>:14080/cc.html. You will see a TISM customer care logon screen. There is a default CSR ID of CSR001/csr001 that you can use to verify the server. For further details, refer to Chapter 7, “Using Customer Care and Director Tool” on page 149.4.7.5 Enrollment test Open a browser, go to http://<hostname>:18080/enroll.html, and select Enroll. For further information refer to Chapter 5, “Enrollment and service provisioning” on page 73.4.7.6 SelfCare test Open a browser and go to http://<hostname>:15080. You can log on to personal with TEST1/test1 from the sample data. For further information please refer to Chapter 8, “Subscriber Selfcare” on page 167.4.7.7 Personal test Open a browser and go to http://<hostname>:16080/perso/samples/welcome.jsp and log on to personal with TEST1/test1 from the sample data.4.8 Startup order for starting up a system In this section we are going to review the sequence that we used to start all the services in order to get the TISM/TPSM running. The following assumes we are using a user with root privileges.70 Introducing Tivoli Personalized Services Manager 1.1
  • 88. 4.8.1 Oracle Switch to the oracle software owner, in our case oracle8: su - oracle8 Start up the Oracle listener: lsnrctl start Start up the Oracle Database: dbstart4.8.2 Start Provisioning server Change to the /usr/TivTSM/provisioning/bin directory and issue: nohup ./StartProvServer.ksh > /var/adm/logs/ProvServ.log4.8.3 Transaction Servers To verify if the Transactions Servers are running using the next command: [# ps -ef|grep Trans root 9024 18256 0 Nov 10 - 5:17 /usr/java_dev2/jre/sh/../bin/java com.tivoli.tsm.tx.TransactionImp root 21396 20432 0 Nov 10 - 8:33 /usr/java_dev2/jre/sh/../bin/java com.tivoli.tsm.tx.TransactionImp root 36504 13136 0 15:39:18 pts/4 0:00 grep Trans # To start up the Transaction Server, go to the /etc directory and enter: ./rc.txservers4.8.4 Start Netscape Servers To start up the Netscape Servers, go to /etc directory and enter: ./rc.webservers start4.8.5 Start WebSphere To start the WebSphere, please refer to Section 4.6.1.2, “IBM WebSphere Application Server configuration” on page 67. Chapter 4. Building the environment 71
  • 89. 72 Introducing Tivoli Personalized Services Manager 1.1
  • 90. Chapter 5. Enrollment and service provisioning This chapter is divided into two parts; registration configuration and managing the enrollment process. To use the enrollment process in a realm, you must establish which flow the user will follow.5.1 Registration configuration Enrollment can be performed through Dial-Up Networking or the Internet. In either case, the enrollment server is used. Several people can be logged onto the enrollment server using the same Registration Name and password. The Registration Name can be used for an unlimited number of enrollments, or a limit may be imposed on the number of subscribers who can be enrolled using a Registration Name. Network Access Server (NAS)-level filtering restricts a potential subscriber’s access to the enrollment application only while the Registration Name and password are being used. Before new members can be enrolled, the TISM enrollment options in the Enrollment profile database must be configured. To do this, use the Director Tool. This tool is run in a Windows environment. To install it: 1. Open a browser and go to http://hostname:9080/console (Figure 39) Figure 39. Administration Console© Copyright IBM Corp. 2001 73
  • 91. 2. Download console.zip to your hard disk. 3. Unzip the file to a known location. 4. Edit the unzipped Transaction.properties, TransactionURL variable. It should match the hostname and port of the machine where the console RMI server is running. For instance: //itso14.dev.tivoli.com:2001/Transaction 5. Open a DOS Windows and cd (change directory) to the directory where you unzipped. Type console.bat to start the TISM Administration Console. 6. It will open a dialog box where you must give the Administrator login and password (Figure 40). Figure 40. The TISM Administration Console dialog box 7. The TISM Administration Console will open. 8. Double-click the Registration configuration folder (Figure 41). Figure 41. Director Tool Console A wide variety of configuration options are available to the ISP. The following section provides an overview of the enrollment configuration objects: • Realms74 Introducing Tivoli Personalized Services Manager 1.1
  • 92. • Registration names • Access codes • Deals • Deal text • Enrollment metricsThe enrollment configuration objects have a structure. This structure isrequired to create the enrollment object as shown in Figure 42.Figure 42. Structure of the enrollment objectsA realm needs a registration name to be able to enroll new users. Aregistration name requires an access code to be able to work.For marketing purposes, we have deals and each deal has a deal text, whichexplains the deal, for example, a deal, FREE, could have as deal text, youdon’t have to pay anything.But if you have to pay something, you have a list of payment methods. Chapter 5. Enrollment and service provisioning 75
  • 93. For a deal, you can set a number of properties. The access code is related with the deals. Depending on the access code, the ISP could offer different deals, for instance, the old customers could be offered a free access. Due to that the deals are not going to be always free, you have to related what methods of payment you permit.5.1.1 Creation of a Realm A Realm can be considered an ISP. For instance, IBM is a realm and its domain is ibm.com. We must register a Realm in the TPSM to be able to begin the enrollment process. 1. Right-click the Realm folder and select Add (Figure 43). Figure 43. Press the right mouse button and select Add 2. Enter the following fields as shown in Figure 44 on page 77: - Realm Name: A name for the realm. - Realm Description: Optional text describing the realm - Default Domain: The E-mail domain for the realm.76 Introducing Tivoli Personalized Services Manager 1.1
  • 94. Figure 44. Dialog box for the creation of Realm5.1.2 Creation of Registration Names A Registration Name is a special TISM User Name used to enroll new members. Subscribers who log in via a Registration Name have access only to the enrollment server. They cannot access other resources of the ISP such as the open Internet. Registration Names always have at least one access code named DEFAULT. The process of defining a Registration Name builds the DEFAULT Access Code automatically. There are 2 kinds of registration names; Generic and Multiple Access. A Generic Registration Name has only the DEFAULT Access Code. A Multiple Access Registration Name has the DEFAULT Access Code, and may have additional Access Codes. Registration Name does not meaningfully exist without an Access Code. There must always be a Registration Name-Access Code combination in effect for registration to succeed. Chapter 5. Enrollment and service provisioning 77
  • 95. The following values define a Registration Name as shown in Table 3: Table 3. Values of Registration Name Value Description Registration The username of this Registration Name. Name Description Optional 40 character text description Password The password for this Registration Name. Registration The set of NAS filters to be invoked during the time this Authorization Registration Name is logged on (for example, filters that force Attributes subscribers to stay in the registration subnet and not be able to surf the web). Member NAS attributes to be set for subscribers who register using this Authorization Registration Name (for example, the attributes for the new Attributes subscriber for all subsequent sessions after registration). Registration Generic, or Multiple Access Code Type Access Code Only meaningful for Multiple Access Registration Names. Required Y= Access Code is required (if not provided, registration is terminated). N= Access Code is optional (if not provided, registration proceeds, using the DEFAULT Access Code). Consumer or Determines if the subscriber, when created, will be considered Business business or consumer. Sales Channel Drop-down selection list that comes from the sales channel folder of available sales channels. Account Type Account type used on the subscribers account when it is created. An example of creation of Registration Name is shown in Figure 45 on page 79. 1. Select the new realm, ITSOCHANNEL. 2. Press the right mouse button and select Add 3. An example of dialog is:78 Introducing Tivoli Personalized Services Manager 1.1
  • 96. Figure 45. Registration Names dialog box5.1.3 Creation of Access Codes Access Codes are a convenient way to extend the Registration Name. Registration Names always have at least one Access Code, called DEFAULT. When a Registration Name is defined, the DEFAULT Access Code is created automatically. Access Codes are specific to a Registration Name. A particular Realm, Registration Name, and Access Code combination is unique in the TPSM database. Access Codes are identifiers that provide an entry point into the registration process. An Access Code is essentially a software override to a Registration Chapter 5. Enrollment and service provisioning 79
  • 97. Name. The Access Code allows the Service Provider to track the sales channel used to acquire subscribers. An important aspect of Access code is that each one has its own set of billing deals, thus enabling the generation of many different deals and registration scenarios without having to build a new software kit for each new promotion. As noted before, a registration name can be one of two types; generic or multiple access. The first one uses the DEFAULT access code, so it doesn’t deal with access codes. The second one requires an access code from the registering subscriber, although it could have also the DEFAULT access code. If a Multiple-Access Registration Name is driving a particular registration, then the run-time registration code asks the access code, which is usually provided in the software kit. If the access code given by the user is correct, the registration flow continues as it was established in the attributes. If the access code entered is incorrect, the user would be asked again. If the access code is incorrect again, one of two things can happen depending on whether the access code is required or not. If it is not required, the registration will go on. If the access code is required, the registration flow will be halted. This is shown in Figure 46 on page 81.80 Introducing Tivoli Personalized Services Manager 1.1
  • 98. Figure 46. Flow of a multi-access registration nameAn example of creation of access code:1. Select the new registration name, USER_FOR_ENROLL2. Press the right mouse button and select Add -> Access Code3. The dialog box shown in Figure 47 on page 82 appears: Chapter 5. Enrollment and service provisioning 81
  • 99. Figure 47. Access Code dialog box5.1.4 Creation of a deal The deal is a set of services and associated billing options that are offered to potential subscribers at enrollment time (Figure 48). A given deal may be re-used by any number of Registration Name - Access Code combinations. A registration name can be related with several deals, in which case the subscriber can choose between them during the enrollment.Figure 48. Deal examples offered to the user in the enrollment process A deal may have any number of properties. These can be used to associate various parameters with a deal, which at registration time become associated with the subscriber´s account. If no deals are found for a given Registration Name-Access code combination, the registration fails.82 Introducing Tivoli Personalized Services Manager 1.1
  • 100. The required fields to create a deal are shown in Table 4:Table 4. Required fields for the creation of a new deal Field Description Deal The deal name is also the Billing System Product Code. The name links the deal with a billing plan in the billing system. Description Text description of the deal. This description is not seen by the user. Plan Type 1-5 characters. Required. Future use. Text Block ID Name of the DEAL TEXT that you want to relate with the deal Method of Payment List Name of the Method of Payment List that we relate with this deal Properties For each property presented, select the desired value from the pull-down that applies. (As a convenience, the default value is always the first one)An example of the creation of a deal is:1. Select the deal folder and click the right mouse button.2. Select Add.3. The dialog box shown in Figure 49 on page 84 will appear. Chapter 5. Enrollment and service provisioning 83
  • 101. Figure 49. Dialog of the creation of a new deal. 4. A new dialog box appears to create new deal text or set the default text.5.1.5 Creation of deal text Deal text is a description of a deal. It can be related to several deals. This information is displayed in several parts of TPSM, enrollment, selfcare, and customer care processes. The necessary information to create a deal text is shown in Table 5: Table 5. Fields to create deal text Value Description Reporting description ID for the deal text Short text Short deal description. It´s usually used in the radio buttons. Long text Long description of the deal. This is optional. Sort sequence Numeric value used in descending order to set how they are listed on the screen.84 Introducing Tivoli Personalized Services Manager 1.1
  • 102. At this point, you have two choices: a. Select the default one by pressing Cancel. b. Create new deal text: 1. The dialog box in Figure 50 will appear, and you have to write the fields as you decide to set. 2. Press Add when you finishFigure 50. Deal text dialog box 3. A dialog box to set the properties will appear.5.1.5.1 Setting the properties for a dealTo set the properties in the deal, you have to set the values in the dialog boxshown in Figure 51 on page 86. Chapter 5. Enrollment and service provisioning 85
  • 103. Figure 51. Dialog for properties of a deal When completed, select Add. In the TISM Administrator Console you will now see the deal that you added (Figure 52 on page 87).86 Introducing Tivoli Personalized Services Manager 1.1
  • 104. Figure 52. Table with the deals and deal text Now you have to relate the deals with the Realms, which is described in Section 5.1.7, “Associating the deals with the Realm” on page 905.1.6 Creating a property A property is a definition of a system parameter that can be assigned to various components. Each property is identified by its domain name. Each property has a sublist of possible setting values for it. Each property is also assigned a subsystem, which is the name of the application that presets a given property. The values in Table 6 are required to create a property: Table 6. Fields to create a property Value Description Name Name of the property Domain Domain of the property Description Description of the property Subsystem Component that sets property values; for instance, PIDEAL, so the property is going to be defined as a deal level in the registration configuration folder. For more information, check the Data Dictionary documentation Chapter 5. Enrollment and service provisioning 87
  • 105. Value Description Unit of Measure Unit of measure for property values; for instance, MegaBytes Default Value Default setting for property; for instance, 1, 0, 2, None Setting type Determines the type of values the properties have. This value determines the sort order of the Setting Folder for the property. Currently, there is no type checking when new setting values are added to a property. They may be one of the following: - Number -Character - Date The Director Tool has a few defaults. You can also add your own. 5.1.6.1 Creating a new property To add a new property, follow these steps as shown in Figure 53: 1. Select the Registration Values Folder in the TISM Administrator Console. 2. Select the Properties Folder. 3. Select the Action Menu, and select Add -> Property to bring up a dialog box as shown in Figure 54 on page 89. Figure 53. Menu to create a property88 Introducing Tivoli Personalized Services Manager 1.1
  • 106. Figure 54. Dialog to create the property4. Fill in the dialog with your property information and select Add. The new property is now visible in the Properties table.5. After this you can set values to this property. a. Select, in the table of properties, the property that you want to add possible values to. b. Select Action Menu c. Select Add -> Setting d. A dialog box as shown in Figure 55 on page 90 will appear where you write the new value. Chapter 5. Enrollment and service provisioning 89
  • 107. Figure 55. Creating a value for FAVBOOKS property5.1.7 Associating the deals with the Realm With this action, you set which deals are going to be offered in the enrollment, customer care, and selfcare to a customer for a specific Realm. Follow these steps: 1. Select the deal folder in the Administrator Console. 2. As you can see in Figure 56 on page 91, in the top of the window you have the available deals and in the bottom of the right hand side, you have the existing Realms. Check the deal that you want to relate, for instance, FREE.90 Introducing Tivoli Personalized Services Manager 1.1
  • 108. Figure 56. Table of deals3. Select the deal in the top table that you want to associate with a Realm, then select the Realm(s) in the lower right window that will offer this deal, for example, IBM and ITSOCHANNEL. See Figure 57 on page 92 to see the deal and Realms associated. Chapter 5. Enrollment and service provisioning 91
  • 109. Figure 57. Example of how to relate a deal with several Realms5.1.8 Associating the Access Codes with the deals With this action, you will associate the deals that you have created with access codes within the context of a Registration Name. This gives you the freedom of Registration Name/deal/Access code associations instead of locking you into a single deal/Access code association for all Registration Names.The steps to do so are: 1. Select the registration name as shown in Figure 58 on page 93. 2. In the bottom of the right hand-side, there is a table that displays the available access codes and deals. Also, this table displays the relations between the access codes and deals. 3. Check the deals that you want to offer for this access code.92 Introducing Tivoli Personalized Services Manager 1.1
  • 110. Figure 58. Relation of access code and deals5.1.9 Creating a Sales Channel A Sales Channel is a free-form data item used for marketing purposes. It is an attribute related to access codes. When a subscriber enrolls, the Sales Channel associated with the access code is stored in the database and can be used for reporting. The following values are necessary to create a sales channel (Table 7): Table 7. Fields for a Sales Channel Value Description ID ID for Sales Channel Description Text description about the Sales Channel To create a sales channel: 1. Select the Sales Channel folder in the Registration Configuration folder of the Administrative Console. 2. Select Action Menu. 3. Select Add. 4. A new dialog box will appear as shown in Figure 59 on page 94. Chapter 5. Enrollment and service provisioning 93
  • 111. Figure 59. A new Sales Channel The new Sales Channel will now show up in the Administrator Console (Figure 60). Figure 60. Table of existing Sales Channel When you create a new Access Code, you would have the choice of selecting the new Sales Channel as shown in Figure 61 on page 95.94 Introducing Tivoli Personalized Services Manager 1.1
  • 112. Figure 61. Example of selection of created Sales Channel in the new Access Code5.1.10 Creating a Method of Payment A method of payment describe a valid payment method available in the overall system. The payment methods are contained in the list of payment methods. Table 8 explains each required field to create a payment method: Table 8. Description of the required fields for a method of payment Value Description Type There are three primitive Method of Payment types: - Paper - For paper invoice creation - Credit - Credit card - Telco - Add to phone bill Subtype It could be any letter Description Description of the new method Here is an example about how to create a payment method: 1. Select the Payment Method folder in the Registration values folder. 2. Either right click on the folder or choose the Action menu. Chapter 5. Enrollment and service provisioning 95
  • 113. 3. Select Add. A new dialog box will be displayed as shown in Figure 62. Figure 62. Payment Method dialog5.1.11 Creating a List of Method of Payment The Method of Payment (MOP) Lists are named collections of Payment Methods. A MOP List is an attribute of a deal. How to create a List of Method of Payment: 1. Select the Method of Payment Lists folder. 2. Select the Action menu. 3. Select Add. A new dialog box will be displayed asking you the name of the list of payment methods as shown in Figure 63 on page 97.96 Introducing Tivoli Personalized Services Manager 1.1
  • 114. Figure 63. Method of Payment list dialog4. Now you have to add the Payment Methods that you want contained in the MOP list. Select the MOP List in the table that appears in the middle of Figure 64.Figure 64. Relationship between method of payment list and table5. Select the Method of Payment we want to include in the MOP list in the right hand-side of the table as shown in Figure 65 on page 98. Chapter 5. Enrollment and service provisioning 97
  • 115. Figure 65. Example of how to relate the MOP list to MOPs5.1.12 Association of a MOP list and a deal You have two choices depending on when you decide to set the association between the Method of Payment (MOP) List and the deal. As we saw, you can select it in the deal dialog box when you create it (see Section 5.1.4, “Creation of a deal” on page 82), or you can set after creation as follows: 1. Select the deals folder as shown in Figure 66 on page 99. 2. A table appears in the top of right hand-side of the window, Click the method of payment list of the deal that you want to change. A combo-box with the different MOP list will be displayed.98 Introducing Tivoli Personalized Services Manager 1.1
  • 116. Figure 66. Example of combo-box of MOP list for a deal 3. Select the MOP list that you want to set for the deal.5.1.13 Managing the enrollment process With the settings we have specified, we are going to personalize a enrollment process for ITSOCHANNEL, explaining the object components and the role that they are going to play in this scenario as we go. We have a Realm, ITSOCHANNEL. This realm has created a registration name for the enrollment process, USER_FOR_ENROLL. This registration name has a Multi Access type, so we can use access codes other than DEFAULT. We created two access codes, PUBLIC and CHEAP. Depending on the access code, the user will be offered different deals. PUBLIC access code offers the FREE deal. The CHEAP access code offers two deals; FREE and CHEAP. Both use MOP test as the method of payment list. MOP test contains all the available credit cards. Keeping this in mind, we are going to see what we need to change in the code to make it work how we want. The generic configuration for enrollment process is explained in Chapter 4, “Building the environment” on page 31. Chapter 5. Enrollment and service provisioning 99
  • 117. The enroll process begins in the URL: http://hostname:18080/enroll.html This will bring up the enrollment home page as shown in Figure 67. Figure 67. Enroll home page This page sets the Realm that the user is going to be enrolled in, and the Registration Name that we want to use for the enrollment process, in this case ITSOCHANNEL as Realm and USER_FOR_ENROLL as Registration Name. The following screen shows the code associated with this page:100 Introducing Tivoli Personalized Services Manager 1.1
  • 118. <!DOCTYPE HTML PUBLIC "-//W3C//DTC HTML 4.0//EN"> <META HTTP-EQUIV="Content-type" CONTENT="text/html;charset=iso-8859-1"> <HTML> <HEAD> <TITLE>Welcome to ISP</TITLE> </HEAD> <BODY BGCOLOR="Teal" TEXT="white"> <CENTER> <TABLE WIDTH=370 CELLSPACING=0 BORDER=0> <TR><TD>&nbsp;</TD></TR> <TR><TD WIDTH=201> <CENTER><IMG SRC="../../art/reg000.gif" WIDTH=578 HEIGHT=52 BORDER=0 ALT="Subscriber System Registration"> </CENTER> </TD> </TR> </TABLE> <TABLE> <TR><TD>&nbsp;</TD></TR> <TR><TD>&nbsp;</TD></TR> </TABLE> <TABLE> <TR><TD> <FONT SIZE=6> <CENTER>Welcome !!</CENTER></FONT><BR></TD></TR> <TR><TD>&nbsp;</TD></TR> <TR><TD> <CENTER><FONT SIZE=5>Heres an opportunity to join the fastest growing ISP !!</FONT></CENTER><BR> <BR></TD></TR> <TR></TR> <TR><TD>&nbsp;</TD></TR> <TR><TD> <CENTER><FONT SIZE=15> <FORM METHOD="POST" ACTION="/enroll/EnrollServlet"> <INPUT TYPE="HIDDEN" NAME="RegName" VALUE="USER_FOR_ENROLLMENT"> <INPUT TYPE="HIDDEN" NAME="RealmName" VALUE="ITSOCHANNEL"> <INPUT TYPE="SUBMIT" NAME="" VALUE="ENROLL NOW"> </FORM> </FONT> </CENTER> </TD></TR> </TABLE> </CENTER> </BODY> </HTML>These changes create the new REALM. Once you press ENROLL NOW, youpass to the next window (Figure 68 on page 102), which prompts the user foran access code. We have two; PUBLIC and CHEAP. In this example we willenroll with both to show the differences due to the different configuration. Chapter 5. Enrollment and service provisioning 101
  • 119. Figure 68. Enroll with access code PUBLIC After this, the agreement window appears as shown in Figure 69. Figure 69. Agreement window102 Introducing Tivoli Personalized Services Manager 1.1
  • 120. The enrollment details window appears. This is divided into Personal details(Figure 70) and deals/Username (Figure 71 on page 104).Figure 70. Personal detail of enroll Chapter 5. Enrollment and service provisioning 103
  • 121. Figure 71. Deal and Userid details for enroll details At this point the customer can choose the password for accessing the new account as shown in Figure 72. Figure 72. Password for enroll details Next, TPSM gives details about the deal that the user chooses as shown in Figure 73 on page 105.104 Introducing Tivoli Personalized Services Manager 1.1
  • 122. Figure 73. Details of chosen dealAccess information and a choice for method of payment is shown (seeFigure 74).Figure 74. Payment Method details for enroll Chapter 5. Enrollment and service provisioning 105
  • 123. The enrolling person is given a chance to confirm all the information that had been entered (see Figure 75). Figure 75. Confirmation details Enrollment is complete, as shown in Figure 76. Figure 76. Congratulations screen106 Introducing Tivoli Personalized Services Manager 1.1
  • 124. Selecting Continue on Figure 76 on page 106 will bring up Figure 77, whichprovides additional information for configuring your machine to access theservice.Figure 77. Configuration enrollNow we are going to see what happens when we use the CHEAP accesscode in the screen shown as Figure 68 on page 102 to enroll a new user. Firstwe go to the enroll main page (Figure 67 on page 100) and proceed to enrolla new one following the steps that we mentioned earlier in this chapter; seeFigure 68 on page 102 through Figure 77. On the screen that asks us tochoose the deal, we select the second option as shown in Figure 78 onpage 108. Chapter 5. Enrollment and service provisioning 107
  • 125. Figure 78. Choosing the cheapest deal. As you can see, there are two deals. These deals are those we set for CHEAP access code. After we choose the deal, the enrollment procedure continues as described on the prior pages.5.1.14 Enrollment JSPs You can change the flow of the enrollment process by changing the JSPs. Table 9 on page 109 describes the enrollment JSPs. Figure 79 on page 109 shows the structure of directories for Enroll.108 Introducing Tivoli Personalized Services Manager 1.1
  • 126. Figure 79. Structure of directories of enrollThe content directory contains the JSPs. Their names and functions aredescribed in Table 9:Table 9. JSPs for enroll JSP file Description accessCode Ask the access code accountCode If the access code is not correct, it would ask the access code again areYou18 If the user don’t give the birth date, It would ask if you are 18 or over cancelByUser If you cancel the registration, it would send you to this JSP configure After registering, the user could download the configuration to your PC confirm Shows the user details about the registration congrats It gives the user the congratulations, when it finishes Chapter 5. Enrollment and service provisioning 109
  • 127. JSP file Description debug Not used dontGo If the user presses cancel enroll Controls the flow of the enrollment mopCombined Shows the Payment Details to be confirmed by the user paymentPlan Shows the Deal Details to be confirmed by the user userNameInvalid If the user chooses a ID that is used already personalCombined The form with all the personal details agreement Shows the terms of agreement For the servlet directory, we have the configuration files. In Table 10, we are going to explain what who they are and they do. Table 10. Property files for enroll File name Description EnrollJspMsg.properties Variables with messages for the user Transaction.properties JDBC configuration for Oracle Validator.properties Variable format to validate the data that the user introduces device_enroll.properties It has the error page where if something wrong happens go enroll.properties General configuration file110 Introducing Tivoli Personalized Services Manager 1.1
  • 128. Chapter 6. Subscriber authentication and access control Authentication is the process by which a user is recognized by the system and allowed to gain access to files or views. Typically a user is authenticated by prompting a form with their user name and password. This information is verified by the server. The authentication server is one of the most important parts of TPSM because almost all the other servers use it. Figure 80 shows how the authentication server works in TPSM. Figure 80. How the authentication server works 1. A user attempts to access a portal page and is intercepted by the authentication checker 1. 2. The user has never access the portal page before and therefore is not authenticated. The user is redirected to the Authentication Server.1 The Authentication Checker is a component of the Portal Toolkit (pTk) that recognizes the type of device.© Copyright IBM Corp. 2001 111
  • 129. 3. The authentication server prompts the user for a username and password in order to validate them. The other possibility is the authentication server verifies the IP address given to the user at sign-on with the Radius server. 4. User enters the appropriate information if prompted. The Authentication Server validates that he or she is an authorized user, and stores information in the TISM database. 5. The user is authenticated and redirected back to the portal page. Now the checker acknowledges the user’s authentication and permits them to enter the site. 6. A user session is opened that contains all the profiling information stored in the database. As you know, TPSM supports multiple types of devices. Depending on the type, it’s necessary to change the configuration. There are mainly two types of devices; the internet browsers, such as Microsoft Internet Explorer and Netscape, and the wireless browsers such as mobile telephones and PDA’s. Because these are handled very differently, this chapter is divided into two sections.6.1 Authentication stages The server attempts to authenticate users in two stages. These stages are: • Stage 1 tries to identify the user with information extracted from the HTTP request headers. It supports: - Authentication by source IP address - Authentication by source IP address forwarded in any HTTP header - Authentication by username forwarded in any HTTP header (or MS-ISDN) • Stage 2 prompts the user for login password if stage 1. - Basic HTTP authentication - Authentication form using http or https: That form is device dependant. it can be HTML, WML, etc.112 Introducing Tivoli Personalized Services Manager 1.1
  • 130. 6.2 Authentication modes The server authenticates in two modes: • Multi-domain mode: the authentication process is distributed. Each content server is protected by the Authentication Checker. There is one central Authentication Server, or several, that receives requests for authentication, processes them, and redirects them to the request server. • Single-domain mode: The authentication process is entirely done in the Checker. This mode is good for limited devices, such as WAP devices that don’t support redirection. It is also preferable when the authentication process is delegated to an external component such as a WES authentication proxy. This mode can be faster but has the limitations that appear in the next table: Table 11. Limitations of single-domain mode authentication Multi-Domain Mode Single-Domain Mode Single Sign On (cookie) Yes No Stage 1: by IP address in Yes Yes IP header Stage 1: by IP address in Yes Yes HTTP header Stage 1: by Username or Yes Yes MSISDN in HTTP header Stage 1: no Yes Yes Stage 2: Form Yes No Stage 2: Basic HTTP Yes Yes External Partners Yes No Premium Content Servers Session load balancing Yes Yes Assumption: Checker does not need Checker needs connectivity to DB connectivity to DB6.3 Internet world The differences between the internet world and the Wireless World is the amount of space available on the screen to display information and the protocols. Due to this, the authentication server uses a pTk component Chapter 6. Subscriber authentication and access control 113
  • 131. Authentication Checker that determines the type of device attempting to access the server. This information is read from the user- agent, at which point the Authentication Checker searches for the proper configuration file to display information for that device’s needs, and to decide what type of authentication it needs, such as HTML or WAP. The authentication server for the Internet World uses cookies. It creates a JavaBeans session when the user signs on to access authentication information. There are some pTK commands that can use the session to gather authentication information. You should be able to work for internet access, so if you write in the browser the next URL http://hostname:8080/authentication/server, it will bring up a dialog as shown in Figure 81. Figure 81. Authentication form The structure of this page can be changed. Section 6.3.1, “Structure of Authentication Server” on page 114 has a complete guide to configuring this page.6.3.1 Structure of Authentication Server The important parts of the Authentication Server when it’s used for internet access are shown in Figure 82 on page 115.114 Introducing Tivoli Personalized Services Manager 1.1
  • 132. Figure 82. Active components of the Authentication Server for internet accessThe authentication file system is divided in two:1. Content, where the structure of the page is located.2. Servlet, where the configuration files and Java code for the authentication server is.The content file system has different parts, as you see in Figure 82: a. css contains the default style sheet for the authentication server. b. en contains the English JSPs. c. images contains all the pictures files for the authentication server. d. ja contains all the Japanese JSPs.The JSP used for internet access is authentication.jsp, and as you can see inthe next screen it is a form with a Java Bean that creates a session with theinformation passes. Chapter 6. Subscriber authentication and access control 115
  • 133. The bolded lines are the important code for authentication.jsp. As you can see at the beginning, we have the Java code for importing the classes and creating the Java Bean for authentication. In the second part of the code, we have the form with the auth JavaBeans methods for verifying the authentication in the server and the redirection to the page where the authentication was requested from. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <%@ page import="java.util.*,java.text.*" %> <jsp:useBean id="auth" class="com.tivoli.tsm.authentication.AuthFormBean" scope="request" /> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <TITLE>&nbsp;TSM Authentication Page&nbsp;</TITLE> <LINK rel="stylesheet" href="/css/default.css" type="text/css"> </head> <BODY text="#000000" bgcolor="#FFFFFF" link="#000000" vlink="#000000" alink="#000000"> <TABLE border="0" cellspacing="0" cellpadding="0" > <TR> <TD><A href="http://www.tivoli.com"><IMG src="/images/tivoli_logo.gif" ALT="Tivoli" border="0" ></A></TD> <TD ><IMG width="1000" height="50" src="/images/spacer.gif" ></TD> </TR> <TR><TD>&nbsp;</TD><TD>&nbsp;</TD></TR> </TABLE> <TABLE border="0" cellspacing="0" cellpadding="0" width="100%"> <TR> <TD valign="top" align="left"> <TABLE border="0" cellspacing="0" cellpadding="0" width="250"> <TR><TD bgcolor="#6666CC"><FONT color="#FFFFFF"><b>Personalize</b></font></TD></TR> <TR><TD ><A href="/perso/home">My Portal</A></TD></TR> <TR><TD bgcolor="#6666CC"><FONT color="#FFFFFF"><b>Shopping</b></font></TD></TR> <TR><TD ><a href="http://www.gap.com/onlinestore/gap/default.htm">GAP</a></TD></TR> <TR><TD ><a href="http://www.laredoute.fr">La Redoute</a></TD></TR> <TR><TD bgcolor="#6666CC"><FONT color="#FFFFFF"><b>Books</b></font></TD></TR> <TR><TD ><a href="http://www.amazon.com">Amazon</a></TD></TR> <TR><TD bgcolor="#6666CC"><FONT color="#FFFFFF"><b>Auction</b></font></TD></TR> <TR><TD ><a href="http://www.ibazar.com">iBazar</a></TD></TR> <TR><TD ><a href="http://www.aucland.com">Aucland</a></TD></TR> <TR><TD >&nbsp;</TD></TR> <TR><TD >&nbsp;</TD></TR> <TR ><TD height="200">&nbsp;</TD></TR> </TABLE> </TD> <TD valign="top" align="left" > <TABLE border="0" cellspacing="5" cellpadding="0"> <tr><td colspan="2" align="center"><IMG src="/images/ibmbanner.gif"></td></tr> <tr><td>&nbsp;</td></tr>116 Introducing Tivoli Personalized Services Manager 1.1
  • 134. <tr bgcolor="#6666CC"><td align="center" colspan="2"><H2><font color="#FFFFFF">Please log-in...</font></H2></td></tr> <tr bgcolor="#FFFFFF">&nbsp;</td></tr> <TR><TD valign="top" align="center" > <FORM action="<%= auth.getAuthenticationServerURL() %>" method="get"> <TABLE border="1" cellspacing="1" cellpadding="0" bgcolor="#EEEEEE"> <TR> <TD align=left>&nbsp;Your User Name&nbsp;</TD> <TD align=left><INPUT type="text" name="SMSusername" value="<%= auth.getUserName() %>" size="20" maxlength="30"></TD> <TD align=left>&nbsp;</TD> </TR> <TR> <TD align=left>&nbsp;Your Password&nbsp;</TD> <TD align=left><INPUT type="password" name="SMSpassword" value="" size="20" maxlength="30"></TD> <TD align=right><INPUT type="submit" name="SMSsubmit" value="GO" enctype="application/html-form-urlencoded"></TD> </TR> </TABLE> <INPUT type="hidden" name="SMSkey" value="<%=auth.getKeyIndex()%>"><P> <INPUT type="hidden" name="SMSrealm" value="<%=auth.getRealm()%>"><P> <INPUT type="hidden" name="SMSurl" value="<%=auth.getComeBackURL()%>"><P> <INPUT type="hidden" name="SMStiers" value="<%=auth.getTierList()%>"><P> </FORM> </TD></TR> </TABLE> </TD></TR> </TABLE> </BODY> </HTML>The servlet file system contains the configuration files for the servlets andthe Java code (jar files). The important files for internet access are: • Authentication.properties (Section 6.3.1.1, “Authenticator.properties” on page 118) • DBPool.properties (Section 6.3.1.2, “DBPool.properties” on page 121) • DefaultAuthenticator.properties (Section 6.3.1.3, “DefaultAuthenticator.properties” on page 122) • IE.properties (Section 6.3.1.4, “IE.properties” on page 131) • Nav4.properties (Section 6.3.1.5, “Nav4.properties” on page 131)We are going to explain how each of them works. Chapter 6. Subscriber authentication and access control 117
  • 135. The authentication system of TPSM uses a server-side plug-in architecture. Two plug-ins are delivered with TPSM. One of them is for browsers: • DefaultAuthenticator.properties for Web Browsers It’s possible to adapt this plug-in to the environment where it is going to be used. The Authentication Checker and Authentication Server both use it. The other is Authenticator.properties. 6.3.1.1 Authenticator.properties The Authenticator.properties file defines the authentication plug-ins that are loaded when the application server starts. It specifies a property file for each authenticator. This is the code used for internet access: def.authenticator.class=com.tivoli.tsm.authentication.DefaultAuthenticator def.authenticator.properties=com.tivoli.tsm.authentication.DefaultAuthenti cator As you realize, the second part of the assignment is the directory and file. The file also specifies the different types of devices, their HTTP signatures, and their associated Authentication plug-ins. The following is an example and definition for browsers. # IE 4/5 Web browser ie.device.signature.user-agent=MSIE ie.device.properties=properties.com.tivoli.tsm.authentication.IE ie.device.authenticator=def # Netscape Navigator 4 Web browser nav.device.signature.user-agent=Mozilla nav.device.properties=properties.com.tivoli.tsm.authentication.Nav4 nav.device.authenticator=def Imagine that a new browser appears and you need to configure for TPSM. You have to get the user agent that it uses, in these cases, MSIE and Mozilla. You then must create a new configuration file. The default files should have been configured for Microsoft Explorer and Netscape as shown in Section 6.3.1.4, “IE.properties” on page 131 and Section 6.3.1.5, “Nav4.properties” on page 131. Because it’s going to use the DefaultAuthenticator.properties because it’s not a wireless device, define it as authenticator def. The file also specifies the path used to log the authentication tickets delivery: authentication.log.name=/var/adm/logs/authentication.log118 Introducing Tivoli Personalized Services Manager 1.1
  • 136. When the authentication is delegated to the WES authentication proxy, theAuthenticator.properties file must be replaced by theAuthentication.properties.wes. This change must be done at the end ofinstallation, before application servers start. The following screen is theAuthenticator.properties file. Chapter 6. Subscriber authentication and access control 119
  • 137. ###################################################################### # TSM Authentication properties # This file is used by the class com.tivoli.tsm.Server # This file lists # - the different authenticators and their property file # - the different devices and their signature # - the TSM database connection pool properties ###################################################################### # List of authenticators # ---------------------- # The syntax is : # <authenticator index>.authenticator.class=<classname> # <authenticator index>.authenticator.properties=<authenticator properties name> # ###################################################################### # Default Authenticator is good for every WEB devices with a reasonable HTTP support # It also supports Premium content access control ###################################################################### # def.authenticator.class=com.tivoli.tsm.authentication.DefaultAuthenticator def.authenticator.properties=properties.com.tivoli.tsm.authentication.DefaultAuthen ticator # ###################################################################### # WAP Authenticator can work with IBM and Nokia WAP gateway # It may work too with Ericsson gateway (requires some tuning) ###################################################################### wap.authenticator.class=com.tivoli.tsm.authentication.WapAuthenticator wap.authenticator.properties=properties.com.tivoli.tsm.authentication.WapAuthentica tor # ###################################################################### # List of devices # --------------- # The syntax is : # <device index>.device.signature.<HTTP header name>=<HTTP header string> # <device index>.device.properties=<device profile properties name> # <device index>.device.authenticator=<authenticator index> # ###################################################################### # # Devices definition for TISM w/o WES # ###################################################################### # WAP gateway 7110.device.signature.user-agent=Nokia7110/1.0 7110.device.properties=properties.com.tivoli.tsm.authentication.Nokia7110WapDevice 7110.device.authenticator=wap # WAP gateway R320.device.signature.user-agent=R320 R320.device.properties=properties.com.tivoli.tsm.authentication.R320WapDevice R320.device.authenticator=wap # WAP gateway120 Introducing Tivoli Personalized Services Manager 1.1
  • 138. R380.device.signature.user-agent=R380 R380.device.properties=properties.com.tivoli.tsm.authentication.R380WapDevice R380.device.authenticator=wap # WAP gateway nokiaemul.device.signature.user-agent=Nokia nokiaemul.device.properties=properties.com.tivoli.tsm.authentication.NokiaEmulWapDe vice nokiaemul.device.authenticator=wap # IE 4/5 Web browser ie.device.signature.user-agent=MSIE ie.device.properties=properties.com.tivoli.tsm.authentication.IE ie.device.authenticator=def # Netscape Navigator 4 Web browser nav.device.signature.user-agent=Mozilla nav.device.properties=properties.com.tivoli.tsm.authentication.Nav4 nav.device.authenticator=def # Default Web browser default.device.signature.user-agent= default.device.properties=properties.com.tivoli.tsm.authentication.DefaultDevice default.device.authenticator=def # ###################################################################### # Authentication log file path ###################################################################### # authentication.log.name=/var/adm/logs/authentication.log6.3.1.2 DBPool.propertiesDBPool.properties is used by the authentication server and pTk. It specifiesthe connection to the TISM database. These are the standard JDBCparameters:JDBC.dbDriver=oracle.jdbc.driver.OracleDriverThis line specifies the driver, in this example, Oracle.JDBC.dbUser=stage_masterJDBC.dbPassword=oracleThis is the user and password to connect to TISM database.The following parameters tune the JDBC Connection pool used by theauthentication and pTk.MaxDBConnections=5MinDBConnections=2The following specifies the TISM data model level.tsm.level=4.0 Chapter 6. Subscriber authentication and access control 121
  • 139. The following screen shows the DBPool.properties file. ###################################################################### # database connection management parameters ###################################################################### # For Oracle RDBM # JDBC driver name JDBC.dbDriver=oracle.jdbc.driver.OracleDriver # # RDBM server JDBC URL JDBC.dbConnect=jdbc:oracle:thin:@itso14.dev.tivoli.com:1521:ispb # ###################################################################### # For DB2 RDBM # JDBC.dbDriver=COM.ibm.db2.jdbc.net.DB2Driver # JDBC.dbConnect=jdbc:db2://kriek.lagaude.ibm.com:1521/ispb # ###################################################################### # RDBM user name JDBC.dbUser=stage_master # JDBC.dbUser=stage_user # # RDBM user password JDBC.dbPassword=oracle # # Connection pool parameters MaxDBConnections=5 MinDBConnections=2 # ###################################################################### # TISM DB level : # It is used to provide compatibility with DB from TSM 2.x to TISM 1.1 # 2.1 | 3.0BETA | 3.0 | 4.0 # 3.0 = TISM 1.0 # 4.0 = TISM 1.1 ###################################################################### tsm.level=4.0 6.3.1.3 DefaultAuthenticator.properties DefaultAuthenticator.properties is the configuration file of the DefaultAuthenticator plug-in: authentication.multidomain.enabled=yes|no When this parameter is yes, the multi-domain mode is enabled. This means that a central authentication server is used, and users who are not authenticated are redirected to it. This is the most powerful authentication mode that can be used when applications host in different domains and share a central authentication server. For more information, see Figure 6.2, “Authentication modes” on page 113.122 Introducing Tivoli Personalized Services Manager 1.1
  • 140. In multi-domain mode, the following parameter specifies the URL of theauthentication server (not including the URL path).authentication.server.url=http://hostname:8080In multi-domain mode, the following parameter specifies the URL path of theauthentication server.authentication.form.path=/authentication/en/authentication.jspThe next parameters define the type of authentication stage. For moreinformation, see Figure 6.1, “Authentication stages” on page 112.authentication.type1=ip|username|noauthentication.type1.header=ip|<HTTP header name>The first parameter defines the type of authentication for stage 1. If no valueis specified, it uses authentication stage 2 only. If the value IP is specified, ittries to identity a dial-up user by their IP Address in the Radius ActiveSession Table. If the value username is used, it searches for that username inthe specified HTTP Header. The syntax of the username cannot be“username” or “username@realm.” The second parameter specifies theheader name where the IP address of the username must be fetched. IPmeans the IP address contained within the original IP header.The following parameter specifies the type of authentication for stage 2; by aHTML (or WML) form, or by a basic HTTP authentication.authentication.type2=basic|formThe next parameter covers Single Sign-On Cookies. For more information,see Figure 6.2, “Authentication modes” on page 113.authentication.sso.enabled=yes|noIf this parameter is set to yes, the central authentication server sets a SingleSign-On Cookie to avoid prompting the user for several successiveauthentications. An SSO Cookie only works in multi-domain mode. Chapter 6. Subscriber authentication and access control 123
  • 141. The following parameters define the SSO Cookie more in-depth. sso.cookie.name=sauth sso.cookie.path=/authentication authentication.cookie.maxage=-1 suthentication.cookie.invalidation.delay=3600 authentication.cookie.encrypted=yes|no authentication.key=1,...,32 The above parameters specifies the Single Sign On Cookie. A negative maxage means a session cookie (lost when the browser is stopped). If the cookie is encrypted, a key number (from 1 to 32) must be specified. The next parameter specify the default URL after the authentication. This is not typically used. authentication.openurl=http://www.afterauthentication.com If the user logs off, the next parameter specifies where the user goes. authentication.logout.url=http://www.whenlogout.com If the user doesn’t pass a Realm, the next parameter specifies the default one he or she will be assigned to. authentication.default.realm=IBM These parameters must be un-commented when a cluster configuration is used, such as a configuration with an eND with several portal servers in parallel. This enables TISM session level load balancing as shown in Figure 83 on page 125.124 Introducing Tivoli Personalized Services Manager 1.1
  • 142. Figure 83. Cluster configurationOn the authentication checker side, the Webmaster must specify the list ofpremium services ids hosted by a thin server, and provide a list of URL pathsprefixes for each of them as shown in Figure 84.Figure 84. Premium configuration Chapter 6. Subscriber authentication and access control 125
  • 143. The next parameters are for the premium server. authentication.premium.tierids= 08004, 08005, .. authentication.premium.tierurls.08004=/premium1 authentication.premium.tierurls.08005=/premim2 This parameter specifies the URL where a non authorized user is sent when he or she tries to attend to a premium server. premium.accessrejected.url=http://hostname:1080/premium/auth.html For setting the logs: premium.access.log=no|yes premium.access.logname=/var/adm/logs/premium.log The authentication profiler class specifies an optional profiler class that can be used by the Webmaster to write dynamic profiling rules. Profiling rules are invoked at each user session start to dynamically add additional properties to that user. It can be used to specify targeting rules for promotions, to count user sessions, to make statistics, etc. authentication.profile.class=<profile class name> The following screen shows the DefaultAuthenticator.properties file.126 Introducing Tivoli Personalized Services Manager 1.1
  • 144. ####################################################################### TSM DefaultAuthenticator properties############################################################################################################################################## Multi-domain or Single-Domain authentication## - Multi-domain : allows Single Sign-On (SSO) on several# domains, including domains hosted by tiers (premium content)# It requires that devices supports HTTP redirect properly## - Single-domain : allows SSO on a single ISP domain# It does not use HTTP redirect since the authenticaiton is done# directly in the Checkers.# So it is faster, and good for dummy devices (I wont give name here ;-)# It has limited functions : no SSO,# authentication.type2=basic is forced# It can be a good solution to work with WES authentication proxy# or Tivoli Policy director.## Multi-domain is the default, allowed values : yes | no######################################################################authentication.multidomain.enabled=yes######################################################################## authentication server URL : http://hostName:port####################################################################### authentication.server.url=http://thklamberton.lagaude.ibm.comauthentication.server.url=http://itso14.dev.tivoli.com:8080######################################################################## authentication server path######################################################################authentication.server.uri=/authentication/server######################################################################## authentication form file path######################################################################authentication.form.path=/authentication/en/authentication.jsp######################################################################## 1st authentication type (w/o login/pwd prompting) :# authentication.type1 = ip | username | no## it must also specify the packet header which contains that information :# authentication.type1.header = ip | <any HTTP header name>## if authentication.type1=username is used take care of the other property :# authentication.force.username which forces a test username#######################################################################authentication.type1=username Chapter 6. Subscriber authentication and access control 127
  • 145. authentication.type1.header= # # Values to work with WES Authentication proxy : # # authentication.type1=username # authentication.type1.header=X-IBM-PVC-User # ###################################################################### # 2nd authentication type (with login/pwd prompting): # basic | form : form is supported only in multi-domain mode : # (authentication.multidomain.enabled=yes) # # The 2nd authentication type is used if the 1st one fails or is not active # ###################################################################### authentication.type2=form # ###################################################################### # When single sign-on is enabled, the authenticator sets # a SSO cookie "sauth" which can be used by later authentications # It avoids prompting twice the user with authentication form # # This parameter only applies when # "authentication.type2=form" and "authentication.multidomain.enabled=yes" # # SSO is not available in single domain # # Allowed values : yes | no ###################################################################### authentication.sso.enabled=yes # ###################################################################### # Single Sign On cookie parameters # only required if "authentication.sso.enabled=yes" ###################################################################### # SSO cookie name authentication.cookie.name=sauth # SSO cookie path authentication.cookie.path=/authentication # SS0 Cookie maxage : positive value in second, or negative values means non persistant authentication.cookie.maxage=-1 # SSO Cookie invalidation delay : positive value in second # After that period of time, even replayed (by a hacker) the cookie # is rejected authentication.cookie.invalidation.delay=3600 # # Use encrypted SSO cookie : yes | no # Turn to off when single-domain authentication is used : it avoids # useless encryption/decryption authentication.cookie.encrypted=yes128 Introducing Tivoli Personalized Services Manager 1.1
  • 146. ## Key index for cookie encryptionauthentication.key=5######################################################################## Default redirection URL after authentication# This default is usually overridden by the URL of the service# which requests the authentication######################################################################authentication.openurl=http://www.ibm.com######################################################################## Redirection URL after Single Sign On logout :# It can be a welcome page, not personalized######################################################################authentication.logout.url=http://www.tivoli.com######################################################################## Default realm######################################################################authentication.default.realm=IBM######################################################################## Authentication server uses a pool of prepared statements# Pool size : min, max nbr of statements######################################################################accessbean.statementpool.min = 1accessbean.statementpool.max = 5######################################################################## For test : force a username or username@realm# (uncomment to force a user name)## to use that facility the property above must be set :# authentication.type1=username######################################################################## authentication.force.username=TEST1@IBM######################################################################## Session Load Balancing Parameters :# >> Parameters for Checker side only## >> Session load balancing can be activated if the portal is# >> deployed on a cluster of servers with eND (WebSphere Perf. Pack)# >># >> It is perticularly useful in environments where eND sticky port cannot# >> be used, such as with a WAP gateway or a proxy that hides user-agent IP address# >># >> To enable the load balancing : specify here the server cluster# >> hostname (or IP address), and Chapter 6. Subscriber authentication and access control 129
  • 147. # >> the server private hostname (or IP address) . # >> # >> It requires that the portal pages are deployed using relative # >> hyperlinks (no hostname in the links) or server private hostname. ###################################################################### # authentication.cluster.hostname=cluster.ibm.com # authentication.private.hostname=myhost.ibm.com ###################################################################### # PREMIUM CONTENT Parameters : # >> These parameters are only necessary on Checker side # >> Each premium content server contains the definition of its tiers # >> # >> On Authentication server side the TSM data base contains also the # >> tiers definition, as defined with the TSM director tool # >> # >> These are optional parameters : # >> if ommitted it runs simple authentication w/o # >> premium content access control ###################################################################### # The tier ids of the premium content protected by this Checker # If more than one tier, use , as separator ###################################################################### authentication.premium.tierids=08004 # authentication.premium.tierids=08004,08005 ###################################################################### # List of URLs patterns protected by each tier # This list must only contain absolute path (starting with /) # When several URLs patterns for one tier, use , as separator # /perso is not in that list : it is not subject to premium content access control ###################################################################### authentication.premium.tierurls.08004=/premium # authentication.premium.tierurls.08005=/dummysample1,/dummysample2,/dummysample3 ###################################################################### # This URL is displayed when the access to a premium content is # rejected. # It can be an error page, selfcare, a portal page,... # It is recommended to use a full URL here ###################################################################### premium.accessrejected.url=http://itso14.dev.tivoli.com:10080/premium/premiumerror. html ###################################################################### # Log the access to a premium service into file... ###################################################################### premium.access.log=no premium.access.logname=/var/adm/logs/premium.log ###################################################################### # Optional Profiler class : if specified it is called at each session # start. It allows the portal WebMaster to specify rules which # create dynamic User profile propeties # see com.tivoli.tsm.perso.filter.SampleProfiler ###################################################################### authentication.profiler.class=com.tivoli.tsm.perso.filter.SampleProfiler130 Introducing Tivoli Personalized Services Manager 1.1
  • 148. 6.3.1.4 IE.propertiesThe IE.properties is the properties for Internet Explorer browsers as seen inthe following screen. ###################################################################### # TSM DeviceType properties for authentication and personalization ###################################################################### # device type name # It is structured like a file path : # / is the root # /WEB is the sub-root for every HTTP/HTML browsers # /WAP is the sub-root for every WAP devices ###################################################################### # device.type=/WEB # ###################################################################### # Content-types accepted by the device separated by , # # The 1st one in the list is the main content type, # it plays a special role in the component framework : it is the content # type forced by the LayoutComponents ###################################################################### # device.content.types=text/html,text/plain,image/gif,image/jpeg # ###################################################################### # device presentation properties # (-1 means unknown value) ###################################################################### # device.color.nbr=-1 device.column.nbr=-1 device.line.nbr=-1 # ###################################################################### # Any ISP defined properties ... ###################################################################### #6.3.1.5 Nav4.propertiesNav4.properties is the properties for Enterprise Navigator browsers, as seenin the following screen. Chapter 6. Subscriber authentication and access control 131
  • 149. . ###################################################################### # TSM DeviceType properties for authentication and personalization ###################################################################### # device type name # It is structured like a file path : # / is the root # /WEB is the sub-root for every HTTP/HTML browsers # /WAP is the sub-root for every WAP devices ###################################################################### # device.type=/WEB # ###################################################################### # Content-types accepted by the device separated by , # # The 1st one in the list is the main content type, # it plays a special role in the component framework : it is the content # type forced by the LayoutComponents ###################################################################### # device.content.types=text/html,text/plain,image/gif,image/jpeg # ###################################################################### # device presentation properties # (-1 means unknown value) ###################################################################### # device.color.nbr=-1 device.column.nbr=-1 device.line.nbr=-1 # ###################################################################### # Any ISP defined properties ... ###################################################################### # The next parameter specifies the device type and the user agent. This property is mandatory. This type is used by pTk portlet framework to generate the content that fits each device. The device type is hierarchal (Figure 85 on page 133): device.type=/WEB/IE132 Introducing Tivoli Personalized Services Manager 1.1
  • 150. Figure 85. Hierarchal device type The next parameter is mandatory and specifies the type of content supported by that device. The first content type in the list must be the primary markup language used by thin device. It is used by the portlet framework. device.content.types=text/html,text/plain,image/gif,image/jpeg6.4 Wireless World Figure 86 on page 134 shows how the Wireless devices work when they access the TPSM. Chapter 6. Subscriber authentication and access control 133
  • 151. Figure 86. WAP architecture Mobile WAP Devices need to access the internet through a wireless network. To do this, the user dials the NAS (Network Access Server), which prompts the authentication form, user, and password. The NAS is a gateway between networks and the internet that allows the users to connect to the ISP. Once the user is connected to the internet, he or she goes through the WAP Gateway that connects the WAP Protocol to HTTP Protocol to the Portal Web Server. Once users are connected, they can access their portal pages. At this point the Authentication Checker determines if the user has accessed before and prompts authentication for TPSM. The authentication can only be through configuration with the TPSM.134 Introducing Tivoli Personalized Services Manager 1.1
  • 152. The Wireless World has its own features that make the configuration and personalization of TPSM different. The main features are: • Protocol WAP • Programming Language; WML, WML Script, XML • Different infrastructure; Wireless Gateway, mobiles, PDAs These features have important consequences that affect configuration. The main consequences are: • Different ways to process the data, so different ways to authenticate • Different way to program the JSPs • Different configuration of servlets Besides all these general differences are some differences depending on the infrastructure that the customer has, such as if the customer has a gateway or not, a RADIUS server or not, and the type of gateway. Authentication is the same as that for Internet World in some cases. The authentication server has a pTk component called Authentication Checker that determines the type of device that it´s trying to access. Once that it knows the type of device, the Authentication Server treats it as the device needs. To do this, the servlets must be configured for the type of infrastructure.6.4.1 Structure of Authentication Server The important parts of the Authentication Server when it´s used for wireless internet access are shown in Figure 87 on page 136. The authentication file system is divided in two parts: 1. Contents, where the JSPs are stored. 2. Servlets, where all the configuration files and servlets for the authentication server are stored. Chapter 6. Subscriber authentication and access control 135
  • 153. Figure 87. Active components of the Authentication Server (mobile internet) The content file system has different parts, as you can see in Figure 87: • css contains the default style sheet for the authentication server. • en contains all the English JSPs. • images contains all the pictures for the authentication server. • ja contains all the Japanese JSPs. The JSP used for mobile internet is wapauthentication.jsp, and is a form in WML with a Java Bean that creates a session. The default wapauthenticator.jsp sometimes needs to be changed by hand in some fields because it doesn’t get all the information. This is based on the mobile device. Keep this in mind if you notice odd behavior while configuring an application, and the /usr/WebSphere/AppServer/logs/authentication.log appears as the user is using the wapauthentication.jsp, then you need to update the default. The next screen is an example of wapauthentication.jsp, but the file has been modified to be able to work for the business cases.136 Introducing Tivoli Personalized Services Manager 1.1
  • 154. <%@ page contentType="text/vnd.wap.wml" import="java.util.*,java.text.*,com.tivoli.tsm.authentication.*"%> <jsp:useBean id="auth" class="com.tivoli.tsm.authentication.AuthFormBean" scope="request" /> <?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <template> <do type="prev" name="back" label="Back"> <prev/> </do> </template> <card id="login" title="TISM Authentication"> <p> User: <input type="text" title="userid" name="userid"/> Password : <input type="password" title="password" name="password"/> <anchor>Submit <go href="<%= auth.getAuthenticationServerURL() %>" method="get"> <postfield value="$(userid)" name="SMSusername" /> <postfield value="$(password)" name="SMSpassword" /> <postfield value="<%=auth.getKeyIndex()%>" name="SMSkey" /> <postfield value="ITSOCHANNEL" name="SMSrealm" /> <postfield value="http://itso14.dev.tivoli.com:16080/perso/home" name="SMSurl" /> <postfield value="<%=auth.getTierList()%>" name="SMStiers" /> </go> </anchor> </p> </card> </wml>The bolded lines in this JSP are vital to understanding how TPSM works. Inthat code, the JSP sets the type of mime type and creates the Java Bean authto collect the data needed for authentication.The rest of the code is a WML form. As you can see the SMSrealm andSMSurl has been changed by hand. These fields are the REALM and theURL to go back to when the user is authenticated that we used because wedon’t pass these parameters.The configuration for the servlets will be explained in the sample businesscases because it depends on the environment. Chapter 6. Subscriber authentication and access control 137
  • 155. 6.4.2 Business case 1 This business case is for a company that already has a NAS server. The TPSM will be installed on it to authenticate the users. The company doesn’t use a Wireless Gateway, so everything is sent and received in WML. 6.4.2.1 Configuration The configuration files that need to be changed are: • Authentication.properties • WapAuthentication.properties • Device.properties (This is an example of properties file for the different type of devices, Nokia 7110, Ericsson 320, etc.) The files were changed as follows. Authentication.properties Authentication.properties is a properties file where the type of authenticators and the different type of devices supported are defined. As you can see at the beginning of the file, there is the definition of the two authenticators; DefaultAuthenticator and WapAuthenticator. Both are the Java classes that manage the authentication depending on the type of device. After the definition of authenticators, you have the type of devices supported and the authenticator that each of them requires. If you see an example of type of device, you have: • Definition of user - agent • Path of the properties file • Type of authenticator required At the end of the file is the log file location. WapAuthentication.properties WapAuthentication.properties is a properties file to set the way to make the authenticate mobile internet devices. This file configures the WAPAuthenticator.properties file. It follows the same syntax and DefaultAuthenticator.properties file. This section provides information to tune the parameters. authentication.multidomain.enabled = yes138 Introducing Tivoli Personalized Services Manager 1.1
  • 156. The recommended value is “no” because it can be used when devices do notsupport HTTP redirect properly, but we set it as yes because the mobiledevices that we are using support HTTP redirection.Because we don’t have a gateway, we set:authentication.type1 = noauthentication.type2 = formThese parameters disable auto logon and prompt the user with a log-in WMLform.authentication.sso.enabled = noAlthough we are not using a gateway at the moment, we set this parameter asno. Many WAP gateways do not support cookies. In that case, it is better todisable the SSO Cookie. The IBM WAP gateway supports session cookies,and can be used for SSO.authentication.openurl=http://www.ibm.comIf the servlet doesn’t receive any ComeBackURL, it uses this one.authentication.default.realm=IBMIf the servlet doesn’t receive the REALM that is using, it would get this one asdefault.See the next screen for the WAPAuthentication.properties code. Chapter 6. Subscriber authentication and access control 139
  • 157. ###################################################################### # TSM DefaultAuthenticator properties ###################################################################### # ###################################################################### # Multi-domain or Single-Domain authentication # # - Multi-domain : allows Single Sign-On (SSO) on several # domains, including domains hosted by tiers (premium content) # It requires that devices supports HTTP redirect properly # # - Single-domain : allows SSO on a single ISP domain # It does not use HTTP redirect since the authenticaiton is done # directly in the Checkers. # So it is faster, and good for dummy devices (I wont give name here ;-) # # Multi-domain is the default, allowed values : yes | no ###################################################################### authentication.multidomain.enabled=yes # ###################################################################### # authentication server URL : http://hostName:port ###################################################################### authentication.server.url=http://itso14.dev.tivoli.com:8080 # ###################################################################### # authentication server path ###################################################################### authentication.server.uri=/authentication/server # ###################################################################### # authentication form file path ###################################################################### authentication.form.path=/authentication/en/wapauthentication.jsp # ###################################################################### # 1st authentication type (w/o login/pwd prompting) : # authentication.type1 = ip | username | no # # it must also specify the packet header which contains that information : # authentication.type1.header = ip | <any HTTP header name> # # if authentication.type1=username is used take care of the other property : # authentication.force.username which forces a test username # authentication.type1=no #authentication.type1.header = X-Network-Info # # IBM WAP gateway of Nokia enterprise gateway #authentication.type1.header=X-Network-Info # Ericsson WAP gateway 1.1 # authentication.type1.header=Cookie140 Introducing Tivoli Personalized Services Manager 1.1
  • 158. ####################################################################### 2nd authentication type (with login/pwd prompting):# basic | form# The 2nd authentication type is used if the 1st one fails or is not active######################################################################authentication.type2=form######################################################################## When single sign-on is enabled, the authenticator sets# a SSO cookie "sauth" which can be used by later authentications# It avoids prompting twice the user with authentication form## This parameter only applies when "authentication.type=form" is used# when "authentication.type=ip or basic" SSO is always enabled######################################################################authentication.sso.enabled=no######################################################################## Single Sign On cookie parameters####################################################################### SSO cookie nameauthentication.cookie.name=sauth# SSO Cookie pathauthentication.cookie.path=/authentication# SSO Cookie maxage : positive value in second, or negative values means nonpersistantauthentication.cookie.maxage=-1# SSO Cookie invalidation delay : positive value in second# After that period of time, even replayed (by a hacker) the cookie# is rejectedauthentication.cookie.invalidation.delay=3600## Use encrypted SSO cookie : yes or noauthentication.cookie.encrypted=yes## Key index for SSO cookie encryptionauthentication.key=5######################################################################## Default redirection URL after authentication######################################################################authentication.openurl=http://www.ibm.com######################################################################## Default realm######################################################################authentication.default.realm=IBM######################################################################## Use session context : yes/no# >> Using session context optimizes performances# >> In a Web server cluster (e.g. with eND), session context# must be used carefully : with eND sticky port, or WAS Advance Edition# clustering feature######################################################################authentication.session.used=yes Chapter 6. Subscriber authentication and access control 141
  • 159. ###################################################################### # Authentication server uses a pool of prepared statements # Pool size : min, max nbr of statements ###################################################################### accessbean.statementpool.min = 1 accessbean.statementpool.max = 5 ###################################################################### # For test : force a username or username@realm # (uncomment to force a user name) # # to use that facility the property above must be set : # authentication.type1=username # ###################################################################### # authentication.force.username=TEST1@IBM ###################################################################### # PREMIUM CONTENT Parameters : # >> These parameters are only necessary on Checker side # >> Each premium content server contains the definition of its tiers # >> # >> On Authentication server side the TSM data base contains also the # >> tiers definition, as defined with the TSM director tool # >> # >> These are optional parameters : # >> if ommitted it runs simple authentication w/o # >> premium content access control ###################################################################### # The tier ids of the premium content protected by this Checker # If more than one tier, use , as separator ###################################################################### authentication.premium.tierids=08004,08005 # ###################################################################### # List of URLs patterns protected by each tier # This list must only contain absolute path (starting with /) # When several URLs patterns for one tier, use , as separator # /perso is not in that list : it is not subject to premium content access control ###################################################################### authentication.premium.tierurls.08004=/premium authentication.premium.tierurls.08005=/dummysample1,/dummysample2,/dummysample3 # ###################################################################### # This URL is displayed when the access to a premium content is # rejected. # It can be an error page, selfcare, a portal page,... # It is recommended to use a full URL here ###################################################################### premium.accessrejected.url=http://wap.yahoo.com142 Introducing Tivoli Personalized Services Manager 1.1
  • 160. ####################################################################### # Log the access to a premium service into file... ###################################################################### premium.access.log=yes premium.access.logname=premium.log # # ###################################################################### # Optional Profiler class : if specified it is called at each session # start. It allows the portal WebMaster to specify rules which # create dynamic User profile propeties # see com.tivoli.tsm.perso.filter.SampleProfiler ###################################################################### authentication.profiler.class=com.tivoli.tsm.perso.filter.SampleProfilerDevice.propertiesThe Device.properties is an example of properties file for devices. Theexplanation for this one is the same as IE.properties and Nav4.properties.Each type of WAP Device has its own type of file, so now we have anexample. The first code line is a label for the device. After that, it sets themime types supported and the presentation properties for the device. See thenext screen for the code. ###################################################################### # TSM DeviceType properties for authentication and personalization ###################################################################### # device type label ###################################################################### device.type=/WAP/NokiaEmul # ###################################################################### # content types accepted by the device # # The 1st one in the list is the main content type, # it plays a special role in the component framework : it is the content # type forced by the LayoutComponents ###################################################################### device.content.types=text/vnd.wap.wml,text/vnd.wap.wmlscript,application/vnd.wap.wm lc,application/vnd.wap.wmlscriptc,image/vnd.wap.wbmp # ###################################################################### # device presentation properties ###################################################################### device.color.nbr=2 device.column.nbr=20 device.line.nbr=5 Chapter 6. Subscriber authentication and access control 143
  • 161. 6.4.2.2 Example Here is the result of this configuration. When you write in the URL, http://hostname:8080/authentication/server, the first screen as shown in Figure 88 appears, where you write the userid and password. Once sent to the authentication server, the userid and password are checked and, if correct, the user will be redirected to the URL. Figure 88. Example of navigation for business case 16.4.3 Business case 2 This business case is for a company that has a Nokia Gateway 1.1.1. It was tested with HTTP 1.1 devices. It can work with HTTP 1.2 devices, but we didn’t include them in this redbook. 6.4.3.1 Configuration files We modified the WapAuthenticator.properties file from Business Case 1 was as shown in the next screen.144 Introducing Tivoli Personalized Services Manager 1.1
  • 162. ####################################################################### TSM DefaultAuthenticator properties############################################################################################################################################## Multi-domain or Single-Domain authentication## - Multi-domain : allows Single Sign-On (SSO) on several# domains, including domains hosted by tiers (premium content)# It requires that devices supports HTTP redirect properly## - Single-domain : allows SSO on a single ISP domain# It does not use HTTP redirect since the authenticaiton is done# directly in the Checkers.# So it is faster, and good for dummy devices (I wont give name here ;-)## Multi-domain is the default, allowed values : yes | no######################################################################authentication.multidomain.enabled=yes######################################################################## authentication server URL : http://hostName:port######################################################################authentication.server.url=http://itso14.dev.tivoli.com:8080######################################################################## authentication server path######################################################################authentication.server.uri=/authentication/server######################################################################## authentication form file path######################################################################authentication.form.path=/authentication/en/wapauthentication.jsp######################################################################## 1st authentication type (w/o login/pwd prompting) :# authentication.type1 = ip | username | no## it must also specify the packet header which contains that information :# authentication.type1.header = ip | <any HTTP header name>## if authentication.type1=username is used take care of the other property :# authentication.force.username which forces a test username##authentication.type1=noauthentication.type1.header = X-Network-Info Chapter 6. Subscriber authentication and access control 145
  • 163. # Ericsson WAP gateway 1.1 # authentication.type1.header=Cookie # ###################################################################### # 2nd authentication type (with login/pwd prompting): # basic | form # The 2nd authentication type is used if the 1st one fails or is not active ###################################################################### authentication.type2=form # ###################################################################### # When single sign-on is enabled, the authenticator sets # a SSO cookie "sauth" which can be used by later authentications # It avoids prompting twice the user with authentication form # # This parameter only applies when "authentication.type=form" is used # when "authentication.type=ip or basic" SSO is always enabled ###################################################################### authentication.sso.enabled=no # ###################################################################### # Single Sign On cookie parameters ###################################################################### # SSO cookie name authentication.cookie.name=sauth # SSO Cookie path authentication.cookie.path=/authentication # SSO Cookie maxage : positive value in second, or negative values means non persistant authentication.cookie.maxage=-1 # SSO Cookie invalidation delay : positive value in second # After that period of time, even replayed (by a hacker) the cookie # is rejected authentication.cookie.invalidation.delay=3600 # # Use encrypted SSO cookie : yes or no authentication.cookie.encrypted=yes # # Key index for SSO cookie encryption authentication.key=5 # ###################################################################### # Default redirection URL after authentication ###################################################################### authentication.openurl=http://itso14.dev.tivoli.com:16080/perso/samples # ###################################################################### # Default realm ###################################################################### authentication.default.realm=ITSOCHANNEL ###################################################################### # Use session context : yes/no # >> Using session context optimizes performances # >> In a Web server cluster (e.g. with eND), session context # must be used carefully : with eND sticky port, or WAS Advance Edition # clustering feature ######################################################################146 Introducing Tivoli Personalized Services Manager 1.1
  • 164. authentication.session.used=yes####################################################################### Authentication server uses a pool of prepared statements# Pool size : min, max nbr of statements######################################################################accessbean.statementpool.min = 1accessbean.statementpool.max = 5####################################################################### For test : force a username or username@realm# (uncomment to force a user name)## to use that facility the property above must be set :## authentication.type1=username####################################################################### authentication.force.username=TEST1@IBM####################################################################### PREMIUM CONTENT Parameters :# >> These parameters are only necessary on Checker side# >> Each premium content server contains the definition of its tiers# >># >> On Authentication server side the TSM data base contains also the# >> tiers definition, as defined with the TSM director tool# >># >> These are optional parameters :# >> if ommitted it runs simple authentication w/o# >> premium content access control####################################################################### The tier ids of the premium content protected by this Checker# If more than one tier, use , as separator######################################################################authentication.premium.tierids=08004,08005######################################################################## List of URLs patterns protected by each tier# This list must only contain absolute path (starting with /)# When several URLs patterns for one tier, use , as separator# /perso is not in that list : it is not subject to premium content access control######################################################################authentication.premium.tierurls.08004=/premiumauthentication.premium.tierurls.08005=/dummysample1,/dummysample2,/dummysample3######################################################################## This URL is displayed when the access to a premium content is# rejected.# It can be an error page, selfcare, a portal page,...# It is recommended to use a full URL here###################################################################### Chapter 6. Subscriber authentication and access control 147
  • 165. premium.accessrejected.url=http://wap.yahoo.com # ###################################################################### # Log the access to a premium service into file... ###################################################################### premium.access.log=yes premium.access.logname=premium.log # # ###################################################################### # Optional Profiler class : if specified it is called at each session # start. It allows the portal WebMaster to specify rules which # create dynamic User profile propeties # see com.tivoli.tsm.perso.filter.SampleProfiler ###################################################################### authentication.profiler.class=com.tivoli.tsm.perso.filter.SampleProfiler 6.4.3.2 Example screen The screens that appear upon entering the URL http://hostname:8080/authentication/server are the same as the ones from Business Case 1 as seen in Figure 88 on page 144.148 Introducing Tivoli Personalized Services Manager 1.1
  • 166. Chapter 7. Using Customer Care and Director Tool The TISM Customer Care Component is the primary tool used for customer service. This application will be the first point of contact that Customer Service Representatives (CSRs) use to access customer information when the customer calls in. "Customers" are usually referred to as "subscribers" The Customer Care Component allows the CSR to: • Enroll and manage consumer subscribers Primary Accounts • Add, update, and remove consumer Child Accounts • Enroll and manage business accounts and sub-accounts • Add, update, and remove business subscribers • The CSRs can view and update: - Account status - Personal information - Deals (i.e., service plans) - Method of payment - E-mail settings TISM is designed to support both consumer accounts and business accounts. Many of the processes described in this chapter are specific to one category or the other. The topic headings will tell you which is being covered. Consumer accounts consist of a primary subscriber/account and (optionally) a number of child subscribers. The primary account is responsible for all billing and payment. The child subscribers each have their own username and password, which gives the child a separate identity. The consumer account is created automatically when the subscriber is enrolled. Business accounts consist of a primary (top-level) account, (optional) sub-accounts, and subscribers. A CSR needs to create the business account before subscribers can be enrolled. Billing can be set up at the primary or sub-account level for business accounts.© Copyright IBM Corp. 2001 149
  • 167. 7.1 Assigning login IDs and access control profiles to CSRs As a first step to be able to access the Customer Care, we created a Profile, which is associated with a REALM. • Open a DOS Windows and run console.bat to start the TISM Administration Console. It will open a dialog box where you have to give the Administrator login and password (Figure 89). Figure 89. The TISM Administration Console dialog box • The TISM Administration Console should be open now. Double click on Access Control, click on Profiles, right click on CSR, and choose add as shown in Figure 90. Figure 90. TISM Administration Console150 Introducing Tivoli Personalized Services Manager 1.1
  • 168. • Fill out the Profile Name field and click on the checkbox for the REALM that is going to administer the new role, then click the Add button as shown in Figure 91.Figure 91. Add a New Access Role (1) • Fill in the fields in the window as shown in Figure 92, then click on Add.Figure 92. Add a New Access Role (2) • Now we can see the profile that we have just created, as shown in Figure 93 on page 152. Chapter 7. Using Customer Care and Director Tool 151
  • 169. Figure 93. TISM Administration Console (1) After we created a Profile, we now must create a Login to access the Customer Care. Right click on Login, then click on Add as shown in Figure 94. Figure 94. TISM Administration Console (2)152 Introducing Tivoli Personalized Services Manager 1.1
  • 170. This will open the window shown in Figure 95. Fill out all the information. Inthe Access Profile, choose the one that you just have created, in our exampleCSR_ITSOCHANNEL.Figure 95. Add a New Login NameThe Login we just created is shown in Figure 96 on page 154. Chapter 7. Using Customer Care and Director Tool 153
  • 171. Figure 96. TISM Administration Console (3)7.2 Logging on to Customer Care Customer Care Reps (CSRs) must be enrolled in the Customer Care system by an authorized administrator and assigned a login name and password. See the previous section for details. The CSR’s login name and password must have an access control profile associated with them. This profile controls the realms and types of accounts that the CSR can access. For example, CSR #1 may be given an access control profile that allows access to (a)employee and (b)billable on ITSOchannel.com. CSR #2 may be given an access control profile that allows access to (a)employee, (b)billable, and (C)complementary on ITSOchannel.com and Tivoli.com.154 Introducing Tivoli Personalized Services Manager 1.1
  • 172. 7.3 Log on steps To log on, please follow the next steps: • Launch the Customer Care Component on your computer: http://itso14.dev.tivoli.com:14080/cc.html • On the Login panel, Enter Login Name and Password. This Login Name needs to be created with the Director Tool and have a REALM associated with it. Press OK as shown in Figure 97. • Figure 97. Customer care logging page When you are successfully authenticated, the Search screen is shown (Figure 99 on page 158). Please refer to Section 7.4.2, “View and update a subscriber account” on page 157 for further details.7.4 Managing consumer accounts Consumer accounts consist of a primary subscriber/account and (optionally) a number of child subscribers that can be family members, friends, or colleagues. The primary account is responsible for all billing and payment. The child subscribers each have their own username and password, which gives the child a separate identity and makes the account private and secure. The consumer account is created automatically when the subscriber is enrolled. Chapter 7. Using Customer Care and Director Tool 155
  • 173. 7.4.1 Enroll a new consumer subscriber When the subscriber calls in, the Customer Service Representative (CSR) will choose the Realm the subscriber will be enrolled in and, based on the Realm, the CSR will choose the Deal from a list of options. The CSR will also collect and enter the following information: Personal Information: first and last names, address, city, state, zip code. Title, middle initial, daytime phone, evening phone, gender, and birth date are optional. Account Information: username, password, secret. Method of Payment Information: payment method (credit card, invoice, telephone bill), account number (for telephone bill and credit cards only), expiration date (for credit cards only), account holder name. To enroll a new consumer subscriber follow these steps: - Press the “New Person” button on the menu at the top of any screen. This will bring up a new, blank enrollment screen as shown in Figure 98 on page 157. - Enter subscriber information and press the "Enroll" button. If the enrollment fails, a message at the bottom of the screen will indicate the reason for failure. Correct the error and press the "Enroll" button again. If everything is okay, the message "Enrollment completed successfully" appears at the bottom of the screen.156 Introducing Tivoli Personalized Services Manager 1.1
  • 174. Figure 98. TISM customer care7.4.2 View and update a subscriber account The view and update consumer account function is used by CSRs to modify information about a consumer subscribers personal information (name, address, etc.), password, deal, and method of payment information. For each update operation, the CSRs can add remarks. They will be presented with a list of possible reason codes for the update. CSRs choose the appropriate reason code and enter some meaningful information to be associated with the operation. • Press the "Search" button on the menu bar to get the search screen. • Enter search criteria and press the “Search” button. See Using the Search Panel in Section 7.7.1, “Search criteria for individual subscribers” on page 165 for details about search criteria. If there is just one subscriber that exactly matches the search criterion, the Subscriber Update panel will be displayed (Figure 99 on page 158). If there are more than one match for the search, a list of subscribers will be displayed Chapter 7. Using Customer Care and Director Tool 157
  • 175. • If the search produced a list of subscribers, select the correct one from the list by double clicking the subscribers name or highlighting the subscriber and clicking the "UPDATE" button. • The Subscriber Update panel is displayed (Figure 100 on page 159) with the subscriber information filled in. • View the existing data or make changes as needed. • If changes are made, press the "UPDATE" button to process them. • Error messages will appear near the "Update" button if changes are invalid. Make changes as indicated by the messages and press "Update" again. • A "success" message will appear when changes are successful. Figure 99. Search results158 Introducing Tivoli Personalized Services Manager 1.1
  • 176. Figure 100. Subscriber update panel7.4.3 Changing a subscribers deal A deal represents a set of services that the Service Provider offers to a customer. It describes the service offered and the price. To change the subscriber’s deal, follow the next steps: • On the Subscriber Update panel (Figure 100 on page 159), select the drop-down “Deal” list and choose the applicable deal. • To view details about the deal, press the “DEAL DETAILS” button at the bottom right-hand side of the window. The details will be displayed in another window. • Press the Update button to process the deal change. A message will be displayed with the status of the request. If there are errors, make the corrections indicated by the message and press Update again.7.4.4 Change subscribers method of payment To change the subscriber’s method of payment, follow these steps: • Select the “Payment Method” drop-down box at the bottom left hand portion of the window as shown in Figure 101 on page 160. Chapter 7. Using Customer Care and Director Tool 159
  • 177. • If the subscriber is changing from Credit Card to Invoice, the credit card fields will be removed from the window. • If the subscriber is changing from Invoice to Credit Card, the associated credit card fields will display next to the Payment Method box (Figure 101). The CSR will be required to enter the Account Number, Expiration Date, and the Account Holder name. • Press the “UPDATE” button. If there are errors, make the corrections indicated by the message and press Update again. Figure 101. Changing method of payment7.4.5 Disconnect a subscriber To remove a subscriber, perform these steps: • On the Subscriber Update panel, select the “Disconnect” button. A window for confirmation will appear (Figure 102 on page 161). • Press “OK” and the account will be disconnected. The CSR will be returned to the Subscriber Update panel and the Status at the top of the window will say “Disconnected” (Figure 103 on page 161).160 Introducing Tivoli Personalized Services Manager 1.1
  • 178. Figure 102. Disconnecting a user Figure 103. User disconnected7.4.6 Reconnect a subscriber To reconnect a subscriber, follow these steps: • On the Subscriber Update panel, press the “Reconnect” button. Chapter 7. Using Customer Care and Director Tool 161
  • 179. • Subscriber status displayed at the top of the window will state “Active” instead of “Disconnected” (Figure 103 on page 161).7.4.7 Create a consumer child subscriber A child subscriber is an optional sub-account under a primary consumer account. The child subscriber has a separate login id and E-mail address, but is billed to the primary (parent) account. Typically, child subscribers are used to set up separate logins and passwords for children or relatives in a household. Only the primary account receives a bill, but usage identifying each sub-account may be detailed on the bill. To define a child subscriber, do the following: • From the Subscriber Update screen (Figure 100 on page 159), press the “Enroll Child” button. The child maintenance window will be displayed, as shown in Figure 104. Figure 104. Enrolling a customer child subscriber162 Introducing Tivoli Personalized Services Manager 1.1
  • 180. Note The primary Subscriber Update window shows the details of the "parent" account, including payment and deal details. These elements cannot be changed for the child subscriber. • Enter the username, password, secret word, and other required fields for the child subscriber and then press the “Enroll” button. The comment at the bottom of the screen will confirm that the child has been enrolled.7.4.8 Disconnect a child subscriber Using the search panel, the CSR can find either the main account or search directly for a subscriber. The application will launch the maintenance window populating the subscriber information in the applicable fields (if the search was for the main account, the CSR will then select a subscriber by clicking on the USER NAME dropdown box, which displays all of the associated child subscribers). After the CSR selects the correct child subscriber, the associated information will be populated in the maintenance window. Select the “Disconnect” button in the middle of the window. The system will display another window asking for confirmation to disconnect the sub-account. Press “OK” to confirm (Figure 102 on page 161). The CSR will be returned to the maintenance window and the status at the top of the window (for that child subscriber) will say “disconnected.”7.5 Reports This function is launched by pressing the “Reports” button on the Customer Care menu bar. The next applet window will appear as shown in Figure 105 on page 164. Available Reports include: • Daily Report of Enrollment Activity • Daily Report of Session Activity • Daily Report of Hourly Activity • Weekly Member Level Part 1 Report • Weekly Member Level Part 2 Report • Weekly Subscriber Level Report Chapter 7. Using Customer Care and Director Tool 163
  • 181. • Monthly Usage Summary Report • Monthly Cohort by Hours Report • Monthly Enrollment by Access Code Report • Monthly Enrollment Report • Monthly Disconnect Analysis Report Figure 105. TISM Reporting Program7.6 Additional services The Customer Care Component has the ability to link to applications that are external to the TISM system. For example, an application that enrolls users in another program offered by the service provider, such as a telephone long-distance calling plan, can be linked to TISM. The advantage to linking external applications to TISM is that the TISM subscriber database is linked too. Therefore, personal information (such as, name, address, and phone) is automatically transferred to the external application. The GUI interface to additional services is a button called “Additional Services” that appears at the bottom of subscriber maintenance screens. TISM operators can take advantage of existing external applications or develop new ones, install them on a web server, and configure the Customer Care Component with the applications URL. The “Additional Services” button will then link to and launch the external application.164 Introducing Tivoli Personalized Services Manager 1.1
  • 182. 7.7 Using the Search Panel In this section we are going to review how to use the Search Panel.7.7.1 Search criteria for individual subscribers To find individual subscribers (either consumer subscribers or business account subscribers), enter some or all of the following: • Realm - this field defaults to one of the configured realms. • User Name -the name a subscriber uses to login • Subscribers first name • Subscribers last name • Phone Number - primary • Phone Number - secondary The Search button remains disabled until some search criteria are entered. Do not enter Account Number or Company Name, as they are not recognized as search criteria items for individual subscribers.7.7.2 Exact match feature The search screen looks up the character string you put in and assumes there is a wildcard following the string unless you check Exact Match For example, with Exact Match not checked, entering Last Name [Stein] will find Steiner, Steinfeld, Steinsky, and Stein. With Exact Match checked, only Stein will be found. The Name field does not accept a star (*) for search criteria; it doesnt interpret *stein, stein*, or *stein* where an asterisk (*) is typed in to signify a wildcard. In other words, users might type *stein and expect the system to find Rothstein or Willstein but it wont. A User Name Field search assumes that what you type is the beginning of the search object. If you type “nge” wont get “Engel,” for example. At best it gets a name that starts with “Nge.” For consumer accounts the Account Number does not appear when the subscribers data is displayed. For business accounts the Account Number does appear when the subscribers data is displayed Chapter 7. Using Customer Care and Director Tool 165
  • 183. 166 Introducing Tivoli Personalized Services Manager 1.1
  • 184. Chapter 8. Subscriber Selfcare This chapter describes how to customize and run the Subscriber Selfcare applications.8.1 Overview Subscriber Selfcare is a suite of applications that allows subscribers to view and change personal information collected during enrollment (refer to Chapter 5, “Enrollment and service provisioning” on page 73). These applications let a subscriber perform the following: • Change password • Display and update personal information (name, address, phone numbers) • Display and update payment information • Display and add member accounts under the subscriber account • Display devices the member has enrolled (only in Tivoli Personalized Services Manager) These functions are presented to a subscriber using HyperText Markup Language (HTML) pages or Java Server Pages (JSPs) that a Service Provider (SP) can customize to give them a unique appearance. All of the applications are run from servlets hosted on a Web server.8.2 Customization The flow and order of presentation of pages is controlled by the main JSP file. Through programmatic tests of the current state of the data object, the page to be displayed is selected. The SP can rearrange the order of presentation, combine or divide the content of individual pages, and take “side trips” to other applications through customization of the JSP pages. The customiser is responsible for ensuring that side trips are returned from and prerequisites are entered before dependent data. The JSP files, which are located in the /usr/TivTSM/selfcare/content/jsp directory, are described in Table 12: Table 12. JSPs for SelfCare JSP File Description AddMemberAuthError Authentication page.© Copyright IBM Corp. 2001 167
  • 185. JSP File Description AddMemberMemberCancel If you cancel the registration, it will send you to this JSP. AddMemberCommit Commits the changes to the database. AddMemberInput New Member form,. AddMemberMain JSP that controls all the flow. AddMemberRefused If there is anything wrong with the information entered. AddMemberSubmit Asks for confirmation to proceed with the registration. ChangePasswordAuthError Authentication Page. ChangePasswordCancel If you cancel the registration, it will send you to this JSP. ChangePasswordCommit Commits the changes to the database. ChangePasswordInput The Change Password form to be filled. ChangePasswordMain JSP that controls the flow. ChangePasswordRefused If there is anything wrong with the password, this JSP is called. ChangePasswordSubmit Asks if you want to go ahead with the new password. ChangePaymentAuthError Authentication page. ChangePaymentCancel If you cancel the payment, it would send you to this JSP. ChangePaymentCommit Commits the changes to the database. ChangePaymentInput The form to change the information. ChangePaymentMain JSP that controls the flow. ChangePaymentRefused If there is something wrong. ChangePaymentSubmit Asks for confirmation to proceed with the changes. ChangePersonalInfoAuthError User authentication. ChangePersonalInfoCancel If you cancel the registration, it would send you to this JSP.168 Introducing Tivoli Personalized Services Manager 1.1
  • 186. JSP File Description ChangePersonalInfoCommit Commits the changes to the database. ChangePersonalInfoInput Shows the fields to change. ChangePersonalInfoMain JSP that controls the flow. ChangePersonalInfoRefused If there is anything wrong with a field, this JSP is called. ChangePersonalInfoSubmit Asks for confirmation to proceed with the changes. DisplayDeviceAuthError Authentication page. DisplayDeviceInfo Display the device information. DisplayDeviceList Display the devices. DisplayDeviceMain JSP that controls the flow. DisplayDevicenotFound If a device is not found. DisplayDeviceRefused If there is something wrong with the device.All Selfcare use a common configuration file named selfcare.propertieslocated in /usr/TivTSM/selfcare/. In Table 13, you can see each of thevariables that you can modify.Table 13. SelfCare.properties file variables Variable Description Example displayDevice.JSPPath The URL location of the /selfcare application JSP files. displayDevice.mainJSPPa The name of the main JSP DisplayDeviceMain.jsp ge file. displayDevice.hostName The URL location of the http://itso14.dev.tivoli.com application host. displayDevice.debug A switch to cause the false logging of more detailed messages. displayDevice.exitClass Exit class of application. com.tivoli.tsm.selfcare.Sa mpleExit1 displayDevice.device.defa Device specific class. com.tivoli.tsm.selfcare.devi ult ce.DisplayDevice4PC Chapter 8. Subscriber Selfcare 169
  • 187. Variable Description Example displayDevice.device.PC Device specific class. com.tivoli.tsm.selfcare.devi ce.DisplayDevice4PC changePassword.JSPPath The URL location of the /selfcare application JSP files. changePassword.mainJSP The name of the main JSP ChangePasswordMain.jsp Page file. changePassword.hostNam The URL location of the http://itso14.dev.tivoli.com e application host. changePassword.debug A switch to cause the false logging of more detailed messages. changePassword.exitClas Exit class of application. com.tivoli.tsm.selfcare.Sa s mpleExit1 changePassword.device.d Device specific class. com.tivoli.tsm.selfcare.Ch efault angePassword4PC changePassword.device.P Device specific class. com.tivoli.tsm.selfcare.Ch C angePassword4PC changePayment.JSPPath The URL location of the /selfcare application JSP files. changePayment.mainJSP The name of the main JSP ChangePaaymentMain.jsp Page file. changePayment.hostNam The URL location of the http://itso14.dev.tivoli.com e application host. changePayment.debug A switch to cause the false logging of more detailed messages. changePayment.exitClass Exit class of application. com.tivoli.tsm.selfcare.Sa mpleExit1 changePayment.device.de Device specific class. com.tivoli.tsm.selfcare.Ch fault angePassword4PC changePayment.device.P Device specific class. com.tivoli.tsm.selfcare.Ch C angePassword4PC changePersonalInfo.JSPP The URL location of the /selfcare ath application JSP files.170 Introducing Tivoli Personalized Services Manager 1.1
  • 188. Variable Description Example changePersonalInfo.mainJ The name of the main JSP ChangePersonalInfoMain.j SPPage file. sp changePersonalInfo.hostN The URL location of the http://itso14.dev.tivoli.com ame application host. changePersonalInfo.debug A switch to cause the false logging of more detailed messages. changePersonalInfo.exitCl Exit class of application. com.tivoli.tsm.selfcare.Sa ass mpleExit1 changePersonalInfo.devic Device specific class. com.tivoli.tsm.selfcare.Ch e.default angePassword4PC changePersonalInfo.devic Device specific class. com.tivoli.tsm.selfcare.Ch e.PC angePassword4PC addMember.JSPPath The URL location of the /selfcare application JSP files. addMember.mainJSPPage The name of the main JSP AddMemberMain.jsp file. addMember.hostName The URL location of the http://itso14.dev.tivoli.com application host. addMember.debug A switch to cause the false logging of more detailed messages. addMember.exitClass Exit class of application. com.tivoli.tsm.selfcare.Sa mpleExit1 addMember.device.default Device specific class. com.tivoli.tsm.selfcare.Ch angePassword4PC addMember.device.PC Device specific class. com.tivoli.tsm.selfcare.Ch angePassword4PC8.3 Running Subscriber Selfcare The URL to the Subscriber Selfcare applications should be provided as a link to the subscribers home page (assuming the home page is the SP index or welcome page when the subscriber logs on) or another appropriate page as determined by the administrator. When subscribers click on the link, they should reach the Subscriber Selfcare applications page. Chapter 8. Subscriber Selfcare 171
  • 189. Use the URL for each of the Subscriber Selfcare applications. In the demonstration version of Subscriber Selfcare, links to all of the existing Subscriber Selfcare applications are available in intro.htm. To access the Self Care Administration home page, go to the next URL: http://itso14.dev.tivoli.com:15080/intro.htm. The screen as shown in Figure 106 will open. Figure 106. Selfcare initial page In this screen we can choose which task to perform: • Change Password • Change Personal Information • Change Payment Information • Add New Members8.3.1 Changing a subscriber’s password Select Change Password from the main page (Figure 106), which will bring up the screen in Figure 107 on page 173.172 Introducing Tivoli Personalized Services Manager 1.1
  • 190. Figure 107. Logging into SelfcareWhen we introduced the username and password we were authenticated inthe Authentication Server, (please refer to Chapter 6, “Subscriberauthentication and access control” on page 111),and now we are ready tochange the password as is shown in Figure 108.Figure 108. Changing a subscriber’s password Chapter 8. Subscriber Selfcare 173
  • 191. Once this form is completely filled out, click on Change Password to proceed. You will be prompted to confirm this step as shown in Figure 109. Figure 109. Change Password confirmation When we confirm the password a message like the one in Figure 110 on page 174 will be shown. Figure 110. Password successfully changed message8.3.2 Changing personal information This option allows members to change their name, address, phone numbers, and date of birth. From the main page of the Self Care (Figure 106 on174 Introducing Tivoli Personalized Services Manager 1.1
  • 192. page 172) choose Change Personal Information. Type your username andpassword in the Login screen as shown in Figure 107 on page 173. This willbring up a screen to update Personal Information as shown in Figure 111.Figure 111. Change Personal InformationWhen the changes are complete, click on Change Personal Information,which will bring up a confirmation page as shown in Figure 112 on page 176 Chapter 8. Subscriber Selfcare 175
  • 193. Figure 112. Changing Personal Information confirmation When you click on Yes, Change Personal Information, the database is updated with the new data and a message with the new information is displayed.8.3.3 Change payment information Allows members to change their payment type and payment information for each of the types. From the main page of Selfcare (Figure 106 on page 172), choose Change Payment Information. Type your username and password in the Login screen as shown in Figure 107 on page 173. This will bring up a screen to update Payment Information as shown in Figure 113 on page 177.176 Introducing Tivoli Personalized Services Manager 1.1
  • 194. Figure 113. Changing Payment InformationUpdate the information and click Change Payment Information. Aconfirmation screen will be displayed (Figure 114 on page 178), in thisscreen, click Yes, Change Payment Information to confirm the changes. Chapter 8. Subscriber Selfcare 177
  • 195. Figure 114. Changing method of payment confirmation When the changes are accepted a screen with the new values is shown.8.3.4 Adding new members Allows members to add new members to their account. From the main page of Selfcare (Figure 106 on page 172), choose Add New Members. Type your username and password in the Login screen as shown in Figure 107 on page 173. This will bring up a screen to add new members as shown in Figure 115. Fill in all the information of the new member whom you are adding, then press Add a Member. You can look at the Figure 115 on page 179 and Figure 116 on page 180 to see all the fields that need to be filled.178 Introducing Tivoli Personalized Services Manager 1.1
  • 196. Figure 115. Adding a new member (1) Chapter 8. Subscriber Selfcare 179
  • 197. Figure 116. Adding a new member (2) When you click on Add A Member, a confirmation screen is displayed. Click Yes, Add Member, and the information on the new member will be displayed.180 Introducing Tivoli Personalized Services Manager 1.1
  • 198. Chapter 9. Subscriber Personalized Service Environment The TPSM Personalized Service Environment allows each subscriber to customize his or her own home page. The ISP also has the Portal Toolkit, which can be used to develop personalized portal pages.9.1 Portal Toolkit The Portal Toolkit (pTk) is a package that has several important functions: 1. Generation of pages according the specific devices. 2. Allow users to customize their own homepages. This personalization is achieved by user profiling data stored in TPSM. 3. The Administrator creates a set of links that user can add to his or her own homepage. 4. Vertical Services are integrated with pTk, such as Agenda, Calendar, and Address Book. 5. The JSP Portlets Framework allows you to construct portal pages by assembling portlets. A portlet is a servlet that can be invoked as a building block from a JSP or a servlet. 6. Control of the authentication process. 7. The Double Click AdServer Interface, which is a sophisticated way to perform marketing campaigns.9.2 Functionality The following are the main functions of Portal Toolkit.9.2.1 Multi-device Portal There are many kinds of devices that access the internet. Each type has its own requirements about speed, size, and memory, and so must be treated in a different way. This is the target of pTk.9.2.2 User Preferences API The User Preferences API is a set of Java Beans that access the user’s profile and preferences. The TPSM customer can develop a set of personalized JSP’s or servlets that use the personalization API Java Bean to access the user data.© Copyright IBM Corp. 2001 181
  • 199. 9.2.3 Hierarchical repository of referenced links Another feature of the pTk is that the ISP can contain a repository database of links that the portal references. Users can then select the links they want to have associated with their personalized portal page from the repository.9.2.4 Double click AdServer interface Personalization provides a marketing opportunity for ISPs. They can target their subscribers’ portal pages for banner ads and special interest notices.9.2.5 JSP Portlet framework Portlets are specialized servlets that can be included with the portal pages. The applications are like building blocks. There are two different kinds of Portlets: • Structural Portlets Structural Portlets help to structure the layout and content of a portal pages. The structural portlets are as follows: - LayoutSelector Portlet - portletSelector Portlet - Aggregatorportlet - Customizer • Service Portlets Service portlets are “turn-key” applications or services within portal pages. The service portlets are as follows: - LinkSelector portlet - Calendar portlet - Agenda portlet - AddressBook portlet9.2.6 WAP portal The TISM authentication server supports several new modes of authentication that can be used in a WAP environment. • Identification by user-agent IP address (and Radius) • Identification by user MS-ISDN number • Prompting the user for username and password (either by WML form, or a basic HTTP authentication.)182 Introducing Tivoli Personalized Services Manager 1.1
  • 200. These authentication modes can also be tuned for the various service providers environments using the authentication plug-in architecture (authenticators). The TISM portlet framework can generate content according to the type of device currently connected. Each portlet knows the type of device, and selects the content (the Java server page) that fits with it. All the portlet sample pages provided with the pTk support both HTML and WML contents.9.2.7 WES Authentication TPSM 1.1 is one of the components of WebSphere Every Place Suite (WES). TPSM 1.1 can delegate authentication to the WES Authentication Proxy. The current version of WES supports two modes of authentication: • Radius • Basic HTTP Authentication9.2.8 Portal page The portal pages are written by the portal Webmaster. They are Java Server Pages (JSP) belonging to two categories: • Layout JSPs - define the general layout of a page • Portlet JSPs - define the content and design (look and feel) of each portlet The TISM pTk is delivered with a set of sample JSPs. They support both HTML and WML devices. It is possible to modify these JSPs to generate different markup languages belonging to the XML family. Figure 117 on page 184 displays an overview of the portal software architecture. Chapter 9. Subscriber Personalized Service Environment 183
  • 201. Figure 117. Portal software architecture9.3 Portal software architecture Here is an indepth explanation of each of functionality of the Java package portal toolkit.9.3.1 Authentication API The Authentication APIs are a set of Java Classes contained in the authentication.jar library. They allow users to be authenticated, and allow user credentials (username, password, etc) to be retrieved. The following paragraphs explain the different Java Class methods: • Checker.isNotAuthenticated () This method must be invoked at the beginning of each JSP or servlet protected by the TISM Authentication System. If the statement returns true, the user is not authenticated and the JSP/Servlet must return control. <% @ import="com.tivoli.tsm.authentication.*" %> <% if (Checker.isNotAuthenticated(request, response)) return; %> An example of this is shown in the next screen.184 Introducing Tivoli Personalized Services Manager 1.1
  • 202. <%@ page import="com.tivoli.tsm.authentication.*" %> <% if (Checker.isNotAuthenticated(request, response)) return; %> • Checker.getSSOUserName () This GET method can be invoked by a JSP or Servlet protected by the TISM Authentication System to retrieve the connected users username. <% @ import="com.tivoli.tsm.authentication.*" %> <% String name = Checker.getSSOUserName (request); String password = Checker.getSSOPassword (request); %> • Checker.getSSOPassword () This GET method can be invoked by an JSP or Servlet protected by the TISM Authentication System to retrieve the connected users password. <% @ import="com.tivoli.tsm.authentication.*" %> <% String name = Checker.getSSOUserName (request); String password = Checker.getSSOPassword (request);%>9.3.2 User preferences API The user preferences API provides access to the user profiling data stored in TISM RDBM. It only gives access to the data of the authenticated user. The API contains a set of Java Beans that cache the data in memory during the user session, and then persist back to TISM DB at the end of the session. All those Beans inherit from an abstract class; AccessBean.class. 9.3.2.1 AccessBean.class This abstract class is inherited by every pTk access Bean that accesses the TISM data base. Those Beans must override the following methods. It implements HttpSessionBindingListener at the end of user session. The data contained in the AccessBean is persisted back to TISM database (if it has changed). package com.tivoli.tsm.perso; public abstract class AccessBean implements HttpSessionBindingListener; This class has the following methods: • public abstract void read(ServletRequest request) throws PersonalizationException Chapter 9. Subscriber Personalized Service Environment 185
  • 203. This method reads the data of the authenticated user from the TISM database, and populates the AccessBean attributes. If it fails it throws a PersonalizationException. • public abstract void update(ServletRequest request) throws PersonalizationException This method stores the data contained in the AccessBean in the TISM database. This is done only if the data in the AccessBean has been changed since the read() has been invoked. If it fails it throws a PersonalizationException. • public static String getWellKnownName() This method returns the “well-known name” of the AccessBean. Each AccessBean class has a unique well-known name used as a key to store its instance in the user HttpSession. Use that name to avoid storing double instances of the same AccessBean in one user session. • public static AccessBean getBean(ServletRequest request) throws PersonalizationException This method is not in AccessBean.class, but it is implemented by every real sub-classes of access Bean. It retrieves in the user HttpSession the corresponding AccessBean instance, either by its name or type. If no instance exists yet, it creates one new instance and populates its data by calling the read() method. It creates a user session, if none exists, and stores the AccessBean instance as HttpSession attributes. These attributes use the access Bean’s well-known name. The following table is the real AccessBean implementations. They do not provide a detailed description of all of their functions; this can be found in the Java documentation provided with TISM. It only gives clues on the most significant methods. Some access Beans are read only; it is not possible to modify subscription data with the pTk. Table 14 also lists the commodity classes that are handled by the access Beans. Table 14. AccessBean implementations AccessBean Class Description Commodity Classes Read or Read/Write Account Wraps the R residential and business accounts AccountFavouriteLinks Favorite links at Link, LinkEnumeration, R/W account level LinkCategoryEnumerat ion,LinkCategorylxEnu meration186 Introducing Tivoli Personalized Services Manager 1.1
  • 204. AccessBean Class Description Commodity Classes Read or Read/Write AccountMembers All users sharing R the same account AccountNameValuePai Generic properties NameValue, R/W rs at account level NameValueEnumeratio n AddressBook User´s agenda AddressBookEntry, R/W entries AddressBookEntryEnu meration Agenda User´s agenda Appointment, R/W entries AppointmentEnumerati on Device Device profile R FamilyMembers All members of a R family FavouriteLinks User´s favourite Link, LinkEnumeration, R/W links LinkCategoryEnumerat ion, LinkCategorylxEnumer ation NameValuePairs User´s generic NameValue, R/W properties NameValueEnumeratio n ReferencedLinks Singleton that Link, R/W contains the ReferencedLinkEnume hierarchy of ration, referenced links ReferencedLinkReposi tory User User´s information R UserExtensions For future use R UserTopics For future use9.3.2.2 Account.classThis class is an access Bean that wraps the TISM EBILL_ACCOUNTINFOand EBILL_ACCOUNT tables. An account can be either a residential accountor a business account. Business accounts can be organized in a hierarchymapped on the company organization. This access Bean is read only. Chapter 9. Subscriber Personalized Service Environment 187
  • 205. • public void read(ServletRequest request) throws PersonalizationException This method reads the account data of the authenticated user from the TISM database. If it belongs to a hierarchy of accounts, it reads the lowest level account (tree leaf side) of the user. • public Account getParentAccount() throws PersonalizationException, NoResourceFound This method returns the parent account, if any. This is only useful with business accounts that have been organized into a hierarchy. 9.3.2.3 AccountFavoriteLinks.class This class is an access Bean that wraps the PERACCOUNTFAVLINKS table. It can store and retrieve favorite links at each account level. It inherits from FavoriteLinks. For explanations see Section 9.3.2.10, “FavoriteLinks.class” on page 196. package com.tivoli.tsm.perso; public class AccountFavoriteLinks extends FavoriteLinks; 9.3.2.4 AccountMembers.class This class is an access Bean that retrieves the member of an account, i.e. all users sharing the same account. package com.tivoli.tsm.perso; public class AccountMembers extends AccessBean; • public int getMemberNbr() This method returns the number of users sharing that account. • public Account getUserName(int ix) This returns the name of the ixth user of that account. If ix is < 0 or > getMemberNbr(), it returns null. • public Account getUserFirstName(int ix) It returns the first name of the ixth user of that account. If ix is < 0 or > getMemberNbr(), it returns null. 9.3.2.5 AccountNameValuePairs.class This class is an access Bean that wraps the PERACCOUNTNAMEVALUESET table. It can store any generic property (name=value) at each account level. The name=value set model is different188 Introducing Tivoli Personalized Services Manager 1.1
  • 206. from the Java Properties model; it can store several values with the samename. It inherits from NameValuePairs. For an explanation, refer to theNameValuePairs class description.package com.tivoli.tsm.perso;public class AccountNameValuePairs extends NameValuePairs;9.3.2.6 AddressBook.classThis class is an access Bean that stores and retrieves the address bookentries of a user.package com.tivoli.tsm.perso;public class AddressBook extends AccessBean; • public synchronized boolean add(AddressBookEntry) This method adds a new address book entry to the AddressBook AccessBean. It is cached in the JVM memory. It will be stored into the TISM data base when the update() method is invoked, or at the end of the user session. It returns true if it succeeds, and false if it fails, in particular if the entry already exists. • public synchronized boolean add(String category, String firstname, String lastname, String title, String company, String address, String tel1, String tel2, String fax, String email, String url) This is a commodity method to avoid handling AddrssBookEntry objects. It is equivalent to the add(AddrssBookEntry) method. • public synchronized String[] categories() It returns a table containing all the address book categories. This list can be used to display the contacts sorted by categories. • public synchronized boolean del(AddressBookEntry delEntry) These two methods delete a contact from the users address book. It returns true if it succeeded. It returns false if it fails, in particular if the entry does not exist. • public synchronized Enumeration elementsByCategoryAndName(String category, String firstname, String lastname) It returns an Enumeration of AddressBookEntry for all the contacts of that user. That enumeration can be used to display all the contacts of a user. • public Enumeration elements() Chapter 9. Subscriber Personalized Service Environment 189
  • 207. It returns an Enumeration of AddressBookEntry for all the contacts. • public Enumeration elementsByCategory(String category) It returns an Enumeration of AddressBookEntry for all the contacts belonging to that category. • public Enumeration elementsByLastname(StringlastnamePattern) Returns an Enumeration of AddressBookEntry for all the contacts where the lastname field begins with the specified pattern. • public Enumeration elementsByCategoryAndLastname(String category, String lastnamePattern) Returns a list of AddressBookEntry entries selected by category and lastname. • public synchronized boolean modify(AddressBookEntry entry, String newTitle, String newCompany, String newAddress, String newTel1,String newTel2, String newFax, String newEmail, String newUrl) This method modifies an existing AddressBookEntry from the AddressBook AccessBean, with the new values title, company, address, tel1, tel2, fax #, email, and Url. It returns true if it succeeds, and false if it fails, in particular if the entry does not exist. An example is shown in the following screen.190 Introducing Tivoli Personalized Services Manager 1.1
  • 208. <%@ page buffer="none" import="com.tivoli.tsm.perso.* %><HTML><BODY><%// Create, read and populate the AddressBook bean, or just retrieve it from sessionAddressBook addbook = AddressBook.getBean(request);// Add a new contactAddressBookEntry newEntry = new AddressBookEntry ("Business", "John", "Smith", "Mr","IBM","LA", "1111111111", "2222222222", "333333333", "js@ibm.com","http://www.sm.com");addbook.add(newEntry);%><!-- Display all entries --><TABLE border=1 cellspacing=0 cellpadding=4><TR align="center"> <TD> Category </TD> <TD> Lastname / Firstname </TD> <TD> Tel </TD> <TD> Email </TD> <TD> Url </TD></TR><%Enumeration entriesEnum = addbook.elements();while (entriesEnum.hasMoreElements()){ AddressBookEntry abookentry = (AddressBookEntry) entriesEnum.nextElement();%> <TR align="center"> <TD> <%=abookentry.getCategory()%></TD> <TD> <%=abookentry.getLastname()%>, <%=abookentry.getFirstname()%></TD> <TD> <%=abookentry.getTel1()%> </TD> <TD> <%=abookentry.getEmail()%> </TD> <TD> <%=abookentry.getUrl()%> </TD> </TR><%}%></TABLE>.../...</BODY></HTML>9.3.2.7 Appointment.classThis class is a utility class used to add or store Appointments in the Agendaaccess Bean. It is not an access Bean.package com.tivoli.tsm.perso;public class Appointment; Chapter 9. Subscriber Personalized Service Environment 191
  • 209. • public Appointment(Date start, int duration, String description) • public Appointment(long id, Date start, int duration, String description) start is the start date of the appointment. duration must be defined in minutes. • public String displayDate() This method displays the start date of the appointment as a string with the format “yyyy:MM:dd E” • public String displayStart() This method displays the start date of the appointment as a string with the format “HHhmm” • public String displayEnd() This method displays the end date of the appointment (start date + duration) as a string with the format “HHhmm” • public boolean equals(Appointment appointment) Returns true if the current appointment is equal (same start date, duration and description) to appointment parameter. • public java.lang.String getDescription() Returns description of the appointment. • public void setDescription(java.lang.String newDescription) Updates the description of the appointment with newDescription. • public Date getStart() Returns start date of appointment. • public void setStart(java.util.Date newStart) Updates start date of appointment with newStart. • public int getDuration() Returns duration (in minutes) of the appointment. • public void setDuration(int newDuration) Updates duration of the appointment with newDuration. • public int getDurationHour() Converts duration of the appointment in hours (duration in minutes / 60).192 Introducing Tivoli Personalized Services Manager 1.1
  • 210. • public int getDurationMin() Returns remaining duration of the appointment in minutes (duration - (duration /60)*60). • public Date getEnd() Returns the end date of the appointment (start date + duration). • public long getId() Returns the database sequence number of the appointment. • public void setId(long newId) Updates the database sequence number of the appointment with newId. • public int getStartDay() Returns only the day (1- 31) of the start date of the appointment. • public int getStartMonth() Returns only the month (1- 12) of the start date of the appointment. • public int getStartYear() Returns only the year (2000, 2001, etc.) of the start date of the appointment. • public int getStartHour() Returns only the hour (0-23) of the start date of the appointment. • public int getStartMin() Returns only the minute (0-59) of the start date of the appointment. • public boolean isInThePast() Returns true if the appointment is in the past (older that the current date).9.3.2.8 Agenda.classThis class is an access Bean that stores and retrieves the agenda entries of auser.package com.tivoli.tsm.perso;public class Agenda extends AccessBean; • public java.util.Date getStarttime() Returns current date of the agenda. • public void setStarttime(java.util.DatenewDate) Updates current date of agenda with a new date Chapter 9. Subscriber Personalized Service Environment 193
  • 211. • public Enumeration elements(int interval, Calendar date) Returns a AppointmentEnumeration of Appointment of the current date of agenda filtered by the hour (interval=HOUR) or by the day (interval=DAY). That enumeration can be used to display all appointments started between a given hour h and h+1, or started on the day d. • public synchronized boolean add(Appointmentappointment) This method adds a new appointment to the Agenda AccessBean. It is cached in the JVM memory. It will be stored in the TISM database when the update() method is invoked, or at the end of the user session. It returns true if it succeeds, and false if it fails, in particular if the appointment already exists. • public synchronized boolean del(Appointment appointment) This method deletes an existing appointment from the Agenda AccessBean. It will be deleted from the TISM database when the update()method is invoked, or at the end of the user session. • public synchronized void del(long id, java.util.Date start, int duration, String description) This method deletes an existing appointment from the Agenda access Bean. The appointment can be identified by a data base sequence number (id), or, if the id is zero, by its start date, duration, and description. It is more efficient to delete an appointment by its id. • public boolean modify(Appointment appt, java.util.Date date, int duration, String description) This method modifies an existing appointment appt from the Agenda AccessBean with the new values; start date, duration (in minutes), and description. • public int getStartHour() This method gets the latest hour of appointments found in the appointment enumeration given by the elements() methods. • public int getMinHour() This method gets the earliest hour of appointments found in the appointment enumeration given by the elements() methods.194 Introducing Tivoli Personalized Services Manager 1.1
  • 212. • public void updateMinMaxHours(java.util.Datedate) This method updates minimum or maximum hours given by the methods getMinHour() and getMaxHour() of the agenda if necessary. If the hour of date < getMinHour(), then minHour of agenda is updated with this value. If the hour of date > getMaxHour() then maxHour is updated with this value.An example of use of Agenda.class is shown in the following screen. <%@ page buffer="none" import="com.tivoli.tsm.perso.*, java.text.*" %> <HTML><BODY> <% // Create, read and populate Account bean, or just retrieve it from session Agenda agenda = Agenda.getBean(request); %> <TABLE border=1> <TR><TH>Start Date</TH><TH>Appointment description</TH><TH>Duration</TH><TR> <% Enumeration appointments = agenda.elements(); while (appointments.hasMoreElements()) { Appointment appt = (com.tivoli.tsm.perso.Appointment) appointments.nextElement(); %> <TR><TD><%=DateFormat.getDateTimeInstance().format(appt.getStart())%><TD> <TD><%=appt.getDescription()%><TD> <TD><%=Integer.toString(appt.getDurationHour())%>h<%=Integer.toString(appt.getDurat ionMin())%>min<TD> </TR> <% } %> </TABLE> .../... </BODY></HTML>9.3.2.9 FamilyMembers.classThis class is an access Bean that retrieves the members of a family. It inheritsfrom AccountMembers. Refer to AccountMembers for explanations.package com.tivoli.tsm.perso;public class FamilyMembers extends AccountMembers;An example is shown in the following screen. Chapter 9. Subscriber Personalized Service Environment 195
  • 213. !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <%@ page buffer="none" import="com.tivoli.tsm.perso.*,com.tivoli.tsm.perso.components.*,java.util.*,java.tex t.*" %> <jsp:useBean id="myFamily" class="com.tivoli.tsm.perso.FamilyMembers" scope="session" /> <% myFamily.read(request); %> <% //---------------------------------- // Compute style sheet String style[] = pairs.getValues("style"); String css = "default"; if (style.length >= 1) css = style[0]; int nbr = myFamily.getMembersNbr(); %> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <TITLE>&nbsp;TSM Personal page&nbsp;</TITLE> <LINK rel="stylesheet" href="/perso/css/<%=css%>.css" type="text/css"> </head> <BODY text="#000000" link="#000000" vlink="#000000" alink="#000000"> <TABLE border="0" cellspacing="0" cellpadding="0" > <TD><A href="http://www.tivoli.com"><IMG src="/images/tivoli_logo.gif" ALT="Tivoli" border="0" ></A></TD> <TD ><IMG width="1000" height="50" src="/images/spacer.gif" ></TD> </TR> <% for (int ix = 0; ix<nbr ; ix++) { %> <TR><TD>&nbsp;</TD><TD>&nbsp;<%= myFamily.getFirstName(ix)%> </TD></TR> <% } %> </TABLE> .. 9.3.2.10 FavoriteLinks.class This class is an access Bean that stores and retrieves the favorite links of a user. package com.tivoli.tsm.perso; public class FavoriteLinks extends AccessBean;196 Introducing Tivoli Personalized Services Manager 1.1
  • 214. • public synchronized boolean add(Link link) This method adds a new link to the FavoriteLinks AccessBean. It is cached in the JVM memory. It will be stored in the TISM database when the update() method is invoked, or at the end of the user session. It returns true if it succeeded. It returns false if it fails, in particular if the link already exists. • public synchronized boolean add(String category, String title, String URL) This is a commodity method to avoid handling Link objects. It is equivalent to the add(Link) method. • public synchronized void del(Link) Deletes a link from the users favorite links. • public synchronized void del(long id) Each link is identified by a data base sequence number. It is more efficient to delete a link by its id. • public synchronized void delCategory(String category) Deletes all the links belonging to that category. • public Enumeration elements() Returns a LinkEnumeration of Link for all the favorite links of that user. That enumeration can be used to display all the favorite links of a user. • public Enumeration elements(String category) Returns an Enumeration of Link for all the links belonging to that category.An example is shown in the following screen. Chapter 9. Subscriber Personalized Service Environment 197
  • 215. <%@ page buffer="none" import="com.tivoli.tsm.perso.* %> <HTML><BODY> <% // Create, read and populate FavoriteLinks bean, or just retrieve it from session FavoriteLinks links = FavoriteLinks.getBean(request); // Add new links Link link = new Link ("software", "Tivoli", "http://www.tivoli.com"); links.add(link); Link link = new Link ("computers", "IBM", "http://www.ibm.com"); links.add(link); Enumeration myLinks = links.elements(); while (myLinks.hasMoreElement()) { link = (Link) myLinks.nextElement(); %> <H2><%=link.getCategory() + " " + link.getTitle() + " " + link.getUrl() + " " + link.getDeviceType()%> <% } %> .../... </BODY></HTML> 9.3.2.11 NameValuePairs.class This class is an access Bean that stores and retrieves the properties of a user. It wraps the PERNAMEVALUESET table in TISM database. The name=value set model also stores several properties with the same name. package com.tivoli.tsm.perso; public class NameValuePairs extends AccessBean; • public synchronized boolean add(NameValuepair) This method adds a new name=value pair into the NameValuePairs AccessBean. It is cached in the JVM memory. It will be stored in the TISM database when the update() method is invoked, or at the end of the user session. It returns true is it succeeds, and false if it fails, in particular if the link already exists. • public synchronized boolean add(String name, String value) This is a commodity method to avoid handling NameValue objects. It is equivalent to the add(NameValue) method. • public synchronized void del(NameValue) It deletes a NameValue from the users NameValuePairs.198 Introducing Tivoli Personalized Services Manager 1.1
  • 216. • public synchronized void del(long id) Each NameValue is identified by a data base sequence number. It is more efficient to delete a NameValue by its id. • public synchronized void del(String name) Deletes all the name=value pairs having the same name. • public synchronized void del(String name, String value) Deletes one name=value pair with the supplied name and value. • public Enumeration elements() Returns a NameValueEnumeration of NameValue for all properties of that user. • public Enumeration elements(String name) Returns a NameValueEnumeration of NameValue for all the values having that name.An example is shown in the following screen. Chapter 9. Subscriber Personalized Service Environment 199
  • 217. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <%@ page buffer="none" import="com.tivoli.tsm.perso.*,com.tivoli.tsm.perso.components.*,java.util.*,java.tex t.*" %> <% //********************************************************************************** // Code for writting a table with the values of NameValuePairs java bean //********************************************************************************** // Be careful with this variable because it´s usually used for getting values for the // style sheets // Getting the java bean for the NameValuePairs NameValuePairs pairs = NameValuePairs.getBean(request); //Creating a new Pair of Values NameValue p = new NameValue("hobbies","football"); pairs.add(p); // Code for going through the values of the NameValuePairs Enumeration myProperties = pairs.elements(); NameValue prueba; String valor; String nombre; while(myProperties.hasMoreElements()){ prueba = (NameValue)myProperties.nextElement(); valor = prueba.getValue();%> <TR><td> <%=valor%> </td> <%nombre = prueba.getName();%> <td><%=nombre%></td></TR> <% } %> 9.3.2.12 ReferencedLinks.class This class accesses the repository of referenced links stored in the TISM data base. It is instanciated by user session, and contains data on “users navigation” in the tree of referenced links. It is a read only AccessBean. The class that caches the tree of referenced links is ReferencedLinksRepository.class. It is a singleton class. It periodically200 Introducing Tivoli Personalized Services Manager 1.1
  • 218. reloads the referenced links from TISM data base. To update the repository of links, the operator must use TISM director tool. package com.tivoli.tsm.perso; public class ReferencedLinks extends AccessBean; 9.3.2.13 User.class This class is an access Bean that represents the users subscription data. It wraps the TISM tables PIAUTHUSER, PISUBSCRIBER, and PISUBSCRIBERINFO. It is a read only access Bean. package com.tivoli.tsm.perso; public class User extends AccessBean; An example is shown in the following screen. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <%@ page buffer="none" import="com.tivoli.tsm.perso.*,com.tivoli.tsm.perso.components.*,java.util.*,java.tex t.*" %> <% // Retrieve pTk access beans : user and name value pairs // The getBean() method retrieves or instanciates the bean(s), // then it populates it with TISM DB data. User user = User.getBean(request); %> // // In the HTML code // <H2><font color="#FFFFFF">Welcome <%= user.getFirstName() %> <%=user.getLastName()%> <%= user.getAddress1() %> </font></H2>9.4 JSP portlets framework The portlet framework provides the mechanisms to structure JSPs by including building blocks; the portlets. Because the requirements for PC, PDAs, and WAP phones are so different, it is necessary to distinguish the pages delivered to a Web browser from the pages delivered to a WAP browser. The content markup languages, the aggregation model, and the navigation are all different. Chapter 9. Subscriber Personalized Service Environment 201
  • 219. 9.4.1 JSP portlet architecture Figure 118 on page 203 displays the pTk JSP portlets framework architecture. Portlets have the following features: • Portlets inherit from the HttpServlet class. • A portlet has a URL. It can be included in a JSP through the servlet API include and forward mechanisms. • Some portlets can be also called directly by a HTTP request carrying the portlet URL. Such “top level portlets” are also called Desktop or Layout portlets. • A portlet has a state. Each specific portlet implementation can extend the portletSession class to store their specific state. This state is cached in memory for efficient portlet re-painting. • A portlet receives commands passed as parameters of the HTTP request. The portlet framework provides the mechanisms to address commands to a specific portlet within a page. • Portlets are enabled for multi-device rendering. Each portlet dispatches portlet JSPs. The portlet JSPs are responsible for “painting” the area of the page under control of the portlet. The portlet JSPs are dispatched according to: - portlet JSP = f (portlet Command , Device Type) • A portlet uses configuration data. It basically contains the dispatching rules for the portlet JSPs. Portlets can also extend their configuration data to carry portlet specific properties (e.g. data formats for the Calendarportlet). • There are two types of portlets; the structural portlets that help structure pages, and the services portlets.202 Introducing Tivoli Personalized Services Manager 1.1
  • 220. Figure 118. JSP Portlet Architecture9.4.2 Portlet design pattern The portlet framework complies to the traditional servlet/JSP model with a controller, a model, and a view, as shown in Figure 119. Figure 119. Pattern model-view-controller Chapter 9. Subscriber Personalized Service Environment 203
  • 221. A portlet is made of three abstract classes that must be sub-classed by every portlet implementation. See Figure 120. • The Component class inherits from HttpServlet. It is the entry point of the portlet. • The ComponentSession class contains the user session state of the portlet. The ComponentSession contains the business logic of the portlet: the programmer of a new portlet must override the method: ComponentSession::service() : it is the portlet "controller" • The ComponentSession creates the Bean(s) that is (are) transmitted to the portlet JSPs for rendering: it contains the portlet “model.” • The ComponentConfiguration class parses the portlet properties file during the portlet init(). In particular it contains the portlet JSPs dispatching rules: portlet JSP = f (portlet Command, Device Type). It contains all the references to the portlet JSPs. • It can also be sub-classed to implement additional properties specific to each portlet real implementation. A portlet also contains “portlet JSPs” that are the portlet “view.” Figure 120. More detail about the architecture of JSP Portlets204 Introducing Tivoli Personalized Services Manager 1.1
  • 222. 9.4.3 Portlet addressing The TPSM has several sample pages. For HTML devices: • http://hostname:16080/perso/samples/welcome.jsp This is a non personalized HTML page, as you can see in Figure 121 Figure 121. Example of welcome.jsp • http://hostname:16080/perso/home This is a redirection to a personalized page. This page depends on the type of device and if the user was authenticated before or not. See Figure 122, Figure 123 on page 206, and Figure 124 on page 206. Figure 122. /perso/home without an authentication Chapter 9. Subscriber Personalized Service Environment 205
  • 223. Figure 123. /perso/home with authentication Figure 124. /perso/home for WAP 9.4.3.1 Selecting a layout page The LayoutSelector portlet is possible to select a Layout page according to the device type and page index. The structure of the URL is: http://hostname:16080/perso/home?layout=pageindex206 Introducing Tivoli Personalized Services Manager 1.1
  • 224. • hostname: The DNS or IP address of the portal server.• 16080: port for the personalization server• /perso/home: alias for LayoutSelector portlet• layout: instance name of LayoutSelector portlet• pageindex: label defined in the /usr/TivTSM/personal/servlet/properties/com/tivoli/tsm/personal/compone nts/LayoutSelectorComponent.properties for the redirection to the JSP file. See the next screen.####################################################################### Layout Selector Component for TISM pTk# ------------------------------------# The syntax is :# page.<device type>.<component HTTP command>=<JSP URL path>############################################################################################################################################## Pages for HTML devices#######################################################################page./WEB.defaultcmd=/perso/components/layoutselector/homehtml.jsppage./WEB.home=/perso/components/layoutselector/homehtml.jsppage./WEB.addrbook=/perso/components/layoutselector/addrbookhtml.jsppage./WEB.agenda=/perso/components/layoutselector/agendahtml.jsppage./WEB.news=/perso/components/layoutselector/newshtml.jsppage./WEB.logout=/perso/components/layoutselector/logouthtml.jsp######################################################################## Pages for WML devices#######################################################################page./WAP/R380.defaultcmd=/perso/components/layoutselector/homewml.jsppage./WAP/R380.minimize=/perso/components/layoutselector/homewml.jsppage./WAP/NokiaEmul.defaultcmd=/perso/components/layoutselector/homewml.jsppage./WAP/NokiaEmul.minimize=/perso/components/layoutselector/homewml.jsppage./WAP/nokia7110.defaultcmd=/perso/components/layoutselector/homewml.jsppage./WAP/nokia7110.minimize=/perso/components/layoutselector/homewml.jsppage./WAP/R320.defaultcmd=/perso/components/layoutselector/homewml.jsppage./WAP/R320.minimize=/perso/components/layoutselector/homewml.jsp Chapter 9. Subscriber Personalized Service Environment 207
  • 225. 9.4.3.2 Addressing a command to an included portlet Each portlet can receive commands and parameters in the HTTP request (GET or POST). The Figure 125 illustrates the command addressing mechanism. Figure 125. Sending a command and parameters to a portlet in the HTTP request A portlet is included in the page generated from the redirection of http://hostname:16080/perso/home. The portlet contains an instance name that determines the new page’s layout, using the configuration file of the servlet LayoutSelectorComponent. The defined JSP receives a command.9.4.4 Portlet API The portlet API is structured in: • The Component API. It allows to include a portlet within a page (JSP or servlet) • The ComponentSession API. It drives the interactions between a portlet and its portlet JSPs: - to address a command from a JSP to a portlet - to retrieve portlet Beans from the portlet JSPs.208 Introducing Tivoli Personalized Services Manager 1.1
  • 226. 9.4.4.1 Component APIThis static method includes a portlet within a page (servlet or Java ServerPage).package com.tivoli.tsm.perso.components;public abstract class Component extends javax.servlet.http.HttpServlet;The methods that comprise this class are: • public static void Component::include (String componentPath, String componentName, GenericServlet servlet, HttpServletRequest request, HttpServletResponse response) - String componentPath: each portlet is a servlet, and so has a URL path in the application server. - String componentName: each portlet has an instance name. This name is used to address commands to a portlet. - GenericServlet servlet: the basic code of the including servlet or JSP. - HttpServletRequest request: the HTTP request object. - HttpServletResponse response: the HTTP response object.An example of the method follows: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <%@ page buffer="none" import="com.tivoli.tsm.perso.*,com.tivoli.tsm.perso.components.*,java.util.*,java.tex t.*" %> <HTML> ../.. <TABLE border="0" cellspacing="0" cellpadding="0" width="250"> <TR><TD> <!----------- Component selector ---------------------------> <% Component.include("/perso/componentSelectorComponent", "comps", this, request, response); %> </TD></TR> ../..9.4.4.2 ComponentSession APIEach portlet can receive commands that are processed by theComponentSession::service() method. Chapter 9. Subscriber Personalized Service Environment 209
  • 227. The portlet command API provides the means to compute the “href” attribute of a button or control that will address a command to the current portlet. Each portlet JSP needs to retrieve user session Beans (the model) before generating the page content (the view). package com.tivoli.tsm.perso.components; public abstract class ComponentSession implements javax.servlet.http.HttpSessionBindingListener; The methods for the class ComponentSession are: • public void ComponentSession::init(HttpServletRequest request) - HttpServletRequest request : the HTTP request object. This method may be overridden by portlet real implementations. It is invoked by the portlet framework after the ComponentSession object is instanciated, on the 1st user session HTTP request that needs to display that portlet. For portlets that need to access to TISM data base, the init() method usually loads the necessary users preference Java Bean. • public abstract void ComponentSession::service(String command, HttpServletRequest request) throws javax.servlet.ServletException, java.io.IOException - String command: the command addressed to the portlet - HttpServletRequest request: the HTTP request object. This method must be overridden by each portlet real implementation. It contains the portlet “controller”, the process of each command addressed to the portlet, and the preparation of the Beans before the dispatching of the portlet JSPs. For portlets that need to access the TISM data base, the service() method usually loads at the Users preferences Java Beans when the ComponentSession is instanciated. • public String href(String command) - String command: the command addressed to the portlet This method is used by the portlet JSPs to compute the “href” attribute of buttons or controls. Clicking on such a control will send an HTTP request to the current portlet with the parameter componentName=command. This command will be dispatched by the component framework to the portlet instance identified by componentName.210 Introducing Tivoli Personalized Services Manager 1.1
  • 228. • public static ComponentSession getSession(HttpServletRequest request) - HttpServletRequest request: the HTTP request object. This method is used by the portlet JSPs to retrieve the current users ComponentSession instance. This object carries the Beans (the model) with the data that must be rendered by the JSP. It is a common programming idiom to implement simple data directly as attributes of the ComponentSession class, and provide getXxx() accessors. 9.4.4.3 Portlet configuration Each portlet loads a property file at initialization. That property file is parsed by the ComponentConfiguration class. It contains the portlet JSPs dispatching rules: portlet JSP = f (portlet Command, Device Type). These rules are specified by properties with the following syntax: page.<device type>.<command>=<Portlet JSP URL path> For an example, see Section 9.4.3.1, “Selecting a layout page” on page 206.9.5 TPSM portlet library There are two types of portlets delivered with TISM 1.1; structural portlets, and service portlets. Each portlet has specified the specific properties and the interface between it and its portlet JSPs specified: • The list of commands that can be sent from the JSPs controls (buttons) to the portlet • The list of accessors that the JSPs can use to retrieve the “model” data Beans9.5.1 Structural portlets The Structural portlets help structure the layout and content of the portal pages. The Structural portlets are: 1. LayoutSelectorComponent 2. ComponentSelectorComponent 3. Aggregator 4. CustomizorComponent Chapter 9. Subscriber Personalized Service Environment 211
  • 229. 9.5.1.1 LayoutSelectorComponent The LayoutSelectorComponent is not included in a page, but rather invoked by an HTTP request URL. It sends out the correct “layout JSP” that fits the device type. Although the LayoutSelectorComponent is optional, it can be useful with devices such as WAP mobiles because WAP browsers rendering is very critical and must be tuned for different devices. Figure 126 illustrates the use of LayoutSelectorComponent. Figure 126. Use of LayoutSelectorComponent For the configuration of the servlet LayoutSelectorComponent, use the LayoutSelectorComponent.properties, which are described in Section 9.4.3.1, “Selecting a layout page” on page 206. Portlet commands processed by LayoutSelectorComponent For the layout selector, the command indexes the layout pages that are dispatched on the reception of each command. This list is unlimited, and can be extended by the webmaster when the portal site is designed. Table 15 gives a list of commands and layout pages provided with the TISM 1.1 samples. Table 15. List of portlet commands for the LayoutSelectorComponent Commands Description Dispatched Dispatched WML HTML JSP JSP defaultcmd Used when no specific homehtml.jsp homewml.jsp command is addressed home Displays the portal homehtml.jsp homewml.jsp home page212 Introducing Tivoli Personalized Services Manager 1.1
  • 230. Commands Description Dispatched Dispatched WML HTML JSP JSP addrbook Displays a layout page addrbookhtml.jsp that includes the addressbook agenda Displays a layout page agendahtml.jsp that includes the agenda news Displays a layout page newshtml.jsp that includes the news logout Displays a layout page logouthtml.jsp used at logoutClass definitionpackage com.tivoli.tsm.perso.components;public class LayoutSelectorComponent extends LayoutComponent;public class LayoutSelectorComponentSession extendsLayoutComponentSession;9.5.1.2 ComponentSelectorComponentComponentSelectorComponent displays the list of available services to theuser. The user chooses services, and that information is saved in the userprofile. This is used to display, for instance, favorite applications in ahomepage. See examples in Figure 127 on page 214 and Figure 128 onpage 214. Chapter 9. Subscriber Personalized Service Environment 213
  • 231. Figure 127. Example for HTML browsers of ComponentSelectorComponent Figure 128. Example for WAP browsers of ComponentSelectorComponent Portlet configuration file The configuration file used for ComponentSelectorComponent servlet is /usr/TivTSM/personal/servlet/properties/com/tivoli/tsm/perso/components/Co mponentSelectorComponent.properties as shown in the following screen.214 Introducing Tivoli Personalized Services Manager 1.1
  • 232. ####################################################################### Application Selector Component for TISM pTk# ------------------------------------## List of applications managed by the ComponentSelector## The syntax is :# ---------------# application.label.<application name>=<application label># application.icon.<application name>=<application icon URL># application.componenturl.<application name>=<component URL># this parameter is required for components# application.iconclickurl.<application name>=<Click URL for the icon># this parameter is optional : when present, the component icon is clickable# application.devicetype.<application name>=<device_type># where <device_type> = /WEB, /WAP or / for all devices####################################################################### Calendar : Example of application which entry point is a component (servlet)# it is referenced by the URI path of its servlet alias#application.label.calendar=My Calendarapplication.icon.calendar=/images/calendar.gifapplication.componenturl.calendar=/perso/calendarComponentapplication.iconclickurl.calendar=application.devicetype.calendar=/######################################################################## Agenda : Example of application which entry point is a component (servlet)# it is referenced by the URI path of its servlet alias#application.label.agenda=My Agendaapplication.icon.agenda=/images/agenda.gifapplication.componenturl.agenda=/perso/agendaComponentapplication.iconclickurl.agenda=/perso/home?layout=agenda&agenda=maximizeapplication.devicetype.agenda=/######################################################################## Link Selector : Example of application which entry point is a component (servlet)# it is referenced by the URI path of its servlet alias#application.label.links=My Favorite Linksapplication.icon.links=/images/world.gifapplication.componenturl.links=/perso/linkSelectorComponentapplication.iconclickurl.links=application.devicetype.links=/######################################################################## Address book Example of application which entry point is a JSP# It is referenced by the JSP URI path used in a tag <a href="..."></a>#application.label.addressBook=My Address Bookapplication.icon.addressBook=/images/addrbook.gifapplication.componenturl.addressBook=/perso/addressBookComponentapplication.iconclickurl.addressBook=/perso/home?layout=addrbook&addressBook=maximizeapplication.devicetype.addressBook=/ Chapter 9. Subscriber Personalized Service Environment 215
  • 233. ###################################################################### # Example of aggregation content application.label.news=The News application.icon.news=/images/news.gif application.componenturl.news=/perso/news application.iconclickurl.news=/perso/home?layout=home&news=maximize application.devicetype.news=/ ###################################################################### # Example of an external link with macrosubstitution using the users profile # This type of link has no component URL application.label.weather=My Weather application.icon.weather=/images/weather.gif application.componenturl.weather= application.iconclickurl.weather=http://search.weather.yahoo.com/weather/query.cgi? q=*getCity* application.devicetype.weather=/WEB ###################################################################### # Component JSPs : dispatched according to (deviceType, componentCommand) ###################################################################### # Pages for HTML devices # The syntax is : # page.<device type>.<component HTTP command>=<JSP URL path> ###################################################################### # Startup mode: defaultcmd --> maximized for WEB devices page./WEB.defaultcmd=/perso/components/componentselector/myapplihtml.jsp # Minimized page page./WEB.minimize=/perso/components/componentselector/minapplihtml.jsp # Page with my applications page./WEB.maximize=/perso/components/componentselector/myapplihtml.jsp page./WEB.myappli=/perso/components/componentselector/myapplihtml.jsp page./WEB.add=/perso/components/componentselector/myapplihtml.jsp page./WEB.delete=/perso/components/componentselector/myapplihtml.jsp # Page with other available applications page./WEB.customize=/perso/components/componentselector/customapplihtml.jsp ###################################################################### # layouts for WAP devices ###################################################################### # Startup mode for WAP devices : defaultcmd --> minimized page./WAP/R380.defaultcmd=/perso/components/componentselector/myappliwml.jsp page./WAP/R380.minimize=/perso/components/componentselector/minappliwml.jsp page./WAP/R380.maximize=/perso/components/componentselector/maxappliwml.jsp page./WAP/R380.add=/perso/components/componentselector/myappliwml.jsp page./WAP/R380.delete=/perso/components/componentselector/myappliwml.jsp page./WAP/R380.myappli=/perso/components/componentselector/myappliwml.jsp page./WAP/NokiaEmul.defaultcmd=/perso/components/componentselector/myappliwml.jsp page./WAP/NokiaEmul.minimize=/perso/components/componentselector/minappliwml.jsp page./WAP/NokiaEmul.maximize=/perso/components/componentselector/maxappliwml.jsp page./WAP/NokiaEmul.add=/perso/components/componentselector/myappliwml.jsp page./WAP/NokiaEmul.delete=/perso/components/componentselector/myappliwml.jsp page./WAP/NokiaEmul.myappli=/perso/components/componentselector/myappliwml.jsp page./WAP/nokia7110.defaultcmd=/perso/components/componentselector/myappliwml.jsp page./WAP/nokia7110.minimize=/perso/components/componentselector/minappliwml.jsp page./WAP/nokia7110.maximize=/perso/components/componentselector/maxappliwml.jsp page./WAP/nokia7110.add=/perso/components/componentselector/myappliwml.jsp216 Introducing Tivoli Personalized Services Manager 1.1
  • 234. Each service is described in the properties file by the following attributes: • A title: application.label.agenda=My Agenda • An icon URL: application.icon.agenda=/images/agenda.gif • A portlet URL: application.componenturl.agenda=/perso/agendaComponent • An icon click URL: application.iconclickurl.agenda=/perso/home?layout=agenda&agenda=ma ximizeFor external services (with no portlet) the propertyapplication.componenturl.agenda is blank.The icon click URL can be completed dynamically with the users profilingparameters. It uses pre-defined macros between * characters: http://www.yahoo.com/weather?q=*getCity*URL macros definitionThe macros are listed in Table 16.Table 16. Macros for ComponentSelectorComponent Macro Definition Method *getLastName* User.getLastName() *getFirstName* User.getFirstName() *getCity* User.getCity() *getGender* User.getGender() *getXxx* User.getXxx() *Yyy // any property name not starting with NameValuePairs.getValue(Yyy) ‘get’CommandsThe commands are shown in Table 17.Table 17. Commands for ComponentSelectorComponent Commands Description Dispatched Dispatched WML HTML JSP JSP defaultcmd Used when no myapplihtml.jsp myappliwml.jsp specific command is addressed. Chapter 9. Subscriber Personalized Service Environment 217
  • 235. Commands Description Dispatched Dispatched WML HTML JSP JSP minimize Minimizes the minapplihtml.jsp minappliwml.jsp component maximize Maximizes the myapplihtml.jsp maxappliwml.jsp component, and displays the users selection. add Adds a new myapplihtml.jsp myappliwml.jsp application to the users profile, and displays the users selection. delete Deletes an myapplihtml.jsp myappliwml.jsp application from the users profile, and displays the users selection. myappli Displays the users myapplihtml.jsp myappliwml.jsp selection. customize Allows modification customapplihtml.js of the users p selection. Definition package com.tivoli.tsm.perso.components; public class ComponentSelectorComponent extends Component; public class ComponentSelectorComponentSession extends ComponentSession; Methods • public Hashtable getComponents() Returns a Hashtable of ComponentDescription, which is the list of every service available on the portal. ComponentDescription is a utility class that describes a service; URL, title, icon URL, or type. Refer to the pTk Java documentation for a complete description. • public Hashtable getMyComponents() Returns a Hashtable of ComponentDescription, which is the list of every service selected by the current user.218 Introducing Tivoli Personalized Services Manager 1.1
  • 236. 9.5.1.3 AggregatorThe Aggregator is responsible for filtering and aggregating content into apage, such as the head-lines of the portal. An aggregator handles a list ofContents. For each user, that content can be filtered out according to filteringrules specified by the site WebMaster, such as new promotions targetingsome categories of users.The aggregated contents are presented in a JSP selected according to thedevice type. Those JSPs are responsible for “skinning” the aggregatedcontents with the correct mark-up language (HTML, WML, etc). The contentsabstract and detailed texts should not include any markup tags so they aredevice type independent.Portlet configuration fileThe file used for the configuration of this servlet is/usr/TivTSM/personal/servlet/properties/com/tivoli/tsm/perso/components/AggregatorComponent.properties as shown in the following screen.Each content is defined by: • A label: politics • A content abstract defined by its local URL: aggregator.abstract.politics=/perso/samples/news/politics_abstract.txt • A content detail defined by its local URL: aggregator.content.politics=/perso/samples/news/politics_news.txt • An image defined by its URL: aggregator.images.politics=/images/news/clinton.jpgThe content filtering rules are specified in a class which is loaded by name.This class can be defined by the site webmaster to specify any filtering rulesbased on the users profile. This class must implement the Filter API. Itsname is specified in the property: aggregator.filterclass=com.tivoli.tsm.perso.filter.SampleFilterThe component is shown in the following screen. Chapter 9. Subscriber Personalized Service Environment 219
  • 237. ###################################################################### # Aggregator Component for TISM pTk # ------------------------------------ ###################################################################### # # List of contents aggregated # The syntax is : # aggregator.content.<content name>=<URL> # aggregator.abstract.politics=/perso/samples/news/politics_abstract.txt aggregator.content.politics=/perso/samples/news/politics_news.txt aggregator.images.politics=/images/news/clinton.jpg # aggregator.abstract.basketball=/perso/samples/news/basketball_abstract.txt aggregator.content.basketball=/perso/samples/news/basketball_news.txt aggregator.images.basketball=/images/news/basketball.jpg # aggregator.abstract.golf=/perso/samples/news/basketball_abstract.txt aggregator.content.golf=/perso/samples/news/golf_news.txt aggregator.images.golf=/images/news/golf.jpg # aggregator.abstract.soccer_1=/perso/samples/news/soccer_abstract.txt aggregator.content.soccer_1=/perso/samples/news/soccer_news.txt aggregator.images.soccer_1=/images/news/soccer.jpg # aggregator.abstract.soccer_2=/perso/samples/news/euro2000_abstract.txt aggregator.content.soccer_2=/perso/samples/news/euro2000_news.txt aggregator.images.soccer_2=/images/news/euro2000.jpg # ###################################################################### # Class to be provided to filter the contents to be displayed to a user # The SampleFilter works with the samples provided with TISM ###################################################################### # aggregator.filterclass=com.tivoli.tsm.perso.filter.SampleFilter # ###################################################################### # Pages for HTML devices ###################################################################### # # news aggregator page page./WEB.defaultcmd=/perso/components/aggregator/newsabstract.jsp page./WEB.minimize=/perso/components/newsabstract.jsp page./WEB.normal=/perso/components/aggregator/newsabstract.jsp page./WEB.maximize=/perso/components/aggregator/newsfull.jsp page./WEB.oneitem=/perso/components/aggregator/onenews.jsp # ###################################################################### # Pages for R380 WAP device ###################################################################### page./WAP/R380.defaultcmd=/perso/components/aggregator/minnewswml.jsp page./WAP/R380.minimize=/perso/components/aggregator/minnewswml.jsp page./WAP/R380.maximize=/perso/components/aggregator/newswml.jsp page./WAP/R380.oneitem=/perso/components/aggregator/onenewswml.jsp #220 Introducing Tivoli Personalized Services Manager 1.1
  • 238. page./WAP/NokiaEmul.defaultcmd=/perso/components/aggregator/minnewswml.jsp page./WAP/NokiaEmul.minimize=/perso/components/aggregator/minnewswml.jsp page./WAP/NokiaEmul.maximize=/perso/components/aggregator/newswml.jsp page./WAP/NokiaEmul.oneitem=/perso/components/aggregator/onenewswml.jsp # .../... page./WAP/nokia7110.defaultcmd=/perso/components/aggregator/minnewswml.jsp page./WAP/nokia7110.minimize=/perso/components/aggregator/minnewswml.jsp page./WAP/nokia7110.maximize=/perso/components/aggregator/newswml.jsp page./WAP/nokia7110.oneitem=/perso/components/aggregator/onenewswml.jsp # .../...Portlet commands processed by Aggregator.classThe commands are shown in Table 18.Table 18. Commands for Aggregator.class Commands Description Dispatched DIspatched WML HTML JSP JSP defaultcmd Used when no newsabstract.jsp minnewswml.jsp specific command is addressed. minimize Minimizes the newsabstract.jsp onenewswml.jsp component. normal Maximizes the newsabstract.jsp component, and displays the list of news abstracts filtered out for this user. maximize Maximizes the newsfull.jsp newswml.jsp component, and displays the list of news details filtered out for this user. oneitem Maximizes the onenews.jsp onenewswml.jsp component, and displays one news details Chapter 9. Subscriber Personalized Service Environment 221
  • 239. Definition package com.tivoli.tsm.perso.components; public class Aggregator extends Component; public class AggregatorComponentSession extends ComponentSession; Methods • public ContentDescription getContent(String contentName) Returns the ContentDescription of one news item indexed by its content name. The ContentDescription is a utility class that describes a content: URL, title, icon URL, type,... Refer to the pTk java documentation for a complete description. • public Enumeration getContentEnumeration(HttpServletRequest request) Returns an Enumeration of ContentDescription filtered out with the current user profile. The users profile is retrieved in the request context.9.6 Service portlets Service portlets are “turn-key” applications or services within portal pages. The service portlets are as follows: • LinkSelector portlet • Calendar portlet • Agenda portlet • AddressBook portlet • Customizor portlet • Customer can also implement their own service portlets9.6.1 Customizor Portlet The Customizor Portlet allows you to capture parameters from the HTTP requests, validate them, and store them into the users profile data. In the samples provided with TISM, it is used to present customization forms to the user: to select his favorite topics, and his desktop theme. Portlet Configuration file /usr/TivTSM/personal/servlet/properties/com/tivoli/tsm/perso/components/Cu stomizorComponent.properties is shown in the following screen.222 Introducing Tivoli Personalized Services Manager 1.1
  • 240. ####################################################################### Customizor Component for TISM pTk# ------------------------------------############################################################################################################################################## customizable parameter rules :# param.<param name>=<checkings># <checkings>=<value>,<parameter>,...# value 1st param 2nd param# --------- ------------- -------------# any min length max length# letter min length max length# digit min length max length# value params# --------- --------------------------------------------# list allowed words list separated by ,# Words will be compared with String.equalsIgnoreCase() method######################################################################param.style=list,default,clouds,paper,bricks,greenparam.topics=list,politics,soccer,golf,basketball####################################################################### Layout rules :# page.<device type>.<component HTTP command>=<JSP URL path>############################################################################################################################################# Pages for HTML devices####################################################################### Minimized pagepage./WEB.defaultcmd=/perso/components/customizor/mincustomhtml.jsppage./WEB.minimize=/perso/components/customizor/mincustomhtml.jsp#page./WEB.maximize=/perso/components/customizor/maxcustomhtml.jsppage./WEB.save=/perso/components/customizor/maxcustomhtml.jsp#page./WEB.topics=/perso/components/customizor/topicshtml.jsp#page./WEB.themes=/perso/components/customizor/themehtml.jsp######################################################################## layouts for Nokia 7110 WML device############################################################################################################################################## Pages for WML devices######################################################################## .../... Chapter 9. Subscriber Personalized Service Environment 223
  • 241. List of portlet commands processed by Customizor Table 19 shows the portlet commands. Table 19. Commands for Customizor Portlet Commands Description Dispatched Dispatched WML HTML JSP JSP defaultcmd Used when no mincustomhtml.jsp specific command is addressed. minimize Minimizes the mincustomhtml.jsp component maximize Maximizes the maxcustomhtml.jsp component save Validates, and maxcustomhtml.jsp saves a parameter whose name is defined in the properties file. Then it displays the maximized view. topics Not processed by topicshtml.jsp the service() method. It displays the topics selection form. themes Not processed by themehtml.jsp the service() method. It displays the themes selection form. Class definition package com.tivoli.tsm.perso.components; public class CustomizorComponent extends Component; public class CustomizorComponentSession extends ComponentSession; Methods • public boolean exists(String name, String value) Checks if a (name,value) pair exists in the users profile. This method can be used in a portlet JSP to propose selections with check boxes. Choices224 Introducing Tivoli Personalized Services Manager 1.1
  • 242. already selected by the user in a previous session, are already checked in the proposed selection. • public String getParameterCheckings(String parmName) It returns the edit checkings specification String specified in the properties file. e.g.:"list,default,clouds,paper,bricks,green" It can be used in a portlet JSP to retrieve and present the list of possible values for a selection.9.6.2 LinkSelector Portlet The LinkSelector allows you to display and manage the links referenced in the portal and saved in the user profile. The administrator of the portal uses the TISM director tool to register the links referenced by the portal. These links are sorted in a hierarchy of categories and stored in the TISM data base. The LinkSelector Portlet can be toggled with different views: • The hierarchy of links referenced by the portal. The user can navigate in the categories, display the links per category, and save some of them into his or her own profile. • The user favorite links; he or she can display the links, ordered by categories, and delete or modify them. • Link input form to save new links into user profile; this is for links not referenced in the portal database. The links contained in the data base (both user favorite links, and portal referenced links) can contain “macros.” A macro is a symbol that is substituted at run-time with the values of the user profile. The macros definition is specified here. Portlet configuration file /usr/TivTSM/personal/servlet/properties/com/tivoli/tsm/perso/components/Lin kSelectorComponent.properties Chapter 9. Subscriber Personalized Service Environment 225
  • 243. Portlet commands processed by LinkSelectorComponent.class The commands are listed in Table 20. Table 20. Commands for LinkSelectorComponent.class Command Description Dispatched HTML Dispatched WML JSP JSP defaultcmd Used when no specific minlinkhtml.jsp minlink7110.jsp command is addressed. minimize Minimizes the minlinkhtml.jsp minlink7110.jsp component reflink Displays the hierarchy of reflinkhtml.jsp reflink7110.jsp referenced links back Goes up in the hierarchy reflinkhtml.jsp reflink7110.jsp of referenced links copylink Saves one link from the reflinkhtml.jsp reflink7110.jsp referenced links to the personal favorite links addlink Adds one new link to the favlinkhtml.jsp favlink7110.jsp personal favorite links favlink Displays the users favlinkhtml.jsp favlink7110.jsp favorite links dellink Deletes one link from the favlinkhtml.jsp favlink7110.jsp personal favorite links createlink Displays a form to create createfavlinkhtml.jsp a new link creproplink Displays a form to create createlink7110.jsp a new link Class definition package com.tivoli.tsm.perso.components; public class LinkSelectorComponent extends Component; public class LinkSelectorComponentSession extends ComponentSession; Methods • public Enumeration getCatEnum() Returns an Enumeration of String, which is the list of categories at the current level in the referenced links hierarchy. For each user session, there is a server-side context of where the user is in the hierarchy.226 Introducing Tivoli Personalized Services Manager 1.1
  • 244. • public Enumeration getCatIxEnum() Returns an Enumeration (LinkCategoryIxEnumeration), which is the list of categories indexes at the current level in the referenced links hierarchy. It is more efficient to access categories by their indexes than by their name. • public String getCurrentCategory() Returns the name of the current category name for the user context in the referenced links repository. • public Enumeration getLinkEnum() Returns the Enumeration of referenced links of the current category for the user context in the referenced links repository. • public String[] getFavCategories() Returns the list of category names for the users favorite links. • public java.util.Enumeration getFavLinkEnum() Returns the Enumeration of Favorite Links for the current user. • public java.util.Enumeration getFavLinkEnum(String category) Returns the Enumeration of Favorite Links of a given category for the current user. • public FavoriteLinks getFavLinks(HttpServletRequest request) throws PersonalizationException Returns the FavoriteLinks Java Bean.9.6.3 Calendar Portlet The purpose of this portlet is to display the current month or week calendar. The user can scroll up and down the months, or click on a day to display the day’s appointments. Portlet configuration file /usr/TivTSM/personal/servlet/properties/com/tivoli/tsm/perso/components/Ca lendar Component.properties is shown in the next screen. Chapter 9. Subscriber Personalized Service Environment 227
  • 245. ###################################################################### # Calendar Component for TSM pTk # ------------------------------------ # The syntax is : # page.<device type>.<component HTTP command>=<JSP URL path> # # <device type> is specified in the device profile property "device.type" # ###################################################################### # Calendar parameters calendar.date.format=yyyy.MM.dd calendar.time.format=hh:mm:ss calendar.month.format=MMMM yyyy # ###################################################################### # Component start mode = minimized | maximized ###################################################################### # start.mode=maximized # ###################################################################### # layouts for HTML devices ###################################################################### page./WEB.defaultcmd=/perso/components/calendar/mincalendarhtml.jsp page./WEB.minimize=/perso/components/calendar/mincalendarhtml.jsp page./WEB.maximize=/perso/components/calendar/monthhtml.jsp page./WEB.currmonth=/perso/components/calendar/monthhtml.jsp page./WEB.nextmonth=/perso/components/calendar/monthhtml.jsp page./WEB.prevmonth=/perso/components/calendar/monthhtml.jsp page./WEB.currweek=/perso/components/calendar/weekhtml.jsp page./WEB.nextweek=/perso/components/calendar/weekhtml.jsp page./WEB.prevweek=/perso/components/calendar/weekhtml.jsp # ###################################################################### # layouts for Nokia 7110 WML device ###################################################################### page./WAP/nokia7110.defaultcmd=/perso/components/calendar/mincalendar7110.jsp page./WAP/nokia7110.minimize=/perso/components/calendar/mincalendar7110.jsp page./WAP/nokia7110.maximize=/perso/components/calendar/monthwml7110.jsp page./WAP/nokia7110.currmonth=/perso/components/calendar/monthwml7110.jsp page./WAP/nokia7110.nextmonth=/perso/components/calendar/monthwml7110.jsp page./WAP/nokia7110.prevmonth=/perso/components/calendar/monthwml7110.jsp page./WAP/nokia7110.week=/perso/components/calendar/weekwml7110.jsp # ###################################################################### # layouts for NokiaEmul WML device ###################################################################### page./WAP/NokiaEmul.defaultcmd=/perso/components/calendar/mincalendar7110.jsp page./WAP/NokiaEmul.minimize=/perso/components/calendar/mincalendar7110.jsp page./WAP/NokiaEmul.maximize=/perso/components/calendar/monthwml7110.jsp page./WAP/NokiaEmul.currmonth=/perso/components/calendar/monthwml7110.jsp page./WAP/NokiaEmul.nextmonth=/perso/components/calendar/monthwml7110.jsp page./WAP/NokiaEmul.prevmonth=/perso/components/calendar/monthwml7110.jsp page./WAP/NokiaEmul.week=/perso/components/calendar/weekwml7110.jsp228 Introducing Tivoli Personalized Services Manager 1.1
  • 246. The following properties (see the next screen) specify the date and timeformat. They must comply with java.text.SimpleDateFormat specifications. # Calendar parameters calendar.date.format=yyyy.MM.dd calendar.time.format=hh:mm:ss calendar.month.format=MMMM yyyyPortlet commands processed by CalendarTable 21 lists the commands.Table 21. Commands for Calendar Command Description Dispatched Dispatched WML HTML JSP JSP defaultcmd Used when no mincalendarhtml.js mincalendar7110.j specific command p sp is addressed. minimize Minimizes the mincalendarhtml.js mincalendar7110.j component p sp maximize Opens the month monthhtml.jsp monthwml7110.jsp view currmonth Resets the monthhtml.jsp monthwml7110.jsp calendar to the current month nextmonth Scrolls to the next monthhtml.jsp monthwml7110.jsp month view prevmonth Scrolls to the monthhtml.jsp monthwml7110.jsp previous month view week Opens the week weekwml7110.jsp view (WAP only)Class definitionpackage com.tivoli.tsm.perso.components;public class CalendarComponent extends Component;public class CalendarComponentSession extends ComponentSession; Chapter 9. Subscriber Personalized Service Environment 229
  • 247. Methods • public String getCurrentDate() Returns the current date formatted according to the Calendar properties file. • public String getCurrentTime() Returns the current time formatted according to the Calendar properties file. • public int getRollingMonthWeekNbr() Returns the number of weeks in the current month. • public int getDayOfMonth(int week, int dayOfWeek) Returns the position of the day in the month; 1st day of Month, 2nd day of Month,...31st day of Month. If the specified day does not belong to the current rolling month, it returns a negative value (a calendar month view often starts with the last days of the previous month, or ends with the first days of the next month). • public long getTime(int day) Returns the Time (number of ms since January 1, 1970) of the specified day of Month for the current rolling month.9.6.4 Agenda Portlet This portlet works in conjunction with the Calendar portlet and supports concurrent appointments. It displays user appointments for one day. The user can also create, update, and delete appointments. Each appointment entry contains a title, description, start time, and duration. A garbage collector exists to remove outdated appointments automatically. Portlet configuration file /usr/TivTSM/personal/servlet/properties/com/tivoli/tsm/perso/components/Ag endaComponent.properties The following properties specify the date and time format. It must comply with java.text.SimpleDateFormat specifications. ################################################# # Agenda Component for TSM pTk ################################################# # Agenda parameters # date format to display agenda.date.format=yyyy.MM.dd E230 Introducing Tivoli Personalized Services Manager 1.1
  • 248. The following properties specify the default minimum and maximum hours todisplay in the agenda view.If an appointment starts before or after these minimum and maximum hours,the minimum and maximum values will be updated and the appointmentdisplayed. ################################################# #min and max hours to display in agenda agenda.min.hour=8 agenda.max.hour=18The following properties specify the garbage collector properties. Theperiodicity defines when the garbage collector must be activated in order todelete elder appointments. The appointment validity time is defined by thelast properties. In this case, every six months the garbage collector islaunched to delete all appointments whose start dates are more than sixmonths ago. ############################## # For Garbage Collector ############################## #GC periodicity (in months) agenda.gc.periodicity=6 #appointment validity time (in months) agenda.gc.apptvaliditytime=6Portlet commands processed by AgendaThe commands are shown in Table 22.Table 22. Commands for Agenda Command Description Dispatched Dispatched WML HTML JSP JSP defaultcmd Used when no specific displayAppthtml.js displayApptwml.jsp command is addressed. p minimize Minimizes the minAgendahtml.jsp minAgendawml.jsp component maximize Opens all appointments displayAppthtml.js displayApptwml.jsp of the current date of the p agenda addapptentry Prepares information to addAppthtml.jsp addApptwml.jsp add a new appointment Chapter 9. Subscriber Personalized Service Environment 231
  • 249. Command Description Dispatched Dispatched WML HTML JSP JSP updateappten Prepares information to addAppthtml.jsp updateDelApptwml try update or delete an 7110.jsp existing appointment delapptentry Prepares information to delAppthtml.jsp displayApptwml.jsp delete an existing appointment addappt Adds a new resultAgendahtml.j displayApptwml.jsp appointment sp updateappt Updates an existing resultAgendahtml.j displayApptwml.jsp appointment sp delappt Deletes an existing displayAppthtml.js displayApptwml.jsp appointment p resOK displayAppthtml.js p resKO displayAppthtml.js p nextday Changes the start date displayAppthtml.js displayApptwml.jsp of agenda to the next day p and updates the agenda access Bean with the appointments of this new date previousday Changes start date of displayAppthtml.js displayApptwml.jsp agenda to the previous p day and updates the agenda access Bean with the appointments of this new date Class definition package com.tivoli.tsm.perso.components; public class AgendaComponent extends Component; public class AgendaComponentSession extends ComponentSession;232 Introducing Tivoli Personalized Services Manager 1.1
  • 250. Methods • public com.tivoli.tsm.perso.Agenda getAgenda() Returns the agenda access Bean associated with the session. • public java.util.Enumeration elements(int hour) This method returns an enumeration of appointments which have their start time between hour and hour+1. • public String getDate() Returns the current date of the agenda as a string. The format of the date is defined in the configuration file. • public int getStartDay() Returns the current day of the agenda (day between 1 to 31). • public int getStartMonth() Returns the current month of the agenda (day between 1 to 12). • public int getStartYear() Returns the current year of the agenda (1999, 2000, 2001, etc.). • public Calendar getStartTime() Returns the current date of the agenda beginning at hour 00h00min00s. • public int getMaxHourConfig() • public void setMaxHourConfig(int newMaxHourConfig) Returns or sets the maximum hour to display in the agenda defined in the configuration file. • public int getMinHourConfig() • public void setMinHourConfig(int newMinHourConfig) Returns or sets the minimum hour to display in the agenda defined in the configuration file. • public int getMaxHour() It returns the maximum hour displayed in the agenda. It can be bigger than the maximum hour defined in the configuration file if appointments start after the maximum defined in the configuration file. • public int getMinHour() Returns the minimum hour displayed in the agenda. It can be smaller than the minimum hour defined in the configuration file if appointments start before the minimum defined in the configuration file. Chapter 9. Subscriber Personalized Service Environment 233
  • 251. • public boolean isCommandValid() Returns true if the current command is valid. It could be false by example if the user tries to add an appointment in the past; the command is not validated and the new appointment is not added. • public java.lang.String getPageCommand() A same page can be used to add, update or delete an appointment. This method returns the current command.9.6.5 AddressBook Portlet This portlet works with the WebMail (not part of TISM, but can be provided as a service offering) application to save and retrieve e-mail addresses automatically. The main features are: • An entry contains a first name, last name, telephone and fax numbers, e-mail address, and a type (personal, business, etc) • Display sorted by entry Name (A tab, B tab, Z tab), or entry types (business, personal, etc.) • Creation, modification, and deletion of entries • Integrated with WebMail application. A click on a name can trigger a mailto reference to automatically send mail to that person. From the WebMail, a sender email address can be saved automatically • Multi-rendering enabled: HTML, WML, XML Portlet configuration file /usr/TivTSM/personal/servlet/properties/com/tivoli/tsm/perso/components/Ad dressBookComponent.properties No specific properties for AddressBookComponent were changed in the default file. Portlet commands processed by AddressBook Table 23 shows the portlet commands. Table 23. Commands for AddressBook Command Description Dispatched Dispatched WML HTML JSP JSP defaultcmd Used when no findaddrbookentrie minaddressbookw command shtml.jsp ml.jsp specified.234 Introducing Tivoli Personalized Services Manager 1.1
  • 252. Command Description Dispatched Dispatched WML HTML JSP JSPminimize Minimizes the findaddrbookentrie minaddressbookw component shtml.jsp ml.jspmaximize Opens all the displayaddressboo displayaddressboo address book khtml.jsp kwml.jsp entriessearch Allows searching findaddrbookentrie for an entry by the swml.jsp first and lastname characterssetfilter Applies a filtering displayaddressboo displayaddressboo command by khtml.jsp kwtml.jsp lastnameaddentry Prepares manageaddrbooke addaddressbooken information to add ntrieshtml.jsp trywml.jsp to a new contact.delupdateentry Prepares manageaddrbooke manageaddrbooke information to ntrieshtml.jsp ntrieswml.jsp update or delete an existing entryaddcommand Adds a new contact manageaddrbooke addaddressbooken ntrieshtml.jsp trywml.jspdelupdatecomman Updates or deletes displayaddressboo displayaddressbood an existing entry khtml.jsp kwml.jspendmanageentry Terminates a displayaddressboo displayaddressboo sequence of add khml.jsp kwtml.jsp contacts (allow to update the address book entries in DB)cancelmanageentr It cancels an add, displayaddressbooy update or delete khtml.jsp command Chapter 9. Subscriber Personalized Service Environment 235
  • 253. Class definition package com.tivoli.tsm.perso.components; public class AddressBookComponent extends Component; public class AddressBookComponentSession extends ComponentSession; Methods • public com.tivoli.tsm.perso.AddressBook getAddressBook() Returns the address book access Bean associated with the session. • public java.util.Enumeration elements() This method returns an enumeration of address book entries. • public String getCategoryFilter() Returns a string with the category used for a filtering display (returns “All” if no category filter selected). • public String getLastnameFilter() Returns a string with the lastname pattern used for a filtering display (returns “All” if no lastname filter selected). • public com.tivoli.tsm.perso.AddressBookEntry getCurrentEntry() Returns the last address book entry added, updated, or deleted. • public java.lang.String getPageCommand() The same page can be used to add, update, or delete an address book entry. The page command allows you to differentiate the treatment. This method returns this command. • public boolean isLastCommandValid() Returns true if the current command is valid, and false if it fails (for example, if the user tries to add an entry that already exists).9.7 Filter API The filter API allows the site WebMaster to define content filtering rules. These rules are expressed in Java, and use the users profiling information. To define such rules, it is necessary to write a class that implements the com.tivoli.tsm.perso.filter.Filter interface. A sample Filtering class is provided in com.tivoli.tsm.perso.filter.SampleFilter as shown in the following screen. Interface definition package com.tivoli.tsm.perso.filter;236 Introducing Tivoli Personalized Services Manager 1.1
  • 254. public interface Filter;Methods • public boolean isIncluded(String contentName, HttpServletRequest request) For each content item defined in the Aggregator property file, the Aggregator invokes the Filter API to determine if that content must be presented to that user. The first parameter contentName is the label of the content as defined in the Aggregator property file. The second parameter request gives access to the users profiling information. Chapter 9. Subscriber Personalized Service Environment 237
  • 255. package com.tivoli.tsm.perso.filter; import javax.servlet.http.*; import com.tivoli.tsm.perso.*; import com.tivoli.tsm.authentication.*; /** * It is a sample Filter implementation. * It filters the contents aggregation for the sample news : * - the golf news * - the soccer news * - the basketball news * Date de création : (06/06/00 13:35:35) * @author : Administrator */ public class SampleFilter implements Filter { public SampleFilter() { super(); } /** * Sample filtering function. */ public boolean isIncluded(String contentName, javax.servlet.http.HttpServletRequest request) { // It retrieves the NameValue pairs for the connected user // and checks if that contentName matches with one of the topics selected by the user // with the Customizor portlet try { NameValuePairs nameValues = NameValuePairs.getBean(request); // Isolate the prefix of content name (e.g. soccer_1 --> soccer) int pos = contentName.indexOf(_); if (pos >= 0) contentName = contentName.substring (0, pos); // Check that content topic is selected in user profile if (nameValues.exists("topics", contentName)) return true; } catch (Exception ex) { Recorder.slog(ex); } return false; } }9.8 Profiler API It is often necessary to change the personalization rules to define new promotions, banners, content targeted according to users profile, time of the day, day of the week, etc. This is possible with the Profiler API.238 Introducing Tivoli Personalized Services Manager 1.1
  • 256. It allows the portal Webmaster to define arbitrary rules that are evaluated atthe beginning of each user session.Typically those rules can: • Load the users profiling data. • Test any users profile values, and other values provided by the JDK such as time and date. • Perform dynamic users grouping; if (condition), then user belongs to a group. • Compute and save new properties in the users profiling data. These properties can then be used to personalize pages.Those rules can be changed at any time. They are expressed in Java in aclass that implements the Profiler interface. That class is loaded by name bythe authentication Checker; its name is specified in the property files:Web devices:/usr/TivTSM/personal/servlet/properties/com/tivoli/tsm/authentication/DefaultAuthenticator. propertiesWAP devices:/usr/TivTSM/personal/servlet/properties/com/tivoli/tsm/authentication/WapAuthenticator.propertiesThe property is:authentication.profiler.class=com.tivoli.tsm.perso.filter.SampleProfilerA sample Profiling class is provided incom.tivoli.tsm.perso.filter.SampleProfiler as shown in the next screen.Interface definitionpackage com.tivoli.tsm.perso.filter;public interface Profiler;Methodspublic void createDynamicProfile(javax.servlet.http.HttpServletRequestrequest); Chapter 9. Subscriber Personalized Service Environment 239
  • 257. This method is called at each users session start. The users profiling data is accessible through the request object. package com.tivoli.tsm.perso.filter; import java.util.*; import javax.servlet.http.*; import com.tivoli.tsm.perso.*; import com.tivoli.tsm.authentication.*; /** * It is a sample Filter implementation. * It filters the contents aggregation for the sample news : * - the golf news * - the soccer news * - the basketball news * Date de création : (06/06/00 13:35:35) */ public class SampleProfiler implements Profiler { /** * This sample Profiler applies rules to group users, * according to their age and gender. It creates 3 groups : * kids, women, men * Date de création : (10/07/00 18:58:24) * @param param javax.servlet.http.HttpServletRequest */ public void createDynamicProfile(javax.servlet.http.HttpServletRequest request) { try { User user = User.getBean(request); NameValuePairs pairs = NameValuePairs.getBean(request); pairs.del("group"); long now = new Date().getTime(); long birth = user.getBirthDate().getTime(); long age = (now - birth) / (31557600 * 1000); String gender = user.getGender(); if ((age < 18)) { pairs.add("group", "kid"); } else if (gender.equals("F")) { pairs.add("group", "woman"); } else { pairs.add("group", "man"); } } catch (PersonalizationException ex) { } } }240 Introducing Tivoli Personalized Services Manager 1.1
  • 258. 9.9 Example of personalization As you have seen, there is two different ways to develop depending on the type of code that you have to produce, so we have two different examples for internet and wireless. The wireless sample has been developed for a system without a gateway. This is important because the gateway “transforms” the code so some that works with a system without a gateway might not work for a gateway system, and furthermore different gateways may have different compatibility with the same code. You have to be conscious about that when you develop for a Wireless World.9.9.1 Internet world This example is a car club, where the subscribers receive car news, agendas, calendars, and other services. The subscriber must log on, and once the system knows who it is, the system displays her/his homepage. This homepage can be personalized by the user. 9.9.1.1 Implementation This section is going to explain how to perform each of the requirements in the code and configuration files. We will begin with the JSP codification. Authentication The subscriber when arrives at the homepage, we want the system to recognize who he or she is. If the system doesn’t recognize the subscriber, he or she should be redirected to the authentication server. The following screen shows you how to do it. <%@ page import="com.tivoli.tsm.authentication.*" %> <% if (Checker.isNotAuthenticated(request, response)) return; %> Figure 129. Example of redirection to authentication server Now the system knows who the user is and how the subscriber likes his/her homepage. Searching Yahoo This is a simple code in HTML. See the following screen. Chapter 9. Subscriber Personalized Service Environment 241
  • 259. <TR ID=componentbar ><TD align="center"><font color="white">Search</font></TD></TR> <TR ID=componentbckground ><TD> <FORM method=get action="http://search.yahoo.com/bin/search" target="_blanck"> <INPUT type=text name="p" size=15 height=17 maxlength=64> <INPUT type=submit value=go></TD> </FORM> </TD></TR>. Customizor This TPSM component is used for customizing the background and the topics or themes that you want to receive in the news. See Figure 130. Figure 130. Customizor component The code to include in the home page is shown in the following screen. <TR ><TD align="center">&nbsp;</TD></TR> <TR><TD bgcolor="black"> <% Component.include("/perso/customizorComponent", "custom", this, request, response); %> </TD></TR> With this step, you will have the component in the homepage. If you want to customize the topics for the news that you want to offer or the themes for the background, you will have to perform the next steps: Customizing the topics The topics are specified in the properties file, /usr/TivTSM/personal/servlet/com/tivoli/tsm/perso/components/CustomizorC omponent.properties In the bold line in the next screen, you specify the different themes that you want to offer.242 Introducing Tivoli Personalized Services Manager 1.1
  • 260. ###################################################################### # Customizor Component for TISM pTk # ------------------------------------ ###################################################################### # ###################################################################### # customizable parameter rules : # param.<param name>=<checkings> # <checkings>=<value>,<parameter>,... # # value 1st param 2nd param # --------- ------------- ------------- # any min length max length # letter min length max length # digit min length max length # # # value params # --------- -------------------------------------------- # list allowed words list separated by , # Words will be compared with String.equalsIgnoreCase() method # ###################################################################### # param.style=list,default,clouds,paper,bricks,green param.topics=list,buy,finance,research,maintain # ###################################################################### # Layout rules : # page.<device type>.<component HTTP command>=<JSP URL path> ###################################################################### # ###################################################################### # Pages for HTML devices ###################################################################### # # Minimized page page./WEB.defaultcmd=/perso/components/customizor/mincustomhtml.jsp page./WEB.minimize=/perso/components/customizor/mincustomhtml.jsp # page./WEB.maximize=/perso/components/customizor/maxcustomhtml.jsp page./WEB.save=/perso/components/customizor/maxcustomhtml.jsp # page./WEB.topics=/perso/components/customizor/topicshtml.jsp # page./WEB.themes=/perso/components/customizor/themehtml.jsp # ###################################################################### # layouts for Nokia 7110 WML device ######################################################################This will display the selected themes in the customizer panel. See Figure 131on page 244. Chapter 9. Subscriber Personalized Service Environment 243
  • 261. Figure 131. Topics The next step is to specify where the news will be located by altering /usr/TivTSM/personal/servlet/com/tivoli/tsm/perso/components/AgregatorCo mponent.properties as shown in the next screen. You specify for each topic an abstract, the content, and where an image is. In the specified files, you will create the abstract and content. You have a choice on displaying this as shown in Figure 132 and Figure 133 on page 245. Figure 132. Abstracts news244 Introducing Tivoli Personalized Services Manager 1.1
  • 262. Figure 133. Content newsNow, you have a news service. If you have a problem that you don’t get thechanges in your page, restart the personal server.Customizing the desktop themesIn the next screen, the themes are specified in theAgregatorComponent.properties after the topics. Once you set this, there area few more steps. Create a style sheet in /usr/TivTSM/personal/content/csswith the same name that you specified as the theme name in theAgregatorComponent.properties. For example, if you specify a theme nameas verde, then you will have in the /usr/TivTSM/personal/content/css a stylesheet file called verde.css.The result is the shown in the Figure 134 on page 247 and Figure 135 onpage 247. Chapter 9. Subscriber Personalized Service Environment 245
  • 263. ###################################################################### # Aggregator Component for TISM pTk # ------------------------------------ ###################################################################### # # List of contents aggregated # The syntax is : # aggregator.content.<content name>=<URL> # aggregator.abstract.buy=/perso/samples/news/politics_abstract.txt aggregator.content.buy=/perso/samples/news/politics_news.txt aggregator.images.buy=/images/buy_off.gif # aggregator.abstract.finance=/perso/samples/news/basketball_abstract.txt aggregator.content.finance=/perso/samples/news/basketball_news.txt aggregator.images.finance=/images/finance_off.gif # aggregator.abstract.research=/perso/samples/news/basketball_abstract.txt aggregator.content.research=/perso/samples/news/golf_news.txt aggregator.images.research=/images/research_off.gif # aggregator.abstract.maintain=/perso/samples/news/soccer_abstract.txt aggregator.content.maintain=/perso/samples/news/soccer_news.txt aggregator.images.maintain=/images/maintain_off.gif # aggregator.abstract.sell=/perso/samples/news/euro2000_abstract.txt aggregator.content.sell=/perso/samples/news/euro2000_news.txt aggregator.images.sell=/images/sell_off.gif # ###################################################################### # Class to be provided to filter the contents to be displayed to a user # The SampleFilter works with the samples provided with TISM ###################################################################### # aggregator.filterclass=com.tivoli.tsm.perso.filter.SampleFilter # ###################################################################### # Pages for HTML devices ###################################################################### # # news aggregator page page./WEB.defaultcmd=/perso/components/aggregator/newsabstract.jsp page./WEB.minimize=/perso/components/newsabstract.jsp page./WEB.normal=/perso/components/aggregator/newsabstract.jsp page./WEB.maximize=/perso/components/aggregator/newsfull.jsp page./WEB.oneitem=/perso/components/aggregator/onenews.jsp246 Introducing Tivoli Personalized Services Manager 1.1
  • 264. .Figure 134. The selection of themesFigure 135. An applied themeLogoutThis TPSM component is for logging out from the personalization server andTPSM. The next screen shows the code for this component. Chapter 9. Subscriber Personalized Service Environment 247
  • 265. <TR ><TD align="center">&nbsp;</TD></TR> <TR><TD> <table BORDER=0 CELLSPACING=0 CELLPADDING=0> <tr ID=componentbar > <td WIDTH="228" ALIGN="center"><font color="FFFFFF">Logout from portal</font></td> <td WIDTH="17"><a href="/perso/home?layout=logout&logout=session"><img src="/images/minimizebutton.gif" href=""></a></td> </tr> </table> </TD></TR> <TR ><TD align="center">&nbsp;</TD></TR> <TR><TD> <table BORDER=0 CELLSPACING=0 CELLPADDING=0> <tr ID=componentbar > <td WIDTH="228" ALIGN="center"><font color="FFFFFF">General Logout</font></td> <td WIDTH="17"><a href="/perso/home?layout=logout&logout=sso"><img src="/images/minimizebutton.gif" href=""></a></td> </tr> </table> </TD></TR> <TR ><TD align="center">&nbsp;</TD></TR> Link Selector This TPSM component allows the user to create links to the subscriber’s favorite places on his/her homepage. The subscriber manages the links by him/herself. See the code in the next screen and the results in Figure 136, Figure 137 on page 249, and Figure 138 on page 249. <TR><TD align="center"> <% comp = (ComponentDescription) comps.get("links"); if (comp != null) comp.include(this, request, response); %> </TD> </TR> Figure 136. Example of link selector step 1248 Introducing Tivoli Personalized Services Manager 1.1
  • 266. Figure 137. Example of link selector step 2Figure 138. Example of link selector step 3If you want to personalize the layout of the LinkSelector, go to/usr/TivTSM/personal/content/component/linkselector and choose the file thatyou are using.CalendarThis TPSM component is a calendar as shown in Figure 139 on page 250.The code to include it in the personalized homepage is shown in the nextscreen. <TR><TD align="left" width="90%"> <% comp = (ComponentDescription) comps.get("calendar"); if (comp != null) comp.include(this, request, response); %> </TD> </TR>. Chapter 9. Subscriber Personalized Service Environment 249
  • 267. Figure 139. Example of Calendar component Agenda The Agenda is a TPSM component (see the Figure 140 on page 251) that you can add to your personalize homepage with the code shown in the following screen. <TR><TD align="center"> <% comp = (ComponentDescription) comps.get("agenda"); if (comp != null) comp.include(this, request, response); %> </TD> </TR>250 Introducing Tivoli Personalized Services Manager 1.1
  • 268. Figure 140. Example of Agenda componentComponentSelectorThis TPSM component permits the subscriber to customize the applicationsthat he/she wants to have in his/her homepage. An example of the code toadd to a homepage is shown in the next screen. Later on, we are going toexplain how to add new applications to the ComponentSelector. <% Component.include("/perso/componentSelectorComponent", "comps", this, request, response); %>Figure 141 on page 252 shows what the ComponentSelector looks like on ahomepage. Chapter 9. Subscriber Personalized Service Environment 251
  • 269. Figure 141. Example of ComponentSelector To add a new external application that can be chosen by the user, follow these steps: 1. Edit the file ComponentSelectorComponent.properties of the directory /usr/TivTSM/personal/servlet/properties/com/tivoli/tsm/perso/component as shown in the following screen. 2. Add the next lines for your new external application, see the bold code as our example. The first thing that you have to do is to decide what name are you going to give to the application, for instance, mail, to identify the properties in the file a. Label of application to appear in the homepage as description b. Name application.label.mail=My Mail c. Icon that you are going to use and location: application.icon.mail=/images/yahoo.gif d. The location in the TPSM: application.componenturl.mail= e. URL for the new application: application.iconclickurl.mail=http://mail.yahoo.com f. Type of devices to apply: application.devicetype.mail=/WEB 3. Stop and restart the personalization server. 4. Try your homepage as shown in Figure 142 on page 256 and Figure 143 on page 256. The code for ComponentSelectorComponent.properties is as follows:252 Introducing Tivoli Personalized Services Manager 1.1
  • 270. ####################################################################### Application Selector Component for TISM pTk# ------------------------------------## List of applications managed by the ComponentSelector## The syntax is :# ---------------# application.label.<application name>=<application label># application.icon.<application name>=<application icon URL># application.componenturl.<application name>=<component URL># this parameter is required for components# application.iconclickurl.<application name>=<Click URL for the icon># this parameter is optional : when present, the component icon is clickable# application.devicetype.<application name>=<device_type># where <device_type> = /WEB, /WAP or / for all devices####################################################################### Calendar : Example of application which entry point is a component (servlet)# it is referenced by the URI path of its servlet alias#application.label.calendar=My Calendarapplication.icon.calendar=/images/calendar.gifapplication.componenturl.calendar=/perso/calendarComponentapplication.iconclickurl.calendar=application.devicetype.calendar=/######################################################################## Agenda : Example of application which entry point is a component (servlet)# it is referenced by the URI path of its servlet alias#application.label.agenda=My Agendaapplication.icon.agenda=/images/agenda.gifapplication.componenturl.agenda=/perso/agendaComponentapplication.iconclickurl.agenda=/perso/home?layout=agenda&agenda=maximizeapplication.devicetype.agenda=/######################################################################## Link Selector : Example of application which entry point is a component (servlet)# it is referenced by the URI path of its servlet alias#application.label.links=My Favorite Linksapplication.icon.links=/images/world.gifapplication.componenturl.links=/perso/linkSelectorComponentapplication.iconclickurl.links=application.devicetype.links=/######################################################################## Address book Example of application which entry point is a JSP# It is referenced by the JSP URI path used in a tag <a href="..."></a>#application.label.addressBook=My Address Bookapplication.icon.addressBook=/images/addrbook.gifapplication.componenturl.addressBook=/perso/addressBookComponent Chapter 9. Subscriber Personalized Service Environment 253
  • 271. application.iconclickurl.addressBook=/perso/home?layout=addrbook&addressBook=maximi ze application.devicetype.addressBook=/ # ###################################################################### # Example of aggregation content # application.label.news=The News application.icon.news=/images/news.gif application.componenturl.news=/perso/news application.iconclickurl.news=/perso/home?layout=home&news=maximize application.devicetype.news=/ # ###################################################################### # Example of an external link with macrosubstitution using the users profile # This type of link has no component URL # application.label.weather=My Weather application.icon.weather=/images/weather.gif application.componenturl.weather= application.iconclickurl.weather=http://search.weather.yahoo.com/weather/query.cgi? q=*getCity* application.devicetype.weather=/WEB # ###################################################################### # Example of an external link with macrosubstitution using the users profile # This type of link has no component URL # application.label.mail=My Mail application.icon.mail=/images/yahoo.gif application.componenturl.mail= application.iconclickurl.mail=http://mail.yahoo.com application.devicetype.mail=/WEB ###################################################################### # # Component JSPs : dispatched according to (deviceType, componentCommand) # ###################################################################### # Pages for HTML devices # ---------------------- # The syntax is : # page.<device type>.<component HTTP command>=<JSP URL path> ###################################################################### # # Startup mode: defaultcmd --> maximized for WEB devices page./WEB.defaultcmd=/perso/components/componentselector/myapplihtml.jsp # # Minimized page page./WEB.minimize=/perso/components/componentselector/minapplihtml.jsp # # Page with my applications page./WEB.maximize=/perso/components/componentselector/myapplihtml.jsp page./WEB.myappli=/perso/components/componentselector/myapplihtml.jsp page./WEB.add=/perso/components/componentselector/myapplihtml.jsp page./WEB.delete=/perso/components/componentselector/myapplihtml.jsp #254 Introducing Tivoli Personalized Services Manager 1.1
  • 272. ## Page with other available applicationspage./WEB.customize=/perso/components/componentselector/customapplihtml.jsp######################################################################## layouts for WAP devices######################################################################## Startup mode for WAP devices : defaultcmd --> minimizedpage./WAP/R380.defaultcmd=/perso/components/componentselector/myappliwml.jsppage./WAP/R380.minimize=/perso/components/componentselector/minappliwml.jsppage./WAP/R380.maximize=/perso/components/componentselector/maxappliwml.jsppage./WAP/R380.add=/perso/components/componentselector/myappliwml.jsppage./WAP/R380.delete=/perso/components/componentselector/myappliwml.jsppage./WAP/R380.myappli=/perso/components/componentselector/myappliwml.jsppage./WAP/NokiaEmul.defaultcmd=/perso/components/componentselector/myappliwml.jsppage./WAP/NokiaEmul.minimize=/perso/components/componentselector/minappliwml.jsppage./WAP/NokiaEmul.maximize=/perso/components/componentselector/maxappliwml.jsppage./WAP/NokiaEmul.add=/perso/components/componentselector/myappliwml.jsppage./WAP/NokiaEmul.delete=/perso/components/componentselector/myappliwml.jsppage./WAP/NokiaEmul.myappli=/perso/components/componentselector/myappliwml.jsppage./WAP/nokia7110.defaultcmd=/perso/components/componentselector/myappliwml.jsppage./WAP/nokia7110.minimize=/perso/components/componentselector/minappliwml.jsppage./WAP/nokia7110.maximize=/perso/components/componentselector/maxappliwml.jsppage./WAP/nokia7110.add=/perso/components/componentselector/myappliwml.jsppage./WAP/nokia7110.delete=/perso/components/componentselector/myappliwml.jsppage./WAP/nokia7110.myappli=/perso/components/componentselector/myappliwml.jsppage./WAP/R320.defaultcmd=/perso/components/componentselector/myappliwml.jsppage./WAP/R320.minimize=/perso/components/componentselector/minappliwml.jsppage./WAP/R320.maximize=/perso/components/componentselector/maxappliwml.jsppage./WAP/R320.add=/perso/components/componentselector/myappliwml.jsppage./WAP/R320.delete=/perso/components/componentselector/myappliwml.jsppage./WAP/R320.myappli=/perso/components/componentselector/myappliwml.jsp# .../... Chapter 9. Subscriber Personalized Service Environment 255
  • 273. Figure 142. ComponentSelectorComponent after adding an external application Figure 143. New application added by the user The whole code for the entire page with all components installed is shown in the next screen.256 Introducing Tivoli Personalized Services Manager 1.1
  • 274. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"><%@ page import="com.tivoli.tsm.authentication.*" %> <% if (Checker.isNotAuthenticated(request, response)) return; %><%@ page buffer="none"import="com.tivoli.tsm.perso.*,com.tivoli.tsm.perso.components.*,java.util.*,java.text.*" %><%User user = User.getBean(request); NameValuePairs pairs = NameValuePairs.getBean(request); String first, second, address1; try{ first = user.getFirstName(); second = user.getLastName(); address1 = user.getAddress1(); }catch(Exception e) { System.out.println(e); }// Compute style sheet String style[] = pairs.getValues("style"); String css = "default"; if (style.length >= 1) css = style[0];%><HTML><HEAD> <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <TITLE>&nbsp;TSM Personal page&nbsp;</TITLE> <LINK rel="stylesheet" href="/perso/css/<%=css%>.css" type="text/css"></head><BODY text="#000000" link="#000000" vlink="#000000" alink="#000000"><TABLE border="0" cellspacing="0" cellpadding="0" ><tr><TD><IMG width="250" height="190" src="/images/autoclub.gif" ALT="Auto Club"border="3" ></TD><TD ><IMG width="750" height="50" src="/images/spacer.gif" ></TD><TD><IMG width="250" height="190" src="/images/ah1.gif" ALT="Auto Club" border="3"></TD></TR><tr><td></TABLE><TABLE border="0" cellspacing="0" cellpadding="0" width="100%"><TR><TD valign="top" align="left"><!----------- PAGE LEFT column ---------------------------><TABLE border="0" cellspacing="0" cellpadding="0" width="250"><!----------- Search form to Yahoo ---------------------------><TR ID=componentbar ><TD align="center"><fontcolor="white">Search</font></TD></TR> <TR ID=componentbckground ><TD> <FORM method=get action="http://search.yahoo.com/bin/search" target="_blanck"> <INPUT type=text name="p" size=15 height=17 maxlength=64> <INPUT type=submit value=go></TD> </FORM> </TD></TR> Chapter 9. Subscriber Personalized Service Environment 257
  • 275. <!----------- Calendar ---------------------------> <% Hashtable comps = ComponentSelectorComponent.getComponents("comps", request); ComponentDescription comp; %> <!----------- Customizor ---------------------------> <TR ><TD align="center">&nbsp;</TD></TR> <TR><TD bgcolor="black"> <% Component.include("/perso/customizorComponent", "custom", this, request, response); %> </TD></TR> <!----------- Logout -----------------------------------> <TR ><TD align="center">&nbsp;</TD></TR> <TR><TD> <table BORDER=0 CELLSPACING=0 CELLPADDING=0> <tr ID=componentbar > <td WIDTH="228" ALIGN="center"><font color="FFFFFF">Logout from portal</font></td> <td WIDTH="17"><a href="/perso/home?layout=logout&logout=session"><img src="/images/minimizebutton.gif" href=""></a></td> </tr> </table> </TD></TR> <TR ><TD align="center">&nbsp;</TD></TR> <TR><TD> <table BORDER=0 CELLSPACING=0 CELLPADDING=0> <tr ID=componentbar > <td WIDTH="228" ALIGN="center"><font color="FFFFFF">General Logout</font></td> <td WIDTH="17"><a href="/perso/home?layout=logout&logout=sso"><img src="/images/minimizebutton.gif" href=""></a></td> </tr> </table> </TD></TR> <TR ><TD align="center">&nbsp;</TD></TR> <!----------- Links selector ---------------------------> <TR><TD align="center"> <% comp = (ComponentDescription) comps.get("links"); if (comp != null) comp.include(this, request, response); %></TD> </TR> <TR ><TD align="center">&nbsp;</TD></TR> <tr><td> </td></TR> <TR ID=componentbar ><TD align="center"><font color="white">Cars Trade Marks</font></TD></TR> <TR><TD align="left"><font color="black"><A HREF="www.bmw.com">BMW</a></font></TD></TR> <TR><TD align="left"><font color="black"><A HREF="www.ferrari.com">Ferrari</a></font></TD></TR> <TR><TD align="left"><font color="black"><A HREF="www.ford.com">Ford</a></font></TD></TR> <TR><TD align="left"><font color="black"><A HREF="www.gm.com">General Motors</a></font></TD></TR> <TR><TD align="left"><font color="black"><A HREF="www.hyundai.com">Hyundai</a></font></TD></TR> <TR><TD align="left"><font color="black"><A HREF="www.honda.com">Honda</a></font></TD></TR> <TR><TD align="left"><font color="black"><A HREF="www.mercedes.com">Mercedes</a></font></TD></TR> <TR><TD align="left"><font color="black"><A HREF="www.nissan.com">Nissan</a></font></TD></TR> <TR><TD align="left"><font color="black"><A HREF="www.renault.com">Renault</a></font></TD></TR> <TR><TD align="left"><font color="black"><A HREF="www.seat.com">Seat</a></font></TD></TR> <TR><TD align="left"><font color="black"><A HREF="www.toyota.com">Toyota</a></font></TD></TR>258 Introducing Tivoli Personalized Services Manager 1.1
  • 276. <TR><TD align="left"><font color="black"><AHREF="www.vw.com">Volkswagen</a></font></TD></TR></TABLE></TD><!----------- PAGE RIGHT column ---------------------------><TD valign="top" align="left" > <TABLE border="0" cellspacing="5" cellpadding="0"><!----------- Promotional banner : could be done with Aggregator component too---------><% // Include promotional banner for kid // The property group=xxx is set by the SampleProfiler at user session start if (pairs.exists("group", "kid")) { %> <TR><TD align="center" valign="top" width="90%"> <A HREF="http://www.toysrus.com/"><IMG BORDER="0" SRC="/images/toys.jpg"></A> </TD></TR> <% } %><% // Include promotional banner for men if (pairs.exists("group", "man")) { %> <TR><TD align="center" valign="top" width="90%"> <A HREF="http://www.ferrari.it/"><IMG SRC="/images/car.jpg"></A></TD></TR> <% } %><% // Include promotional banner for woman if (pairs.exists("group", "woman")) { %> <TR><TD align="center" valign="top" width="90%"> <A HREF="http://www.ferrari.it/"><IMG SRC="/images/elle.gif"></A> </TD></TR> <% } %><TR ID=componentbar ><TD align="center" WIDTH="500"> <H2><font color="#FFFFFF">Welcome <%=user.getFirstName() %> </font></H2> </TD></TR><!----------- News : presented by Aggregator component ---------><TR><TD align="left" valign="top" width="90%"> <% // Include news filtered by user prefered topics comp = (ComponentDescription) comps.get("news"); if (comp != null) comp.include(this, request, response); else { %> <H3>Please subscribe to the news...</H3> <BR> Click on the top left box My applications to select the news. <% Chapter 9. Subscriber Personalized Service Environment 259
  • 277. } %> </TD></TR> <tr><td>&nbsp;</td></tr> </TABLE> </TD> <!----------- PAGE LAST column ---------------------------> <td> <TABLE> <!--------------------Aplications--------------------------> <TR><TD> <!----------- Component selector ---------------------------> <% Component.include("/perso/componentSelectorComponent", "comps", this, request, response); %> </TD></TR> <!--------------------Calendar--------------------------> <TR><TD align="left" width="90%"> <% comp = (ComponentDescription) comps.get("calendar"); if (comp != null) comp.include(this, request, response); %> </TD> </TR> <!----------------------Agenda-------------------------> <TR><TD align="center"> <% comp = (ComponentDescription) comps.get("agenda"); if (comp != null) comp.include(this, request, response); %> </TD> </TR> </TABLE> </TD> </TR> </TABLE> </BODY> </HTML> . .260 Introducing Tivoli Personalized Services Manager 1.1
  • 278. 9.9.2 Wireless World As in the Internet world, you can customize the homepage in Wireless World, but the amount of space in the display is very limited. TPSM doesn’t have a welcome homepage for WAP, so you have to create it yourself. Here is an example. <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <%@ page import="com.tivoli.tsm.authentication.*" %> <% if (Checker.isNotAuthenticated(request, response)) return; %> <%@ page contentType="text/vnd.wap.wml" import="java.util.*,java.text.*,com.tivoli.tsm.perso.*"%> <?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <!-- Source Generated by WML Deck Decoder --> <%@ page buffer="none" import="com.tivoli.tsm.perso.components.*,com.tivoli.tsm.perso.*,java.util.*" %> <% LayoutComponentSession layout = (LayoutComponentSession) LayoutComponentSession.getSession(request); %> <wml> <template> <do type="prev" name="back" label="Back"> <prev/> </do> <do type="accept" name="nav1" label="Service Menu"> <go href="<%=layout.href(response)%>"> <postfield name="currentComponent" value="comps"/> <postfield name="comps" value="myappli"/> </go> </do> </template> <% String currentComponent = layout.getCurrentComponent(); // If no previous value, set to component selector if (currentComponent == null) currentComponent = "comps"; if (currentComponent.equals("comps")) Component.include("/perso/componentSelectorComponent", currentComponent, this, request, response); else { // Component.include("/perso/componentSelectorComponent", "comps", this, request, response, "minimize"); Hashtable comps = ComponentSelectorComponent.getComponents("comps", request); ComponentDescription comp = (ComponentDescription) comps.get(currentComponent); if (comp != null) comp.include(this, request, response); } %></wml> Chapter 9. Subscriber Personalized Service Environment 261
  • 279. This code redirects the subscriber when it detects that he or she has not been authenticated before. See the code in Section 9.9.1.1, “Implementation” on page 241. The rest of the code is for using the TPSM component, ComponentSelectorComponent. Add other components just as we did for HTML. To see the results, see Figure 88 on page 144.262 Introducing Tivoli Personalized Services Manager 1.1
  • 280. Chapter 10. Virtual ISP This chapter is an overview of the Virtual ISP feature. For configuration and further information, please refer to Chapter 5, “Enrollment and service provisioning” on page 73.10.1 Overview Tivoli Personalized Services Manager can host several stand-alone ISPs (virtual ISPs) each with its own brand name and unique identity without any degradation in response time or processing efficiency. Bulk transfers of subscriber bases can be accomplished programmatically, allowing ISPs to purchase existing subscriber populations and quickly add them to the ISPs business. Businesses can own and operate a virtual ISP within the Tivoli Internet Services Manager base system. Virtual ISPs operate as distinct entities separately branded with a unique realm name (e.g., “acme.com”) Virtual ISPs can configure the Tivoli Internet Services Manager enrollment screens to display their logo, and offer their billing plans and payment options. Access codes used during enrollment to trigger the proper enrollment screens and enrollment options from the Tivoli Internet Services Manager system base. Also, virtual ISPs can create a unique home page to support their companys identity. The Internet Signup file (INS file) created at the end of enrollment and downloaded to a subscribers PC will configure the subscribers browser to use the virtual ISPs settings (for home page, e-mail and newsgroup settings). Virtual ISPs can configure Tivoli Internet Services Managers Customer Care component to conform to their companys identity and support their subscribers needs, and can offer special business accounts within the ISP. These business accounts can have their own subscribers A variety of APIs allow Tivoli Personalized Services Manager to integrate nearly any Internet component that meets industry standards to provide diverse functionality and follow new trends in Internet interaction.© Copyright IBM Corp. 2001 263
  • 281. 10.2 REALMs Realms are a division of the subscriber name-space that allow the ISP to divide its Internet provisioning services, effectively creating a set of “Virtual ISPs.” Tivoli Personalized Services Manager can support several realms for its virtual ISPs. For example: • allConsumers.com • smallBusiness.com • importantCustomer.com Virtual ISPs can use the Tivoli Personalized Services Manager enrollment process to enroll their own subscribers but maintain management control over enrollment channels, access codes, deals, subscriber names, and e-mail addresses as shown in Figure 144. Realms can have consolidated or separate billing systems. Figure 144. Internet business model With a delegated REALM administration, TISM provides a configurable way to limit the realms that Customer Service Reps (CSRs) can access.264 Introducing Tivoli Personalized Services Manager 1.1
  • 282. This allows CSRs to use the full functionality of the Customer Care application, but limits their access to some or all realms within Tivoli Internet Services Manager.10.2.1 User groups Within Realms Subscribers can be divided into groups within a realm (see realm description above). For example: • Consumer account users • Business account users • Employee account users Marketing managers, CSRs, and system administrators can support and target information to specific groups by limiting their scope to the group they have in mind. Virtual ISPs can hire their own CSR staff or subcontract through agencies. The CSRs working for the virtual ISP will be configured with security privilege profiles that deny access to all but the virtual ISPs realm(s).10.3 Enrollment and service provisioning Every ISP relies on a centrally managed enrollment engine while being allowed total autonomy in presentation and payment plan offers. A standard set of enrollment screens can be customized to deliver uniquely branded messages and graphics as well as ISP-specific billing plans and payment options. Behind the scenes, a consistent array of data elements are captured from each new subscriber, thereby distributing all of Tivoli Personalized Services Managers additional features to every subscriber, regardless of their ISP as shown in Figure 145 on page 266. With individual branding comes unique realm name distinction. Every ISP hosted on Tivoli Personalized Services Manager is granted a realm - which is a partition within the overall database that distinguishes them and their subscribers from all others in the system and the Internet at large. Realms help extend brand name identification. Realm 1 could be "alpha.com" and Realm 2 could be "beta.com." Every subscriber to the ISP named "Alpha" would receive a user name and e-mail address that is unique to the realm of "alpha.com" (John@alpha.com, Mary@alpha.com, etc.). Chapter 10. Virtual ISP 265
  • 283. Every subscriber enrolled with the ISP named "Beta" would get a user name and e-mail address unique to "beta.com" (John@beta.com, Mary@beta.com, etc.). Figure 145. Enrollment and Service Provisioning10.4 Configuring a Virtual ISP A Realm is “an ISP”. It is “the area where is going to work a company”, for example, IBM is a realm and its domain is ibm.com. To configure a Virtual ISP, we need to create a new REALM on the TPSM, please refer to Chapter 5.1.1, “Creation of a Realm” on page 76 for the creation of a REALM. In order to be able to start using the new REALM or Virtual ISP, it is necessary to perform the next tasks: • Create a Registration name, refer to Chapter 5.1.2, “Creation of Registration Names” on page 77. • Create an Access Code, refer to Chapter 5.1.3, “Creation of Access Codes” on page 79 • Create a Deal, refer to Chapter 5.1.4, “Creation of a deal” on page 82 • Create a Deal Text, refer to Chapter 5.1.5, “Creation of deal text” on page 84266 Introducing Tivoli Personalized Services Manager 1.1
  • 284. • Optionally, you can create a property for the deal, refer to Chapter 5.1.6, “Creating a property” on page 87 • Associate the Deal with the Realm, refer to Chapter 5.1.7, “Associating the deals with the Realm” on page 90 • Associate the Access Code with the Deal, refer to Chapter 5.1.8, “Associating the Access Codes with the deals” on page 92 Also, we need to add CSRs to each one of the Virtual ISPs, please refer to Chapter 7, “Using Customer Care and Director Tool” on page 149.10.5 Enrolling into the Virtual ISP With the creation of the REALM also the realm creates a registration name for the enrollment process. The registration name by default has just one access code, but we can create as much access codes as we want to offer and assigned them to the REALM in order to make the a multi access REALM type. Depending on the access code that the user selects, different deals are going to be offered to him. For further details refer to Chapter 5.1.13, “Managing the enrollment process” on page 99. Chapter 10. Virtual ISP 267
  • 285. 268 Introducing Tivoli Personalized Services Manager 1.1
  • 286. Chapter 11. Integration Toolkit The TSM Integration Toolkit, iTk, is a set of tools that permits you to integrate TPSM with other systems. The TSM Integration Toolkit, iTk, is written in Java, so it is easy to use, portable, and independent of the type of database used. The TPSM has its main functionality based in the database, so to be able to manage TPSM, the developer has to manage the database. This is provided via Java Database Connectivity (JDBC), and is oriented to transactions. This means that if an error occurs in the middle of a set of database commands, the database will not become inconsistent. A transaction must complete fully before the database is updated. Some examples of the use of iTk are: • Read the available Access Codes for controlling the enrollment process • Create an account and read the details of the accounts for TPSM subscribers • Read and change the deals • Authenticate TSM Customer Service Representative and System Administrators • Read and change Methods of Payment (MOPs) • Read Realms • Create a subscriber and read it • Create a transaction from the Transaction Factory • Create a TxCursor interface, which provides an uniform return value from the read() method of the Transaction class, using the fetch() and close() methods • Create a TxWhereClause instance, which provides the capability to specify a complex searching criteria when invoking the read() method of Transaction.11.1 Architectural overview The database is at the core of Tivoli Internet Services Manager. It contains all the information needed to run the management system. It also implements constraints to guarantee the integrity of the data.© Copyright IBM Corp. 2001 269
  • 287. Around the database primary business and transaction objects are available that provide access to the database in a uniform and consistent way without having to code the actual SQL statements that are needed. See Figure 146. Figure 146. iTk architecture Using JDBC, the specific details of the database are hidden from higher level objects. This makes it easier to change databases because it provides isolation from different database management systems like DB2, Oracle, etc. JDBC separates the database server from the business object server, and even facilitates an evolution to a distributed database. A set of high level, business oriented objects provide simple ways to perform complex business transactions. In turn, the high-level business objects are built around the simpler, table oriented business objects.270 Introducing Tivoli Personalized Services Manager 1.1
  • 288. 11.2 iTk usage scenarios iTk can be used in different ways as shown in Figure 147. Figure 147. iTk usage scenarios 1. Form based browser This is the most lightweight type of client possible. An unmodified (no plug-in) version of Internet Explorer, Netscape Navigator, or any other type of Web browser accesses a Web server. Behind the Web server, a servlet engine verifies input submitted with HTML form fields and prepares the pages to be sent to the browser. The servlet engine communicates with the business logic server and prepares HTML to be sent to the browser using Java Server Pages. This approach has major advantages over older technologies like CGI (Common Gateway Interface) or Server Side Plugins. First, the Java language used in the servlet engine guarantees the uniformity of one platform. Second, the portability of the Java language enables deployment on different platforms with different types of servlet engines. Lastly, the presence of the servlet engine avoids the costly generation of a new process with every HTTP request as required by CGI type interfaces. With this model, the servlet engine contains iTk object stubs if RMI is used. If RMI is not used the objects contained in the Chapter 11. Integration Toolkit 271
  • 289. business logic server will run in the Java Virtual Machine (JVM) of the servlet engine. 2. Java Applets This solution allows deploying business code on the browser without the need of software installation. A Java applet is downloaded from the server when the browser accesses a specific webpage. The code is dynamically loaded into the Java Virtual Machine on the client and is launched once the download is completed. This model does not require any software installation and guarantees easy updates of software because only the server needs to be updated. The applet can communicate directly with the business logic, or an intermediate server can be introduced in between. With this approach, the Java applet contains iTk object stubs if RMI is used. Otherwise, the objects contained in the business logic server will run in the same JVM as the applet. 3. Third party applications In some cases customers want to integrate Tivoli Internet Services Manager in their core applications. In this case, access to the Tivoli Internet Services Manager services through a browser or Web server is not convenient. Instead, customers would like to write programs that access Tivoli Internet Services Manager directly, through well-known interfaces. In this model, iTk object stubs are contained in the third party application if RMI is used. Otherwise, the business logic server code will run in the same JVM as the third party application.11.3 iTk classes iTk is a Java package, iTk.jar. This package contains all the iTk classes. These classes can be classified into: 1. Core Classes: classes for iTk architecture. 2. iTk Business Objects: provides the business level functionality, for instance, subscriber, account, realm, deal, etc.11.3.1 Core classes Figure 148 on page 273 shows the relations between the objects.272 Introducing Tivoli Personalized Services Manager 1.1
  • 290. Figure 148. iTk core classes structureThe iTk permits the integration of applications without knowing the structureof the database tables. Some examples of what the iTk core classes do are: Chapter 11. Integration Toolkit 273
  • 291. • Manage TSM Transactions. The action of creating a new subscriber is represented as one transaction. Because there are several database updatesm, if any fail, the database rolls back to avoid corruption. • Connect to the database. • Generate SQL commands dynamically. • Providing a common interface to retrieve data. • Utility function as debug or trace. • Validate values set by an application. • Manage exceptions. There are objects oriented to transactions in the database, such as Transaction, TransactionConfig, TransactionFactory, TxCursor, TxException, and TxWhereClause. These classes are not accessible to the applications, and are only explained to understand the architecture: DbConnectionMgr Manages and retains database connections. SqlGenerator Creates your own SQL statements dynamically. It optimizes updates and validation of data. Trace Generic class used for tracking the progress and completion of methods. It generates three types of methods; information, error, and warning. TraceResources Provides NLS support on tracing/logging. TxObject The base for all transaction objects. Defines the methods described in the Transaction interface and provides a default implementation. It also takes care of transaction management and failures. TxSqlContext Holds the resources that are reserved by a TxCursor Object. TxValue Encapsulates all objects and Java primitive types that are set to the fields of TxObject. TxValue object can also store the TxWhereClause object.274 Introducing Tivoli Personalized Services Manager 1.1
  • 292. TxValues Developed to improve the performance of retrieving data with RMI. Validator Allows applications to perform some simple validation of user input locally.11.3.2 iTk Business Objects The TSM Business Objects are classes that manage TSM objects in the TSM databases. A TSM Business Object is a representation of one or more database tables. There are low level classes that can be used instead of TSM Business Objects, but they are not recommended because they do not guarantee integrity within TSM. iTk also supports composed SqlGenerator to handle composed TSM Business Object class queries. The TSM Business Objects have three categories of methods: 1. Methods to specify returned fields: Not all applications need all of the attributes from the database, which is the iTk Tivoli Internet Services Manager Business Object default. Two methods to choose among the attributes are provided: a. void setSelectAllField(boolean): allows application to select all fields true or false at once. b. void setSelectField(int field_index, boolean): allows the application to select/unselect an individual field. field_index is defined in the class as public static final integer attributes -- usually they are all-caps class attributes. Code Example: to select realm name to be retrieved from Realm object: setSelectField(Realm.REALM_NAME,TRUE); This set of methods won’t be described in this redbook. NOTE: The table primary keys are always set as select field. The reason is that the iTk is always prepared for an update or delete after a read statement, and the keys are used to build the where clause because it’s faster to update or delete an entry from the table based on keys . 2. set <attributeName>|get<attributeName> methods: All Tivoli Internet Services Manager Business Objects implement this category of methods. It sets and gets attributes from the object. Chapter 11. Integration Toolkit 275
  • 293. Code Example: to set and get realm name from Realm object: setRealmName(“Tivoli”); String db_realm_name= getRealmName(); These methods won’t be described in this redbook. 3. Database related methods: All Tivoli Internet Services Manager Business Objects derive from TxObject, and implement the following methods. Note: Additional specific methods will be described within the specific Tivoli Internet Services Manager Business Object. a. count(): Returns the number of entries in the database that matches the specified criteria. b. create(): Creates the object in the database. NOTE: A few Tivoli Internet Services Manager Business Objects do not allow creation. c. delete(): Deletes one or more entries from the database. d. NOTE: This method is not available for all classes because not all Tivoli Internet Services Manager objects are programmatically deletable. e. read(): Retrieves all entries from the database that match the specified criteria f. update(): Updates one or more entries in the database. NOTE: A few Tivoli Internet Services Manager Business Objects do not allow update.276 Introducing Tivoli Personalized Services Manager 1.1
  • 294. Chapter 12. Device Manager In this chapter we give an introduction of the Device Manager feature on TPSM. For additional information about installation and configuration, please refer to the IBM Redbook Pervasive Device Management, using Tivoli Personalized Services Manager, SG24-6027.12.1 Overview Device Manager is software that helps service providers manage their subscribers’ devices. In this chapter, the term ‘devices’ means information appliances, such as personal digital assistants (PDAs), handheld PCs, subnotebooks, smartphones, wireless access protocol (WAP) devices, set-top boxes, in-vehicle information systems, and other emerging devices for pervasive computing. You use the Device Manager as a part of Tivoli Personalized Services Manager (TPSM). The Tivoli Personalized Services Manager provides a completely integrated infrastructure of software components for internet service provisioning. The purpose of Device Manager is to extend the functionality of the required subscription manager product to include management of devices and their related resources, like device application software. Device Manager must work in conjunction with either Tivoli Personalized Services Manager or another subscription manager product whose enrollment application meets the requirements. Device Manager also requires a relational database. All job and device information is stored in tables in this database. The relational database is a required product, not a component. The subscription manager product and Device Manager share the same database. Device Manager uses Java technology. Its servers run on IBM AIX operating system or Sun Solaris environments. It uses a global, relational database for data storage. UDB and Oracle8 are supported with DMS v1.1. Its administration clients run in Microsoft Windows operating system environments, where the Device Manager console for administrators is deployed. Device Manager can be installed as a single-server environment or, for larger user and device numbers, as a multi-server environment with a network dispatcher as the front end. Using a network dispatcher as a load balancer, you can keep scalability and high availability for a number of Device Manager servers.© Copyright IBM Corp. 2001 277
  • 295. 12.2 Device Manager on TPSM The Device Manager feature on TPSM provides a flexible framework and set of services for managing a subscribers devices. Device vendors can extend the systems framework to enable their devices to be managed by the Tivoli Personalized Services Manager (Figure 149). The Tivoli Personalized Services Manager provides a wide range of subscriber device management features, including: • Enrolling subscribers and their devices • Distributing software to the device • Updating device configuration remotely • Listing the devices owned by a user • Updating restpages (startup pages) for screenphones Figure 149. Device Manager on TPSM12.3 Device Manager Components Device Manager consists of six components: • Device Manager server278 Introducing Tivoli Personalized Services Manager 1.1
  • 296. • Device plug-ins • Device management server API • Device Manager database • Device management API • Device Manager console We describe the functions of each component in this section.12.3.1 Device Manager server A Device Manager server is a computer that includes the device management server servlet (DMS servlet) and the device plug-ins. When a new job gets submitted, Device Manager server processes it for devices. The DMS servlet and device plug-ins work together to process a job. When a device connects to the service providers network, it is directed, either directly or by a network dispatcher, to a Device Manager server for job processing. A redirection function checks to make sure the device is enrolled with the service provider. Functionally, Device Management server is divided into two portions; Device Management Dispatcher and the Device Management Server servlet. 12.3.1.1 Device Management Dispatcher Device Management Dispatcher (DMD) assists the identification and dispatching of devices connecting to the network. Devices new to Device Manager contact Device Management Dispatcher first, and then are redirected to an enrollment application for initial setup and configuration. Devices already enrolled also contact DMD at the beginning of the connection, and the DMD checks if any jobs are scheduled for the job. If so, DMD redirects the device to a DMS servlet to process those jobs. Thus, every device contacts DMD first in the connection, and DMD will redirect a device to the appropriate enrollment server if it is not registered in the database, or redirect it to a home DM server that executes device specific jobs. 12.3.1.2 Device Management Server servlet Devices are redirected by the DMD to Device Management Server servlet (DMS servlet) when there are device management jobs for the device. The DMS servlet interacts with Device plug-ins and coordinates the execution of scheduled jobs against specific devices. Chapter 12. Device Manager 279
  • 297. The DMS servlet interacts with the device management API to get information such as the home Device Manager server from the Device Manager database. It also uses DM API to update the database after successful completion of a job.12.3.2 Device plug-ins A device plug-in resides on the Device Manager server and provides the logic that handles device identification, communications, job processing, and high-level management tasks for a particular class of managed devices. A device class is made up of specific kinds of manufacturer devices whose operations can be managed similarly. For example, one device class provided with Device Manager includes Palm PDAs that run PalmOS 3.0.1 (or later); another device class might include Internet appliance devices that use the Windows CE operating system and a specific CPU. Device plug-ins are typically developed by and provided with Device Manager, but they can also originate with a device manufacturer or integrator and be installed later on a Device Manager server. Device plug-ins communicate with device agent, device specific software that is installed on the device, to distribute software and perform remote device configuration. The communications between a device plug-in and the device agent is device-class-dependent and is determined by the integrator who wrote the plug-in code. The device management server API defines the programming interface between a device plug-in residing on Device Manager and the rest of Device Manager, including its redirection function. The device management server API is designed to be generic and protocol-independent. 12.3.2.1 The components of device plug-in Plug-ins are logically structured into four parts: 1. A device-specific communication component that the plug-in software uses to communicate with the device. This interface is defined by the plug-in developer; typically it is implemented as a servlet. 2. The internal device communications component, which enables communication between the plug-in software and the DMS servlet. This piece is created by the plug-in developer, using the DeviceCommunicationManager API methods. 3. The set of device-specific job classes. This piece of the plug-in interacts with the DMS servlet, the device-specific communication component, and the DeviceCommunicationManager implementation. It implements the higher-level management tasks (such as software distribution or device280 Introducing Tivoli Personalized Services Manager 1.1
  • 298. configuration). This piece is created by the plug-in developer by implementing the DeviceJob interface. 4. An optional template file that describes the set of device parameters such as the IP gateway or domain name server used, that are required by all devices of the same device class, to support many different kinds of devices and jobs. Device plug-ins provide the actual implementation logic for devices managed by the Device Manager. Device plug-ins implement the logic described in 1. and 2. as the Device Class layer. It defines a set of methods to perform low-level primitive operations on the device. The Job Class layer implements high-level management tasks, which is described in 3. It performs management tasks by invoking the methods of the Device Class layer.12.3.3 Device management server API The Device Management Server API (DMS API, com.tivoli.dms.dmserver) defines the programming interface between the Device Management Server servlet (DMS servlet, which means DMD or DMS servlet here) and the device plug-ins. This interface allows device plug-ins to interact with a Device Manager server. The DMS API is a general purpose, protocol-independent interface that serves as an abstraction layer, allowing all classes of devices to be managed in the same way by Device Manager. Either Device Manager, or the device manufacturer or integrator, provides a device plug-in for the new device that implements the required functionality and contains logic for performing the unique management functions for the class of devices. The DMS API can be used to develop plug-ins for any new class of device that implement device identification, communications, and job processing for all devices in the new class.12.3.4 Device Manager database The Device Manager database is the repository for all device management information. It is implemented in a relational database and accessed using the device management API. The database contains tables of entries that describe devices and device-related data resources. Device Management database stores all device management information that is used to perform management tasks. When a device connects to the Device Manager server for the first time, the device information is enrolled to the Device Manager database, such as Device ID, device type, and user name. Also, when software distribution jobs are submitted to devices, the information about the job; software package name, distribute duration, target realm, and so forth; is stored. Chapter 12. Device Manager 281
  • 299. The Device Manager database is accessed using the device management API. This API updates all records in the Device Manager database that are related to each other. Therefore, Device Management Server servlets, the Device Manager console, and all external applications such as subscription managers and billing systems should use the device management API to access the Device Manager database. The Subscription Manager and Device Manager databases reside in the same database. However, they use different tables that have no relation between them. For additional information about these tables, see the Device Manager: Developers Guide, which is shipped on the TPSM CD.12.3.5 Device management API The device management API (package com.tivoli.dms.dmapi) defines the programming interface between Device Manager servers, administration clients, and external applications, and the device-related data resources stored in the Device Manager database. Resources that can be managed include table entries describing devices and classes of devices, their parameters, the device class template, software defined for and available to devices, software actually installed on devices by Device Manager, Device Manager servers, and jobs and classes of jobs. Methods are provided to add, delete, and modify these entries, and to search the database for entries matching certain criteria. In addition, the device management APIs will be used by various Subscription Manager (SM) components of TPSM. Examples of how the device management APIs are (or may be) used by these components are listed below: • The DMD uses the DM API to determine if connecting devices are defined in the Device Manager database, and to determine where to route the devices. • The DMS servlet uses the DM API to determine the device class for a specific device, the job class implementation for a specific device class and the device, and/or device class parameters for a device. It also uses DM API to query/update the list of installed software for a device. • The Device Manager console uses the DM API to perform the operations t invoked by an administrator such as creating/listing devices, displaying device classes, viewing/modifying the parameters for devices or device classes, and submitting new jobs for devices.282 Introducing Tivoli Personalized Services Manager 1.1
  • 300. • The SM component of TPSM uses the DM API to define, configure, and schedule jobs for new devices enrolled through the enrollment application. In addition, Customer Care or Self Care applications can be written to enable customer service representatives (CSRs) or customers to view or manage devices within their scope of control.12.3.6 Device Manager console The Device Manager console is a graphical user interface (GUI) for administering device management operations from a Microsoft Windows client. Administrators use this interface to perform tasks like add and view devices and device software, submit jobs for devices, and query job status. The console invokes methods of the device management API to access information in the Device Manager database and perform requested operations. The Device Manager console uses the device management API to interact with the Device Manager database to accomplish administrator-initiated operations. External applications like enrollment and billing can also use this API to retrieve device information from the database and submit device jobs. From this console, a service provider’s administrators can manage the following: • Single devices • Classes of devices • Parameters for devices • Parameters for device classes • Jobs for specific devices • Jobs for all devices in a particular realm • Jobs for all devices in a particular deal • Software for devices • Device Manager servers Typical jobs for devices include the following supplied job types (though all job types may not be applicable to all devices): • Device configuration • Software distribution • Rest page management (typically for devices that stay continuously connected to the service provider) Chapter 12. Device Manager 283
  • 301. Administrators submit these jobs to update the configuration of devices (including network parameters), distribute new or updated software applications to devices, and update device rest pages with, for example, timely new information from the service provider. Administrators can initiate a new job of an available job type and target it to: • All devices • All devices of a device class • All devices in a realm, a deal, or both • One or more selected devices Other typical administrator tasks include the following: • Viewing device jobs and their status. • Canceling jobs. • Identifying and configuring a newly deployed device, including associating the device with its owner. • Obtaining and displaying information about the software Device Manager has distributed to a device, and the configuration parameters it has set for a device.12.4 Device Manager functions The Device Manager feature provides a flexible framework and set of services for managing subscriber’s devices. It includes: • Enrollment Offers easy methods for enrolling new subscribers and their devices, and enrolling devices for existing subscribers. • Updating device configuration remotely Performs initial device setup, and changes device setup as needed at any time during enrollment or after. • Distributing software to the device The service provider can centrally manage software and configure Tivoli Personalized Services Manager to automatically distribute software to a subscriber’s personal devices. • Updating restpages (startup pages) for screenphones Rest pages are device-resident initial start pages. They may contain clickable icons and advertising that are remotely changed by the284 Introducing Tivoli Personalized Services Manager 1.1
  • 302. service provider. Tivoli Personalized Services Manager Device Manager controls the distribution of rest pages to devices. • APIs The device management API allows device and related information to be maintained in the Device Manager database and available for use by external applications, Device Manager servers, and administrative clients. The Device Management server API allows for configuration and distribution requests to be queued for distribution to devices. The Device Management server API also allows DMS servlet and device plug-ins to communicate as see in Table 24. Table 24. DM functions and device plugins matrix Palm Aero 8000 Netvista Win CE Enrollment Supported Supported Supported Supported Device Config Supported Supported Supported Supported Software Supported Supported Supported Supported Distribution Restpage N/A N/A Supported N/A Support APIs Supported Supported Supported Supported12.5 Supported devices In this section, we describe supported devices and device plug-ins that are included in Device Manager v1.1. We also describe device characteristics. Tivoli Personalized Services Manager Device Manager feature supports several types of devices such as: • Personal Digital Assistants (PDAs) • Screenphones • Wireless Access Protocol (WAP) devices Device Manager v1.1 includes device plug-ins. Plug-ins are plugable software that enables administrators to manage the following types of supported physical devices: • Palm Computing PDAs • Compaq Aero 8000 H/PC Pro devices • NetVista Internet Appliance devices Chapter 12. Device Manager 285
  • 303. • Generic support for Windows CE devices12.5.1 Palm Computing PDAs Device Manager supports all Palm III and Palm V-series Palm Computing devices that use the PalmOS R3.0.1 (or later) operating system. Palm positions these devices as PC companions used as “connected organizers.” PalmOS devices, with their relatively small displays, infrequent network connections, and portability features, are not necessarily optimized for all the same services that might be offered to users of other devices. For example, rest page presentations are ideal for devices that are continuously connected to a service provider, but not for disconnected PalmOS devices that people carry around in their pockets. As with any unique class of devices, the services and jobs for which they are best suited will vary with the