Introducing
Tivoli Personalized
Services Manager 1.1
Supports pervasive devices


Creates personalized service
environments

Provides self care




                               Stephen Hochstetler
                                   Edgar Gutierrez
                                   Patricia Iglesias



ibm.com/redbooks
SG24-6031-00

International Technical Support Organization

Introducing
Tivoli Personalized Services Manager 1.1


June 2001
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 number
5698-PSM for use with the AIX and Solaris operating systems.

Comments may be addressed to:
IBM Corporation, International Technical Support Organization
Dept. JN9B Building 003 Internal Zip 2834
11400 Burnet Road
Austin, Texas 78758-3493

When you send information to IBM, you grant IBM a non-exclusive right to use or distribute the
information 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 to
restrictions set forth in GSA ADP Schedule Contract with IBM Corp.
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 What's 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
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 . . . . . . . . . . .                 .   .   ..   .   .   .   .   ..   .   .   .   . 95



iv   Introducing Tivoli Personalized Services Manager 1.1
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 . . . . . . . . . . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   . 108

Chapter 6. Subscriber authentication and access                                  control.                    .   .   .   .   .   .   .   . 111
6.1 Authentication stages . . . . . . . . . . . . . . . . . . . . .              .......                     .   .   .   .   .   .   .   . 112
6.2 Authentication modes . . . . . . . . . . . . . . . . . . . . .               .......                     .   .   .   .   .   .   .   . 113
6.3 Internet world . . . . . . . . . . . . . . . . . . . . . . . . . . .         .......                     .   .   .   .   .   .   .   . 113
   6.3.1 Structure of Authentication Server . . . . . . .                        .......                     .   .   .   .   .   .   .   . 114
6.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 . . . . . . . . . . . . . . . . . . . . .               .......                     .   .   .   .   .   .   .   . 144

Chapter 7. Using Customer Care and Director Tool . . . . . . . . . . . . . . 149
7.1 Assigning login IDs and access control profiles to CSRs . . . . . . . . . 150
7.2 Logging on to Customer Care. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
7.3 Log on steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
7.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 subscriber's deal . . . . . . . . . . . . . . . . . . . . . . . . . . 159
   7.4.4 Change subscriber's 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 . . . . . . . . . . . . . . . . . . . . . . . . . . 163
7.5 Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
7.6 Additional services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
7.7 Using the Search Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
   7.7.1 Search criteria for individual subscribers . . . . . . . . . . . . . . . . . 165
   7.7.2 Exact match feature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

Chapter 8. Subscriber Selfcare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
8.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
8.2 Customization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
8.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
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269



vi   Introducing Tivoli Personalized Services Manager 1.1
11.2 iTk usage scenarios . . . . .             .   .   .   .   ..   .   .   .   ..   .   .   .   .   ..   .   .   .   ..   .   .   .   .   ..   .   .   . 271
11.3 iTk classes . . . . . . . . . . . .       .   .   .   .   ..   .   .   .   ..   .   .   .   .   ..   .   .   .   ..   .   .   .   .   ..   .   .   . 272
   11.3.1 Core classes. . . . . . .            .   .   .   .   ..   .   .   .   ..   .   .   .   .   ..   .   .   .   ..   .   .   .   .   ..   .   .   . 272
   11.3.2 iTk Business Objects                 .   .   .   .   ..   .   .   .   ..   .   .   .   .   ..   .   .   .   ..   .   .   .   .   ..   .   .   . 275

Chapter 12. Device Manager . . . . . . . . . . . . . . . . . .                                            .   .   .   ..   .   .   .   .   ..   .   . . 277
12.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                 .   .   .   ..   .   .   .   .   ..   .   . . 277
12.2 Device Manager on TPSM . . . . . . . . . . . . . . . . .                                             .   .   .   ..   .   .   .   .   ..   .   . . 278
12.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 . . . . . . . . . . . . . .                                              .   .   .   ..   .   .   .   .   ..   .   . . 283
12.4 Device Manager functions . . . . . . . . . . . . . . . . .                                           .   .   .   ..   .   .   .   .   ..   .   . . 284
12.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 . . . . . . . . . . .                                                .   .   .   ..   .   .   .   .   ..   .   . . 288
12.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 . . . . . . . . . . . . . .                                        .   .   .   ..   .   .   .   .   ..   .   . . 290

Appendix A. Special notices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291

Appendix B. Related publications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
B.1 IBM Redbooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
B.2 IBM Redbooks collections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
B.3 Other resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296

How to get IBM Redbooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
IBM Redbooks fax order form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298

Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305

IBM Redbooks review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317




                                                                                                                                                           vii
viii   Introducing Tivoli Personalized Services Manager 1.1
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
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125


x   Introducing Tivoli Personalized Services Manager 1.1
84. Premium configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
85. Hierarchal device type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
86. WAP architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
87. Active components of the Authentication Server (mobile internet) . . . . . 136
88. Example of navigation for business case 1 . . . . . . . . . . . . . . . . . . . . . . . 144
89. The TISM Administration Console dialog box . . . . . . . . . . . . . . . . . . . . . 150
90. TISM Administration Console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
91. Add a New Access Role (1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
92. Add a New Access Role (2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
93. TISM Administration Console (1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
94. TISM Administration Console (2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
95. Add a New Login Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
96. TISM Administration Console (3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
97. Customer care logging page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
98. TISM customer care. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
99. Search results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
100.Subscriber update panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
101.Changing method of payment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
102.Disconnecting a user . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
103.User disconnected. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
104.Enrolling a customer child subscriber . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
105.TISM Reporting Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
106.Selfcare initial page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
107.Logging into Selfcare. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
108.Changing a subscriber’s password . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
109.Change Password confirmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
110.Password successfully changed message . . . . . . . . . . . . . . . . . . . . . . . 174
111.Change Personal Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
112.Changing Personal Information confirmation . . . . . . . . . . . . . . . . . . . . . 176
113.Changing Payment Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
114.Changing method of payment confirmation. . . . . . . . . . . . . . . . . . . . . . . 178
115.Adding a new member (1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
116.Adding a new member (2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
117.Portal software architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
118.JSP Portlet Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
119.Pattern model-view-controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
120.More detail about the architecture of JSP Portlets . . . . . . . . . . . . . . . . . 204
121.Example of welcome.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
122./perso/home without an authentication . . . . . . . . . . . . . . . . . . . . . . . . . . 205
123./perso/home with authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
124./perso/home for WAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
125.Sending a command and parameters to a portlet in the HTTP request . 208
126.Use of LayoutSelectorComponent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212


                                                                                                             xi
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278




xii   Introducing Tivoli Personalized Services Manager 1.1
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
xiv   Introducing Tivoli Personalized Services Manager 1.1
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
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 Alfonso


Comments 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.com




xvi   Introducing Tivoli Personalized Services Manager 1.1
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 Tomlinson's
                             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
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. Gopher's 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 do



2   Introducing Tivoli Personalized Services Manager 1.1
this, TISM is designed for continuous operation, flexible enhancement, and is
highly scalable. The system relies on industry standard hardware and
software components with a flexible architecture for integrating varied
components so that ISPs operating under the TISM umbrella can offer their
subscribers an unlimited variety of Internet value-add features and benefits
without having to alter the core base of information management and
customer service platform that TISM maintains in a centralized database.

TISM is designed to anticipate growth by allowing service providers to initially
deploy a system size that comfortably accommodates their immediate
operational needs and grow it exponentially to support a subscription install
base of millions of users while providing uninterrupted services and
maintaining database consistency.

TPSM expands on TISM. It is a complete business infrastructure that
empowers ISPs to offer new and different types of value-added and
premium-content services. TPSM will carry ISP s into the next generation of
IP communication services.

TPSM extends the capability of present day Internet services to new mobile
and handheld service offerings. TPSM is designed to scale and manage
millions of subscribers and pervasive devices in a feature-rich environment.
TPSM's new operational service paradigm goes beyond the simple
connection of subscribers by single devices. TPSM associates and links
subscribers with individual Personalized Service Environments and allows
each subscriber to access their customized secure environment from a
variety of pervasive devices anywhere and anytime.

Tivoli and IBM will continue to push the envelope on developing scalable
Internet solutions. In 1999 IBM became the first Corporate partner to be
approved for Internet2 access.




                                 Chapter 1. Evolution of the Internet and ISP solutions   3
4   Introducing Tivoli Personalized Services Manager 1.1
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 system's 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
2.1 What's 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 statistics



6   Introducing Tivoli Personalized Services Manager 1.1
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 delete

2.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
Targeted Ads: Interface with Double Click Ads Server
                 Personalization allows users to customize their device's 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 system

2.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
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 device's 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 console's 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
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 subscriber's devices. Device vendors can extend the
                system's 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) devices



10   Introducing Tivoli Personalized Services Manager 1.1
Figure 2. Device Manager Services


2.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 Manager's 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
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 realm's data separate and secure from any others.




                 Figure 3. Enrollment and service provisioning


2.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, Tivoli's 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
Figure 4. Subscriber authentication and access control


2.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
Figure 5. Customer care support


2.2.5 Subscriber personalized service environment and self care
                 Personalization allows users to customize their device's 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
Figure 6. Subscriber personalization and self care

The portal engine is delivered with built-in components, such as Personal
Information Management (PIM), components such as calendar, agenda, and
address book. These components allow the subscriber to customize the
portal pages on their devices. Some additional key functions associated with
pTk are:
1. Multi-device Portal Engine
   Web devices (e.g., PC, Win CE, screenphones), WAP devices
2. User Preferences API
   Users and user groups profiling
3. Referenced Links Management
   Hierarchical repository of links referenced by the portal
4. 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
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 subscriber's 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
                 Manager's 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
Figure 7. Operation support for growing provider business


2.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 ISP's business.




                                           Chapter 2. Overview of Tivoli Personalized Service Manager   17
Figure 8. Supporting emerging Internet business models


2.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 staff's 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 system


18   Introducing Tivoli Personalized Services Manager 1.1
• Sun Solaris support

Industry 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 -
   iTk's)
 • 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
20   Introducing Tivoli Personalized Services Manager 1.1
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 recommended


3.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
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.12


3.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.2


22   Introducing Tivoli Personalized Services Manager 1.1
• 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

To verify that we have installed the fileset, we used the lslpp command as
shown 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 Server


We can see that the bos.net.tcp.client is at the 4.3.3.26 level and we
required 4.3.3.3 as minimum, so with the 4.3.3.26 we do not have any
problem.
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
- 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
• 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
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
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=Image



After it finishes, it will provide you with an installation summary at the bottom
of the command status screen, as shown in the next screen. You should verify
each 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              /=Find


After the successful installation of IBM Developer Kit for AIX, Java Technology
Edition, Version 1.2.2, we proceded to apply PTF 7. See APAR IY12075.


                                                      Chapter 3. Installation checklist   27
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
# 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_dev2


3.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
• 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
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 Edition


4.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 -g'rootvg' -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 -y'dbvg' -s'8' hdisk1
                  crfs -v jfs -g'dbvg' -asize=' 4259840' -m'/db' -Ayes

                  We mount the file systems.
                  mount /var/adm/logs
                  mount /db




© Copyright IBM Corp. 2001                                                                   31
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 user's
                    home?



32   Introducing Tivoli Personalized Services Manager 1.1
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.2
17.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. Don't 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
#!/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
RC=$?;[   $RC -gt $MAXRC ]   && MAXRC=$RC
mklv -a   c -y lvispbctrl1    rootvg 1 hdisk3
RC=$?;[   $RC -gt $MAXRC ]   && MAXRC=$RC
mklv -a   c -y lvispbctrl2    rootvg 1 hdisk3
RC=$?;[   $RC -gt $MAXRC ]   && MAXRC=$RC
mklv -a   c -y lvispbctrl3    rootvg 1 hdisk3
RC=$?;[   $RC -gt $MAXRC ]   && MAXRC=$RC
mklv -a   c -y lvispbuser    rootvg 1 hdisk3

Compare the number of lvispbuser units with the number of units for user
in the table.
RC=$?;[ $RC -gt $MAXRC ] && MAXRC=$RC
mklv -a c -y lvispboem rootvg 1 hdisk3
Finally, compare the number of lvispboem units with the number of units
for oem in the table.
RC=$?;[ $RC -gt $MAXRC ] && MAXRC=$RC

chown oracle8:dba /dev/lvispb*
chown oracle8:dba /dev/rlvispb*

exit $MAXRC
The 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 install
it. It´s specified here, so if you want to install in another volume group (in
our case dbvg) you must change the command to read:
mklv -a c -y lvispboem dbvg 1 hdisk3
If you change the name of the instance for the db, you will notice that the
names for the logical volumes change in the middle for the name of the
instance.
/db/app/oracle/admin/ispb/create/ispbrun1.ksh

#!/bin/sh
ORACLE_SID=ispb
export ORACLE_SID

/db/app/oracle/products/8.1.5/bin/svrmgrl << EOF
connect internal
@/db/app/oracle/products/8.1.5/rdbms/admin/catalog.sql;
CREATE ROLLBACK SEGMENT r0 TABLESPACE SYSTEM
STORAGE (INITIAL 32K NEXT 64K MINEXTENTS 10 MAXEXTENTS 512);
ALTER ROLLBACK SEGMENT r0 ONLINE;




                                           Chapter 4. Building the environment   35
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
                    REUSE



36   Introducing Tivoli Personalized Services Manager 1.1
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


   EOF


22.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
- 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 enterpri

4.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
                    Machine's name [hostname.]: hostname.domainname.com
                    SuiteSpot User [nobody]: enterpri



38   Introducing Tivoli Personalized Services Manager 1.1
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-admin



4.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
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
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
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 Server




42   Introducing Tivoli Personalized Services Manager 1.1
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
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 Server




44   Introducing Tivoli Personalized Services Manager 1.1
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
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 Server




46   Introducing Tivoli Personalized Services Manager 1.1
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
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
Figure 17. Form of CGI for Enrollment Server

3. 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
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 Server




50   Introducing Tivoli Personalized Services Manager 1.1
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
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
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
• 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
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
• 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 information



56   Introducing Tivoli Personalized Services Manager 1.1
• 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
./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
Figure 29. Choosing the database

It is interesting that we are prompted for the database because we are
installing from the TPSM/Oracle CD. It appears that in the future, this will
allow 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 you
will be prompted for the local machine information. DNS domain resolution is
a requirement.




                                            Chapter 4. Building the environment   59
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
Figure 31. Oracle configuration information

While the ITSO did an initial install on itso14.dev.tivoli.com, this screen
capture was done on a separate machine, knight1. This is the reason for the
discrepancy in hostnames on our dialog boxes.

No information was changed on this dialog. Selecting Next opened the next
dialog as shown in Figure 32 on page 62. If you have a Radius server already
installed, you can unselect the internal TISM Radius server.




                                              Chapter 4. Building the environment   61
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
Figure 33. TISM prerequisite checklist

Selecting Next will bring up the dialog to ask you where the prerequisites
have been installed as shown in Figure 34 on page 64. Update the dialog with
any changes from the application defaults.




                                           Chapter 4. Building the environment   63
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
Figure 35. Installation verification dialog

You can scroll up/down the information that you have chosen from the
previous panels. When you have verified that it is correct select Next to start
the install.

While it is installing this version of the install code does not display a status
window. While the install document tells us to look at
/installdir/TivTSM/install/tisminstall.log, that file is not written until the
installation is complete or fails. You cannot tail the file to check the status of
the installation. After the installation has completed a dialog will open as
shown in Figure 36 on page 66.




                                               Chapter 4. Building the environment   65
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
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/$1


3. 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 stop
5. Start all the Netscape servers:
   /etc/rc.webservers start

4.6.1.2 IBM WebSphere Application Server configuration
This 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.sh
6. 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.xml

Now we can start the Admin Console (Figure 37 on page 68) to verify the
creation of the application servers. Go to the /usr/WebSphere/AppServer and
issue ./adminclient.sh&. Ignore the following warning messages:


                                             Chapter 4. Building the environment   67
[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
Figure 38. Starting up an Application Server



4.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
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
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:
                     dbstart


4.8.2 Start Provisioning server
               Change to the /usr/TivTSM/provisioning/bin directory and issue:
                     nohup ./StartProvServer.ksh > /var/adm/logs/ProvServ.log


4.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.txservers


4.8.4 Start Netscape Servers
               To start up the Netscape Servers, go to /etc directory and enter:
                     ./rc.webservers start


4.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
72   Introducing Tivoli Personalized Services Manager 1.1
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
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:
                  • Realms



74   Introducing Tivoli Personalized Services Manager 1.1
• Registration names
 • Access codes
 • Deals
 • Deal text
 • Enrollment metrics

The enrollment configuration objects have a structure. This structure is
required to create the enrollment object as shown in Figure 42.




Figure 42. Structure of the enrollment objects

A realm needs a registration name to be able to enroll new users. A
registration name requires an access code to be able to work.

For marketing purposes, we have deals and each deal has a deal text, which
explains the deal, for example, a deal, FREE, could have as deal text, you
don’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
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
Figure 44. Dialog box for the creation of Realm


5.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
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 subscriber's 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
Figure 45. Registration Names dialog box


5.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
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
Figure 46. Flow of a multi-access registration name

An example of creation of access code:
1. Select the new registration name, USER_FOR_ENROLL
2. Press the right mouse button and select Add -> Access Code
3. The dialog box shown in Figure 47 on page 82 appears:




                                           Chapter 5. Enrollment and service provisioning   81
Figure 47. Access Code dialog box


5.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
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
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
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 finish




Figure 50. Deal text dialog box

       3. A dialog box to set the properties will appear.

5.1.5.1 Setting the properties for a deal
To set the properties in the deal, you have to set the values in the dialog box
shown in Figure 51 on page 86.




                                       Chapter 5. Enrollment and service provisioning   85
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
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 90

5.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
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 property




88   Introducing Tivoli Personalized Services Manager 1.1
Figure 54. Dialog to create the property

4. 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
Figure 55. Creating a value for FAVBOOKS property


5.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
Figure 56. Table of deals

3. 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
Figure 57. Example of how to relate a deal with several Realms


5.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
Figure 58. Relation of access code and deals


5.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
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
Figure 61. Example of selection of created Sales Channel in the new Access Code


5.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
3. Select Add. A new dialog box will be displayed as shown in Figure 62.




                 Figure 62. Payment Method dialog


5.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
Figure 63. Method of Payment list dialog

4. 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 table

5. 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
Figure 65. Example of how to relate the MOP list to MOPs


5.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
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
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
<!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>Here's 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, you
pass to the next window (Figure 68 on page 102), which prompts the user for
an access code. We have two; PUBLIC and CHEAP. In this example we will
enroll with both to show the differences due to the different configuration.




                                      Chapter 5. Enrollment and service provisioning   101
Figure 68. Enroll with access code PUBLIC

                After this, the agreement window appears as shown in Figure 69.




                Figure 69. Agreement window



102   Introducing Tivoli Personalized Services Manager 1.1
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
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
Figure 73. Details of chosen deal

Access information and a choice for method of payment is shown (see
Figure 74).




Figure 74. Payment Method details for enroll



                                          Chapter 5. Enrollment and service provisioning   105
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 screen



106   Introducing Tivoli Personalized Services Manager 1.1
Selecting Continue on Figure 76 on page 106 will bring up Figure 77, which
provides additional information for configuring your machine to access the
service.




Figure 77. Configuration enroll

Now we are going to see what happens when we use the CHEAP access
code in the screen shown as Figure 68 on page 102 to enroll a new user. First
we go to the enroll main page (Figure 67 on page 100) and proceed to enroll
a new one following the steps that we mentioned earlier in this chapter; see
Figure 68 on page 102 through Figure 77. On the screen that asks us to
choose the deal, we select the second option as shown in Figure 78 on
page 108.




                                  Chapter 5. Enrollment and service provisioning   107
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
Figure 79. Structure of directories of enroll

The content directory contains the JSPs. Their names and functions are
described 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
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 file




110   Introducing Tivoli Personalized Services Manager 1.1
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
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
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 DB



6.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
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
Figure 82. Active components of the Authentication Server for internet access

The 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 in
the next screen it is a form with a Java Bean that creates a session with the
information passes.




                                 Chapter 6. Subscriber authentication and access control   115
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
<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 and
the 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
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.log




118   Introducing Tivoli Personalized Services Manager 1.1
When the authentication is delegated to the WES authentication proxy, the
Authenticator.properties file must be replaced by the
Authentication.properties.wes. This change must be done at the end of
installation, before application servers start. The following screen is the
Authenticator.properties file.




                           Chapter 6. Subscriber authentication and access control   119
######################################################################
                  # 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 gateway




120   Introducing Tivoli Personalized Services Manager 1.1
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.log




6.3.1.2 DBPool.properties
DBPool.properties is used by the authentication server and pTk. It specifies
the connection to the TISM database. These are the standard JDBC
parameters:
JDBC.dbDriver=oracle.jdbc.driver.OracleDriver

This line specifies the driver, in this example, Oracle.
JDBC.dbUser=stage_master
JDBC.dbPassword=oracle

This is the user and password to connect to TISM database.

The following parameters tune the JDBC Connection pool used by the
authentication and pTk.
MaxDBConnections=5
MinDBConnections=2

The following specifies the TISM data model level.
tsm.level=4.0




                               Chapter 6. Subscriber authentication and access control   121
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
In multi-domain mode, the following parameter specifies the URL of the
authentication server (not including the URL path).
authentication.server.url=http://hostname:8080

In multi-domain mode, the following parameter specifies the URL path of the
authentication server.
authentication.form.path=/authentication/en/authentication.jsp

The next parameters define the type of authentication stage. For more
information, see Figure 6.1, “Authentication stages” on page 112.
authentication.type1=ip|username|no
authentication.type1.header=ip|<HTTP header name>

The first parameter defines the type of authentication for stage 1. If no value
is specified, it uses authentication stage 2 only. If the value IP is specified, it
tries to identity a dial-up user by their IP Address in the Radius Active
Session Table. If the value username is used, it searches for that username in
the specified HTTP Header. The syntax of the username cannot be
“username” or “username@realm.” The second parameter specifies the
header name where the IP address of the username must be fetched. IP
means the IP address contained within the original IP header.

The following parameter specifies the type of authentication for stage 2; by a
HTML (or WML) form, or by a basic HTTP authentication.
authentication.type2=basic|form

The next parameter covers Single Sign-On Cookies. For more information,
see Figure 6.2, “Authentication modes” on page 113.
authentication.sso.enabled=yes|no

If this parameter is set to yes, the central authentication server sets a Single
Sign-On Cookie to avoid prompting the user for several successive
authentications. An SSO Cookie only works in multi-domain mode.




                             Chapter 6. Subscriber authentication and access control   123
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
Figure 83. Cluster configuration

On the authentication checker side, the Webmaster must specify the list of
premium services ids hosted by a thin server, and provide a list of URL paths
prefixes for each of them as shown in Figure 84.




Figure 84. Premium configuration



                                   Chapter 6. Subscriber authentication and access control   125
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
######################################################################
# 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 won't 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.com
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/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
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=yes




128   Introducing Tivoli Personalized Services Manager 1.1
#
# Key index for cookie encryption
authentication.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 = 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
#

######################################################################
# 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
# >> 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 URL's patterns protected by each tier
                  # This list must only contain absolute path (starting with /)
                  # When several URL's 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.SampleProfiler




130   Introducing Tivoli Personalized Services Manager 1.1
6.3.1.4 IE.properties
The IE.properties is the properties for Internet Explorer browsers as seen in
the 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-type's 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 LayoutComponent's
 ######################################################################
 #
 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.properties
Nav4.properties is the properties for Enterprise Navigator browsers, as seen
in the following screen.




                              Chapter 6. Subscriber authentication and access control   131
.
                    ######################################################################
                    # 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-type's 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 LayoutComponent's
                    ######################################################################
                    #
                    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/IE




132   Introducing Tivoli Personalized Services Manager 1.1
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/jpeg



6.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
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
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
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
<%@ 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. In
that code, the JSP sets the type of mime type and creates the Java Bean auth
to collect the data needed for authentication.

The rest of the code is a WML form. As you can see the SMSrealm and
SMSurl has been changed by hand. These fields are the REALM and the
URL to go back to when the user is authenticated that we used because we
don’t pass these parameters.

The configuration for the servlets will be explained in the sample business
cases because it depends on the environment.




                               Chapter 6. Subscriber authentication and access control   137
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 = yes




138   Introducing Tivoli Personalized Services Manager 1.1
The recommended value is “no” because it can be used when devices do not
support HTTP redirect properly, but we set it as yes because the mobile
devices that we are using support HTTP redirection.

Because we don’t have a gateway, we set:
authentication.type1 = no
authentication.type2 = form

These parameters disable auto logon and prompt the user with a log-in WML
form.
authentication.sso.enabled = no

Although we are not using a gateway at the moment, we set this parameter as
no. Many WAP gateways do not support cookies. In that case, it is better to
disable the SSO Cookie. The IBM WAP gateway supports session cookies,
and can be used for SSO.
authentication.openurl=http://www.ibm.com

If the servlet doesn’t receive any ComeBackURL, it uses this one.
authentication.default.realm=IBM

If the servlet doesn’t receive the REALM that is using, it would get this one as
default.

See the next screen for the WAPAuthentication.properties code.




                            Chapter 6. Subscriber authentication and access control   139
######################################################################
                  # 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 won't 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=Cookie




140   Introducing Tivoli Personalized Services Manager 1.1
######################################################################
# 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://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
######################################################################
                  # 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 URL's patterns protected by each tier
                  # This list must only contain absolute path (starting with /)
                  # When several URL's 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.com




142   Introducing Tivoli Personalized Services Manager 1.1
#######################################################################
 # 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




Device.properties
The Device.properties is an example of properties file for devices. The
explanation 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 an
example. The first code line is a label for the device. After that, it sets the
mime types supported and the presentation properties for the device. See the
next 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 LayoutComponent's
 ######################################################################
 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
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 1


6.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
######################################################################
# 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 won't 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




                             Chapter 6. Subscriber authentication and access control   145
# 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
authentication.session.used=yes

######################################################################
# 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 URL's patterns protected by each tier
# This list must only contain absolute path (starting with /)
# When several URL's 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
######################################################################




                             Chapter 6. Subscriber authentication and access control   147
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
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
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 Console




150   Introducing Tivoli Personalized Services Manager 1.1
• 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
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
This will open the window shown in Figure 95. Fill out all the information. In
the Access Profile, choose the one that you just have created, in our example
CSR_ITSOCHANNEL.




Figure 95. Add a New Login Name

The Login we just created is shown in Figure 96 on page 154.




                                  Chapter 7. Using Customer Care and Director Tool   153
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
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
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
Figure 98. TISM customer care


7.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 subscriber's 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
• If the search produced a list of subscribers, select the correct one from the
                    list by double clicking the subscriber's 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 results




158   Introducing Tivoli Personalized Services Manager 1.1
Figure 100. Subscriber update panel


7.4.3 Changing a subscriber's 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 subscriber's 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
• 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 payment


7.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
Figure 102. Disconnecting a user




           Figure 103. User disconnected


7.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
• 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 subscriber




162   Introducing Tivoli Personalized Services Manager 1.1
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
• 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 Program



7.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 application's URL. The “Additional Services” button
                will then link to and launch the external application.




164   Introducing Tivoli Personalized Services Manager 1.1
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
             • Subscriber's first name
             • Subscriber's 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 doesn't
            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 won't.

            A User Name Field search assumes that what you type is the beginning of the
            search object. If you type “nge” won't 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
            subscriber's data is displayed. For business accounts the Account Number
            does appear when the subscriber's data is displayed




                                              Chapter 7. Using Customer Care and Director Tool   165
166   Introducing Tivoli Personalized Services Manager 1.1
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
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
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.properties
located in /usr/TivTSM/selfcare/. In Table 13, you can see each of the
variables 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
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
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
                                                                        angePassword4PC



8.3 Running Subscriber Selfcare
           The URL to the Subscriber Selfcare applications should be provided as a link
           to the subscriber's 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
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 Members

8.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
Figure 107. Logging into Selfcare

When we introduced the username and password we were authenticated in
the Authentication Server, (please refer to Chapter 6, “Subscriber
authentication and access control” on page 111),and now we are ready to
change the password as is shown in Figure 108.




Figure 108. Changing a subscriber’s password




                                               Chapter 8. Subscriber Selfcare   173
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 message


8.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 on



174   Introducing Tivoli Personalized Services Manager 1.1
page 172) choose Change Personal 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 Personal Information as shown in Figure 111.




Figure 111. Change Personal Information

When 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
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
Figure 113. Changing Payment Information

Update the information and click Change Payment Information. A
confirmation screen will be displayed (Figure 114 on page 178), in this
screen, click Yes, Change Payment Information to confirm the changes.




                                             Chapter 8. Subscriber Selfcare   177
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
Figure 115. Adding a new member (1)




                                      Chapter 8. Subscriber Selfcare   179
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
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
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 portlet

9.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
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 Authentication

9.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
Figure 117. Portal software architecture



9.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
<%@ 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 user's 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 user's 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
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
                                                                 meration



186   Introducing Tivoli Personalized Services Manager 1.1
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 use

9.3.2.2 Account.class
This class is an access Bean that wraps the TISM EBILL_ACCOUNTINFO
and EBILL_ACCOUNT tables. An account can be either a residential account
or a business account. Business accounts can be organized in a hierarchy
mapped on the company organization. This access Bean is read only.



                          Chapter 9. Subscriber Personalized Service Environment   187
• 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 different



188   Introducing Tivoli Personalized Services Manager 1.1
from the Java Properties model; it can store several values with the same
name. It inherits from NameValuePairs. For an explanation, refer to the
NameValuePairs class description.

package com.tivoli.tsm.perso;

public class AccountNameValuePairs extends NameValuePairs;

9.3.2.6 AddressBook.class
This class is an access Bean that stores and retrieves the address book
entries 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 user's 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
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
<%@ page buffer="none" import="com.tivoli.tsm.perso.* %>
<HTML><BODY>
<%
// Create, read and populate the AddressBook bean, or just retrieve it from session
AddressBook addbook = AddressBook.getBean(request);

// Add a new contact
AddressBookEntry 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.class
This class is a utility class used to add or store Appointments in the Agenda
access Bean. It is not an access Bean.

package com.tivoli.tsm.perso;

public class Appointment;




                              Chapter 9. Subscriber Personalized Service Environment   191
• 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 “HH'h'mm”
                  • public String displayEnd()
                    This method displays the end date of the appointment (start date +
                    duration) as a string with the format “HH'h'mm”
                  • 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
• 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.class
This class is an access Bean that stores and retrieves the agenda entries of a
user.

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
• 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
• 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.class
This class is an access Bean that retrieves the members of a family. It inherits
from 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
!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
• 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 user's 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
<%@ 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 user's NameValuePairs.




198   Introducing Tivoli Personalized Services Manager 1.1
• 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
<!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 “user's
                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 periodically




200   Introducing Tivoli Personalized Services Manager 1.1
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 user's 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 JSP's by
           including building blocks; the portlets. Because the requirements for PC,
           PDA's, 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
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
Figure 118. JSP Portlet Architecture


9.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
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 JSP's
                    dispatching rules: portlet JSP = f (portlet Command, Device Type). It
                    contains all the references to the portlet JSP's.
                  • 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 Portlets




204   Introducing Tivoli Personalized Services Manager 1.1
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
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=pageindex



206   Introducing Tivoli Personalized Services Manager 1.1
• 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.jsp
page./WEB.home=/perso/components/layoutselector/homehtml.jsp
page./WEB.addrbook=/perso/components/layoutselector/addrbookhtml.jsp
page./WEB.agenda=/perso/components/layoutselector/agendahtml.jsp
page./WEB.news=/perso/components/layoutselector/newshtml.jsp
page./WEB.logout=/perso/components/layoutselector/logouthtml.jsp
#
######################################################################
# Pages for WML devices
######################################################################
#
page./WAP/R380.defaultcmd=/perso/components/layoutselector/homewml.jsp
page./WAP/R380.minimize=/perso/components/layoutselector/homewml.jsp

page./WAP/NokiaEmul.defaultcmd=/perso/components/layoutselector/homewml.jsp
page./WAP/NokiaEmul.minimize=/perso/components/layoutselector/homewml.jsp

page./WAP/nokia7110.defaultcmd=/perso/components/layoutselector/homewml.jsp
page./WAP/nokia7110.minimize=/perso/components/layoutselector/homewml.jsp

page./WAP/R320.defaultcmd=/perso/components/layoutselector/homewml.jsp
page./WAP/R320.minimize=/perso/components/layoutselector/homewml.jsp




                            Chapter 9. Subscriber Personalized Service Environment   207
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
9.4.4.1 Component API
This static method includes a portlet within a page (servlet or Java Server
Page).

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 API
Each portlet can receive commands that are processed by the
ComponentSession::service() method.



                             Chapter 9. Subscriber Personalized Service Environment   209
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 user's 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 JSP's. For portlets that need to access the TISM data base, the
                    service() method usually loads at the User's 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 JSP's 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
• public static ComponentSession getSession(HttpServletRequest
               request)
                - HttpServletRequest request: the HTTP request object.
               This method is used by the portlet JSP's to retrieve the current user's
               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 JSP's
            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 JSP's controls (buttons) to
               the portlet
             • The list of accessors that the JSP's can use to retrieve the “model” data
               Beans

9.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
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 page




212   Introducing Tivoli Personalized Services Manager 1.1
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 logout

Class definition
package com.tivoli.tsm.perso.components;

public class LayoutSelectorComponent extends LayoutComponent;

public class LayoutSelectorComponentSession extends
LayoutComponentSession;

9.5.1.2 ComponentSelectorComponent
ComponentSelectorComponent displays the list of available services to the
user. The user chooses services, and that information is saved in the user
profile. This is used to display, for instance, favorite applications in a
homepage. See examples in Figure 127 on page 214 and Figure 128 on
page 214.




                           Chapter 9. Subscriber Personalized Service Environment   213
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
######################################################################
# 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 Calendar
application.icon.calendar=/images/calendar.gif
application.componenturl.calendar=/perso/calendarComponent
application.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 Agenda
application.icon.agenda=/images/agenda.gif
application.componenturl.agenda=/perso/agendaComponent
application.iconclickurl.agenda=/perso/home?layout=agenda&agenda=maximize
application.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 Links
application.icon.links=/images/world.gif
application.componenturl.links=/perso/linkSelectorComponent
application.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 Book
application.icon.addressBook=/images/addrbook.gif
application.componenturl.addressBook=/perso/addressBookComponent
application.iconclickurl.addressBook=/perso/home?layout=addrbook&addressBook=maximize
application.devicetype.addressBook=/




                            Chapter 9. Subscriber Personalized Service Environment   215
######################################################################
                  # 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 user's 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 JSP's : 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.jsp




216   Introducing Tivoli Personalized Services Manager 1.1
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
   ximize

For external services (with no portlet) the property
application.componenturl.agenda is blank.

The icon click URL can be completed dynamically with the user's profiling
parameters. It uses pre-defined macros between * characters:

   http://www.yahoo.com/weather?q=*getCity*

URL macros definition
The 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’

Commands
The 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
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 user's
                                         selection.

                  add                    Adds a new            myapplihtml.jsp      myappliwml.jsp
                                         application to the
                                         user's profile, and
                                         displays the user's
                                         selection.

                  delete                 Deletes an            myapplihtml.jsp      myappliwml.jsp
                                         application from
                                         the user's profile,
                                         and displays the
                                         user's selection.

                  myappli                Displays the user's   myapplihtml.jsp      myappliwml.jsp
                                         selection.

                  customize              Allows modification   customapplihtml.js
                                         of the user's         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
9.5.1.3 Aggregator
The Aggregator is responsible for filtering and aggregating content into a
page, such as the head-lines of the portal. An aggregator handles a list of
Contents. For each user, that content can be filtered out according to filtering
rules specified by the site WebMaster, such as new promotions targeting
some categories of users.

The aggregated contents are presented in a JSP selected according to the
device type. Those JSPs are responsible for “skinning” the aggregated
contents with the correct mark-up language (HTML, WML, etc). The contents'
abstract and detailed texts should not include any markup tags so they are
device type independent.

Portlet configuration file
The file used for the configuration of this servlet is
/usr/TivTSM/personal/servlet/properties/com/tivoli/tsm/perso/components/Ag
gregatorComponent.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.jpg

The 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 rules
based on the user's profile. This class must implement the Filter API. Its
name is specified in the property:

   aggregator.filterclass=com.tivoli.tsm.perso.filter.SampleFilter

The component is shown in the following screen.




                           Chapter 9. Subscriber Personalized Service Environment   219
######################################################################
                  # 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
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.class
The 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
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 user's 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 portlets

9.6.1 Customizor Portlet
                The Customizor Portlet allows you to capture parameters from the HTTP
                requests, validate them, and store them into the user's 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
######################################################################
# 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,politics,soccer,golf,basketball
######################################################################
# 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
######################################################################
#
######################################################################
# Pages for WML devices
######################################################################
#
# .../...




                            Chapter 9. Subscriber Personalized Service Environment   223
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 user's profile. This method can
                    be used in a portlet JSP to propose selections with check boxes. Choices



224   Introducing Tivoli Personalized Services Manager 1.1
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 macro's
            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
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 user's         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
• 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 user's 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
######################################################################
                  # 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.jsp




228   Introducing Tivoli Personalized Services Manager 1.1
The following properties (see the next screen) specify the date and time
format. 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 yyyy


Portlet commands processed by Calendar
Table 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 definition
package com.tivoli.tsm.perso.components;

public class CalendarComponent extends Component;

public class CalendarComponentSession extends ComponentSession;




                             Chapter 9. Subscriber Personalized Service Environment   229
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 E




230   Introducing Tivoli Personalized Services Manager 1.1
The following properties specify the default minimum and maximum hours to
display 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 appointment
displayed.


 #################################################
 #min and max hours to display in agenda
 agenda.min.hour=8
 agenda.max.hour=18



The following properties specify the garbage collector properties. The
periodicity defines when the garbage collector must be activated in order to
delete elder appointments. The appointment validity time is defined by the
last properties. In this case, every six months the garbage collector is
launched to delete all appointments whose start dates are more than six
months ago.


 ##############################
 # For Garbage Collector
 ##############################
 #GC periodicity (in months)
 agenda.gc.periodicity=6
 #appointment validity time (in months)
 agenda.gc.apptvaliditytime=6


Portlet commands processed by Agenda
The 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
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
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
• 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
Command            Description            Dispatched              Dispatched WML
                                          HTML JSP                JSP

minimize           Minimizes the          findaddrbookentrie      minaddressbookw
                   component              shtml.jsp               ml.jsp


maximize           Opens all the          displayaddressboo       displayaddressboo
                   address book           khtml.jsp               kwml.jsp
                   entries

search             Allows searching                               findaddrbookentrie
                   for an entry by the                            swml.jsp
                   first and lastname
                   characters

setfilter          Applies a filtering    displayaddressboo       displayaddressboo
                   command by             khtml.jsp               kwtml.jsp
                   lastname

addentry           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 entry

addcommand         Adds a new contact     manageaddrbooke         addaddressbooken
                                          ntrieshtml.jsp          trywml.jsp



delupdatecomman    Updates or deletes     displayaddressboo       displayaddressboo
d                  an existing entry      khtml.jsp               kwml.jsp



endmanageentry     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,     displayaddressboo
y                  update or delete       khtml.jsp
                   command




                          Chapter 9. Subscriber Personalized Service Environment   235
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 user's 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
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 user's profiling information.




                           Chapter 9. Subscriber Personalized Service Environment   237
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 user's 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
It allows the portal Webmaster to define arbitrary rules that are evaluated at
the beginning of each user session.

Typically those rules can:
 • Load the user's profiling data.
 • Test any user's profile values, and other values provided by the JDK such
   as time and date.
 • Perform dynamic user's grouping; if (condition), then user belongs to a
   group.
 • Compute and save new properties in the user's 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 a
class that implements the Profiler interface. That class is loaded by name by
the authentication Checker; its name is specified in the property files:

Web devices:
/usr/TivTSM/personal/servlet/properties/com/tivoli/tsm/authentication/Default
Authenticator. properties

WAP devices:
/usr/TivTSM/personal/servlet/properties/com/tivoli/tsm/authentication/WapAu
thenticator.properties

The property is:

authentication.profiler.class=com.tivoli.tsm.perso.filter.SampleProfiler

A sample Profiling class is provided in
com.tivoli.tsm.perso.filter.SampleProfiler as shown in the next screen.

Interface definition
package com.tivoli.tsm.perso.filter;

public interface Profiler;

Methods
public void createDynamicProfile(javax.servlet.http.HttpServletRequest
request);




                             Chapter 9. Subscriber Personalized Service Environment   239
This method is called at each user's session start. The user's 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
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
<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
######################################################################
 # 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 131
on page 244.




                             Chapter 9. Subscriber Personalized Service Environment   243
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 news




244   Introducing Tivoli Personalized Services Manager 1.1
Figure 133. Content news

Now, you have a news service. If you have a problem that you don’t get the
changes in your page, restart the personal server.

Customizing the desktop themes

In the next screen, the themes are specified in the
AgregatorComponent.properties after the topics. Once you set this, there are
a few more steps. Create a style sheet in /usr/TivTSM/personal/content/css
with the same name that you specified as the theme name in the
AgregatorComponent.properties. For example, if you specify a theme name
as verde, then you will have in the /usr/TivTSM/personal/content/css a style
sheet file called verde.css.

The result is the shown in the Figure 134 on page 247 and Figure 135 on
page 247.




                           Chapter 9. Subscriber Personalized Service Environment   245
######################################################################
                  # 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.jsp




246   Introducing Tivoli Personalized Services Manager 1.1
.




Figure 134. The selection of themes




Figure 135. An applied theme

Logout
This TPSM component is for logging out from the personalization server and
TPSM. The next screen shows the code for this component.




                               Chapter 9. Subscriber Personalized Service Environment   247
<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 1




248   Introducing Tivoli Personalized Services Manager 1.1
Figure 137. Example of link selector step 2




Figure 138. Example of link selector step 3

If you want to personalize the layout of the LinkSelector, go to
/usr/TivTSM/personal/content/component/linkselector and choose the file that
you are using.

Calendar
This 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 next
screen.


 <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
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
Figure 140. Example of Agenda component

ComponentSelector
This TPSM component permits the subscriber to customize the applications
that he/she wants to have in his/her homepage. An example of the code to
add to a homepage is shown in the next screen. Later on, we are going to
explain 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 a
homepage.




                              Chapter 9. Subscriber Personalized Service Environment   251
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
######################################################################
# 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 Calendar
application.icon.calendar=/images/calendar.gif
application.componenturl.calendar=/perso/calendarComponent
application.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 Agenda
application.icon.agenda=/images/agenda.gif
application.componenturl.agenda=/perso/agendaComponent
application.iconclickurl.agenda=/perso/home?layout=agenda&agenda=maximize
application.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 Links
application.icon.links=/images/world.gif
application.componenturl.links=/perso/linkSelectorComponent
application.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 Book
application.icon.addressBook=/images/addrbook.gif
application.componenturl.addressBook=/perso/addressBookComponent




                            Chapter 9. Subscriber Personalized Service Environment   253
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 user's 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 user's 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 JSP's : 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
#
# 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.jsp
page./WAP/nokia7110.delete=/perso/components/componentselector/myappliwml.jsp
page./WAP/nokia7110.myappli=/perso/components/componentselector/myappliwml.jsp

page./WAP/R320.defaultcmd=/perso/components/componentselector/myappliwml.jsp
page./WAP/R320.minimize=/perso/components/componentselector/minappliwml.jsp
page./WAP/R320.maximize=/perso/components/componentselector/maxappliwml.jsp
page./WAP/R320.add=/perso/components/componentselector/myappliwml.jsp
page./WAP/R320.delete=/perso/components/componentselector/myappliwml.jsp
page./WAP/R320.myappli=/perso/components/componentselector/myappliwml.jsp

# .../...




                            Chapter 9. Subscriber Personalized Service Environment   255
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
<!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.t
ext.*" %>
<%
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"><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>




                            Chapter 9. Subscriber Personalized Service Environment   257
<!----------- 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
<TR><TD align="left"><font color="black"><A
HREF="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
}
                    %>

                      </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
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
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
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 ISP's 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 company's identity.

                  The Internet Signup file (INS file) created at the end of enrollment and
                  downloaded to a subscriber's PC will configure the subscriber's browser to
                  use the virtual ISP's settings (for home page, e-mail and newsgroup settings).

                  Virtual ISPs can configure Tivoli Internet Services Manager's Customer Care
                  component to conform to their company's identity and support their
                  subscriber's 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
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
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 ISP's 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 Manager's 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
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 Provisioning



10.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 84




266   Introducing Tivoli Personalized Services Manager 1.1
• 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
268   Introducing Tivoli Personalized Services Manager 1.1
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
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
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
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
Figure 148. iTk core classes structure

The iTk permits the integration of applications without knowing the structure
of the database tables. Some examples of what the iTk core classes do are:




                                                Chapter 11. Integration Toolkit   273
• 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
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
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
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
12.2 Device Manager on TPSM
               The Device Manager feature on TPSM provides a flexible framework and set
               of services for managing a subscriber's devices. Device vendors can extend
               the system's 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 TPSM



12.3 Device Manager Components
                Device Manager consists of six components:

                • Device Manager server



278   Introducing Tivoli Personalized Services Manager 1.1
• 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 provider's 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
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 device




280   Introducing Tivoli Personalized Services Manager 1.1
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
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:
                Developer's 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
• 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
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 the


284   Introducing Tivoli Personalized Services Manager 1.1
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        Supported



12.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
• Generic support for Windows CE devices

12.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
                characteristics of the device class itself. Device Manager supplies a device
                plug-in for the supported PalmOS devices that includes the following Java
                classes:
                  • The Palm device class
                  • The SW_DIST job class for software distribution
                  • The DEVICE_CFG job class for device configuration

                For more information about the physical Palm computing devices themselves,
                see the Palm organizer information on the Palm Computing Web site:
                http://www.palm.com


12.5.2 Compaq Aero 8000 H/PC Pro devices
                The Compaq Aero 8000 Handheld PC Professional (Aero 8000) is a handheld
                PC or subnotebook for sales and service people, mobile business
                professionals, and other field personnel who need access to their enterprise
                network or the Internet. This handheld PC includes Microsoft Windows CE for
                Handheld PC Professional Edition, Version 3.0 operating system. The Aero
                8000 is light in weight at only three pounds, and has resources unavailable
                with many palm-like devices. With the Aero 8000, you can access the Internet
                or the enterprise network with an Ethernet PC card or internal modem. The
                Aero 8000 also includes these features:
                  • Instant-on so there is no waiting to boot
                  • Flash memory to store applications in non-volatile memory
                  • A 10-inch SVGA (800 x 600) screen providing a 256-color display
                  • A 95% size keyboard
                  • A touch pad system for a point-and-click Windows environment


286   Introducing Tivoli Personalized Services Manager 1.1
• A built-in smart card reader
             • Pocket e-mail

            The Aero 8000 can be pre-configured for Device Manager by a service
            provider. The consumer has quick access to the Internet through the Pocket
            Internet Explorer browser. For more about the Aero 8000, see the Compaq
            Web site. See http://www5.compaq.com/products/handhelds/8000/

            The Device Manager software includes a device plug-in for the Aero 8000 and
            its agent program. The Aero 8000 plug-in installs with the Device Manager
            software. The communication protocol between the Aero 8000 plug-in and its
            agent program is based on the HTTP protocol. The device agent program
            works only as an HTTP client.

12.5.3 NetVista Internet Appliance devices
            The NetVista Internet Appliance is a device for Internet access, e-mail, voice
            mail, Personal Information Management (PIM), and other pervasive
            computing tasks. This device uses the PvC (pervasive computing) client stack
            as the base architecture, and then places a shell and applications within that
            architecture.

            The PvC client stack is a set of software components for a wide range of
            non-traditional devices, such as Service Gateway or Networked Vehicle. The
            stack consists of a real time operating system, native programs, a JVM, the
            Service Management Framework, and other services.

            To manage the NetVista Internet Appliance efficiently, the plug-in software for
            Device Manager server and the device agent program are needed. The
            plug-in software and the device agent program communicate with each other
            using a protocol based on the HTTP or HTTPS protocol, and perform system
            management tasks.

            The plug-in software functions as the servlet on the HTTP server, and the
            device agent program is implemented as a Service Management Framework
            bundle written in Java and functions as the client. When disconnected from
            the service provider's network, the display on the NetVista Internet Appliance
            presents a rest page, which is a Web page customized by the service
            provider to display advertising and other information. The NetVista Internet
            Appliance can be pre-configured for Device Manager by a telephone
            company or service provider.




                                                             Chapter 12. Device Manager   287
The NetVista Internet Appliance also includes:
                  • A unique ID, such as serial number or NIC ID
                  • The PvC client stack
                  • The ability to handle special HTTP messages from the enrollment program
                    for starting the system management agent after the enrollment is complete
                  • Support for HTTP redirection
                  • Support for SSL

                For more information about the NetVista Internet Appliance, see the NetVista
                Web site: http://www.pc.ibm.com/us/netvista/index.html

12.5.4 Generic Windows CE devices
                A Windows CE device is a handheld PC, Palm-type device, pocket-type
                device, or subnotebook for sales and service people, mobile business
                professionals, and other field personnel who need access to their enterprise
                network or the Internet. This handheld PC includes Microsoft Windows CE for
                Handheld PC Professional Edition, Version 3.0 operating system. Windows
                CE devices have resources unavailable with many Palm-type devices. With
                Windows CE devices, you can access the Internet or the enterprise network
                with an Ethernet PC card or internal modem. Windows CE devices also
                include these features:
                  • Instant-on so there is no waiting to boot
                  • Flash memory to store applications in non-volatile memory
                  • Typical screen sizes are 240x320, 640x240, 640x480, 800x480, and
                    800x600
                  • Typical CPUs include SH-3, SH-4, MIPS, and StrongARM
                  • Pocket Internet Explorer browser

                Because screen size and resolution varies among the Windows CE devices,
                the Device Manager user interface may change for different types of Windows
                CE devices. In addition, the CPU type and file structure can differ among the
                various Windows CE devices.

                A Windows CE device can be pre-configured for Device Manager by a service
                provider. The consumer has quick access to the Internet through the Pocket
                Internet Explorer browser.

                The Device Manager software includes a device plug-in for Windows CE
                devices and the Windows CE agent program. The Windows CE plug-in



288   Introducing Tivoli Personalized Services Manager 1.1
installs with the Device Manager software. The communication protocol
            between the Windows CE plug-in and the Windows CE agent program is
            based on the HTTP protocol. The device agent program works only as an
            HTTP client.


12.6 Features of Device Manager
            This section describes the features of Device Manager.

12.6.1 Extensibility for managing various devices
            In order to provide extensibility to manage a variety of devices, the Device
            Manager server supports a “plug-in” architecture. Device Manager provides
            some basic device modules that can be easily extended to support various
            device types. And Device Manager can support more than one device type at
            the same time.

            TPSM Device Manager provides Device plug-ins that support Palm Pilot,
            Aero8000, general WindowsCE, and NetVista Internet Appliance by default.
            Other device venders, service providors, and ISPs can develop their own
            plug-ins with specialized functions to meet their needs. Generic functions are
            handled by other components of the Device Manager (that is Device
            Management Server servlets), while functions specific to a class of devices
            are localized to the plug-in for that device class.

            Along with the Device plug-ins, device agents are provided. Device agents
            reside on the device, and communicate with the server side plug-in to perform
            actual installation or parameter settings. The communication between a
            device plug-in and the device agent is device-class-dependent and is
            determined by the integrator who writes the plug-in code. For example, the
            WAP device vender can develop “WAP device plug-in” and the agent that
            uses WAP as its communication protocol between the plug-in and the agent.
            TPSM Device Manager plug-ins, which support Palm Pilot, Aero8000, general
            WindowsCE devices, and NetVista Internet Appliance, use HTTP (and
            HTTP-S) as their transport mechanism between the plug-in and the device
            agent. This allows device management traffic to pass through various kinds of
            network elements such as fire walls. However, it imposes some restrictions on
            the interaction between devices and the Device Manager, primarily that
            interactions take the form of request/response pairs initiated by the device.

            The Device Management server API defines programming interface between
            a Device plug-in and Device Management Dispatcher or Device Management
            Server servlet. The device management server API is designed to be generic
            and protocol-independent to support many kinds of devices and jobs.


                                                             Chapter 12. Device Manager   289
Plug-ins developers use this API to write plug-in code.

12.6.2 Centralized management
                Device Manager console is used to manage all Device Manager functions.
                Business administrators and system administrators use this console to
                perform management tasks.

12.6.3 Provisioning to other system
                The Device Management API provides the programming interface for
                managing the device, jobs, and related resources in the device Manager
                database. All Device Manager components and other applications that
                access the Device Manager database should use this API.

                The interfaces between the DM feature and the subscription manager are
                well-defined and highly localized. Consequently, DM can be used as a facility
                through which other applications can perform device management.

                Essentially, the DM system is a repository of device data and an engine for
                processing “jobs” on devices when they are connected to the network. DM
                relieves the applications that use it from the need to store detailed device
                information (such as operating system, installed software, and configuration
                settings), and shields them from the protocols used to communicate with
                each type of device.

12.6.4 Scalability and availability
                Scalability is achieved horizontally with many DM servers identically
                configured. Requests are routed to these servers by a front-end such as an
                IBM e-Network Dispatcher.

                The e-Network Dispatcher allows you to add extra Device Manager servers
                without stopping the service.

                For the back-ended database system, you can use the IBM AIX HACMP
                solution for high availability.




290   Introducing Tivoli Personalized Services Manager 1.1
Appendix A. Special notices

                  This publication is intended to help people to understand the concepts and
                  implementations of Tivoli Personalized Services Manager. The information in
                  this publication is not intended as the specification of any programming
                  interfaces that are provided by Tivoli Personalized Services Manager V1.1 or
                  Tivoli Internet Services Manager V1.1. See the PUBLICATIONS section of
                  the IBM Programming Announcement for ?Tivoli Personalized Services
                  Manager V1.1 or Tivoli Internet Services Manager V1.1for more information
                  about what publications are considered to be product documentation.

                  References in this publication to IBM products, programs or services do not
                  imply that IBM intends to make these available in all countries in which IBM
                  operates. Any reference to an IBM product, program, or service is not
                  intended to state or imply that only IBM's product, program, or service may be
                  used. Any functionally equivalent program that does not infringe any of IBM's
                  intellectual property rights may be used instead of the IBM product, program
                  or service.

                  Information in this book was developed in conjunction with use of the
                  equipment specified, and is limited in application to those specific hardware
                  and software products and levels.

                  IBM may have patents or pending patent applications covering subject matter
                  in this document. The furnishing of this document does not give you any
                  license to these patents. You can send license inquiries, in writing, to the IBM
                  Director of Licensing, IBM Corporation, North Castle Drive, Armonk, NY
                  10504-1785.

                  Licensees of this program who wish to have information about it for the
                  purpose of enabling: (i) the exchange of information between independently
                  created programs and other programs (including this one) and (ii) the mutual
                  use of the information which has been exchanged, should contact IBM
                  Corporation, Dept. 600A, Mail Drop 1329, Somers, NY 10589 USA.

                  Such information may be available, subject to appropriate terms and
                  conditions, including in some cases, payment of a fee.

                  The information contained in this document has not been submitted to any
                  formal IBM test and is distributed AS IS. The use of this information or the
                  implementation of any of these techniques is a customer responsibility and
                  depends on the customer's ability to evaluate and integrate them into the
                  customer's operational environment. While each item may have been
                  reviewed by IBM for accuracy in a specific situation, there is no guarantee


© Copyright IBM Corp. 2001                                                                    291
that the same or similar results will be obtained elsewhere. Customers
                attempting to adapt these techniques to their own environments do so at their
                own risk.

                Any pointers in this publication to external Web sites are provided for
                convenience only and do not in any manner serve as an endorsement of
                these Web sites.

                The following terms are trademarks of the International Business Machines
                Corporation in the United States and/or other countries:
                e (logo)®                                    IBM ®
                Netfinity                                    NetVista
                Redbooks                                     Redbooks Logo
                RS/6000                                      SecureWay
                System/390                                   WebSphere
                WorkPad

                The following terms are trademarks of other companies:

                Tivoli, Manage. Anything. Anywhere.,The Power To Manage., Anything.
                Anywhere.,TME, NetView, Cross-Site, Tivoli Ready, Tivoli Certified, Planet
                Tivoli, and Tivoli Enterprise are trademarks or registered trademarks of Tivoli
                Systems Inc., an IBM company, in the United States, other countries, or both.
                In Denmark, Tivoli is a trademark licensed from Kjøbenhavns Sommer - Tivoli
                A/S.

                C-bus is a trademark of Corollary, Inc. in the United States and/or other
                countries.

                Java and all Java-based trademarks and logos are trademarks or registered
                trademarks of Sun Microsystems, Inc. in the United States and/or other
                countries.

                Microsoft, Windows, Windows NT, and the Windows logo are trademarks of
                Microsoft Corporation in the United States and/or other countries.

                PC Direct is a trademark of Ziff Communications Company in the United
                States and/or other countries and is used by IBM Corporation under license.

                ActionMedia, LANDesk, MMX, Pentium and ProShare are trademarks of Intel
                Corporation in the United States and/or other countries.

                UNIX is a registered trademark in the United States and other countries
                licensed exclusively through The Open Group.



292   Introducing Tivoli Personalized Services Manager 1.1
SET, SET Secure Electronic Transaction, and the SET Logo are trademarks
owned by SET Secure Electronic Transaction LLC.

Other company, product, and service names may be trademarks or service
marks of others.




                                                Appendix A. Special notices   293
294   Introducing Tivoli Personalized Services Manager 1.1
Appendix B. Related publications

                  The publications listed in this section are considered particularly suitable for a
                  more detailed discussion of the topics covered in this redbook.


B.1 IBM Redbooks
                  For information on ordering these publications see “How to get IBM
                  Redbooks” on page 297.
                    • Tivoli Personalized Services Manager Device Manager 1.1: Pervasive Device
                      Management, SG24-6027
                    • An Introduction to IBM WebSphere Everyplace Suite Version 1.1,
                      SG24-5995
                    • Database Performance on AIX in DB2 UDB and Oracle Environments,
                      SG24-5511
                    • IBM HTTP Server Powered by Apache on RS/6000, SG24-5132
                    • WebSphere Application Servers: Standard and Advanced Editions,
                      SG24-5460
                    • IBM WebSphere Performance Pack: Load Balancing·with IBM SecureWay
                      Network Dispatcher, SG24-5858
                    • IBM Network Dispatcher User's Guide (Version 3.0 for Multiplatforms),
                      GC31-8496


B.2 IBM Redbooks collections
                  Redbooks are also available on the following CD-ROMs. Click the CD-ROMs
                  button at ibm.com/redbooks for information about all the CD-ROMs offered,
                  updates and formats.
                  CD-ROM Title                                                       Collection Kit
                                                                                     Number
                  IBM System/390 Redbooks Collection                                 SK2T-2177
                  IBM Networking Redbooks Collection                                 SK2T-6022
                  IBM Transaction Processing and Data Management Redbooks Collection SK2T-8038
                  IBM Lotus Redbooks Collection                                      SK2T-8039
                  Tivoli Redbooks Collection                                         SK2T-8044
                  IBM AS/400 Redbooks Collection                                     SK2T-2849
                  IBM Netfinity Hardware and Software Redbooks Collection            SK2T-8046
                  IBM RS/6000 Redbooks Collection                                    SK2T-8043
                  IBM Application Development Redbooks Collection                    SK2T-8037
                  IBM Enterprise Storage and Systems Management Solutions            SK3T-3694



© Copyright IBM Corp. 2001                                                                      295
B.3 Other resources
                These publications are also relevant as further information sources:
                  • HACMP for AIX 4.4 Planning Guide, SC23-4277

                The following publications mentioned in this redbook are Product
                Documentation, which can be obtained in Tivoli product CD-ROMs or IBM
                WebSphere Everyplace Suite product CD-ROMs:
                  • WebSphere Everyplace Suite Getting Started v1.1
                  • Tivoli Internet and Personalized Services Manager Documentation:
                    TPSM Overview
                  • Tivoli Internet and Personalized Services Manager Documentation:
                    Planning and Installation
                  • Tivoli Internet and Personalized Services Manager Documentation:
                    Administration
                  • Tivoli Internet and Personalized Services Manager Documentation:
                    Director Guide
                  • Tivoli Internet and Personalized Services Manager Documentation:
                    Programmer’s Guide
                  • Tivoli Personalized Services Manager Device Manager:
                    Planning and Installation
                  • Tivoli Personalized Services Manager Device Manager:
                    Administration
                  • Tivoli Personalized Services Manager Device Manager:
                    Developer's Guide
                  • Tivoli Personalized Services Manager Device Manager:
                    PalmOS Plug-in Notes
                  • Tivoli Personalized Services Manager Device Manager:
                    NetVista Internet Appliance Plug-in Notes
                  • Tivoli Personalized Services Manager Device Manager:
                    Aero 8000 Plug-in Notes
                  • Tivoli Personalized Services Manager Device Manager:
                    Windows CE Plug-in Notes




296   Introducing Tivoli Personalized Services Manager 1.1
How to get IBM Redbooks

This section explains how both customers and IBM employees can find out about IBM Redbooks,
redpieces, and CD-ROMs. A form for ordering books and CD-ROMs by fax or e-mail is also provided.
 • Redbooks Web Site ibm.com/redbooks
   Search for, view, download, or order hardcopy/CD-ROM Redbooks from the Redbooks Web site.
   Also read redpieces and download additional materials (code samples or diskette/CD-ROM images)
   from this Redbooks site.
   Redpieces are Redbooks in progress; not all Redbooks become redpieces and sometimes just a few
   chapters will be published this way. The intent is to get the information out much quicker than the
   formal publishing process allows.
 • E-mail Orders
   Send orders by e-mail including information from the IBM Redbooks fax order form to:
                                      e-mail address
   In United States or Canada         pubscan@us.ibm.com
   Outside North America              Contact information is in the “How to Order” section at this site:
                                      http://www.elink.ibmlink.ibm.com/pbl/pbl
 • Telephone Orders
   United States (toll free)          1-800-879-2755
   Canada (toll free)                 1-800-IBM-4YOU
   Outside North America              Country coordinator phone number is in the “How to Order”
                                      section at this site:
                                      http://www.elink.ibmlink.ibm.com/pbl/pbl
 • Fax Orders
   United States (toll free)          1-800-445-9269
   Canada                             1-403-267-4455
   Outside North America              Fax phone number is in the “How to Order” section at this site:
                                      http://www.elink.ibmlink.ibm.com/pbl/pbl

This information was current at the time of publication, but is continually subject to change. The latest
information may be found at the Redbooks Web site.


    IBM Intranet for Employees
 IBM employees may register for information on workshops, residencies, and Redbooks by accessing
 the IBM Intranet Web site at http://w3.itso.ibm.com/ and clicking the ITSO Mailing List button.
 Look in the Materials repository for workshops, presentations, papers, and Web pages developed
 and written by the ITSO technical professionals; click the Additional Materials button. Employees may
 access MyNews at http://w3.ibm.com/ for redbook, residency, and workshop announcements.




© Copyright IBM Corp. 2001                                                                            297
IBM Redbooks fax order form

Please send me the following:
Title                                                            Order Number            Quantity




First name                                  Last name


Company


Address


City                                        Postal code                   Country


Telephone number                            Telefax number                VAT number


   Invoice to customer number


   Credit card number



Credit card expiration date                 Card issued to                Signature

We accept American Express, Diners, Eurocard, Master Card, and Visa. Payment by credit card not
available in all countries. Signature mandatory for credit card payment.




298       Introducing Tivoli Personalized Services Manager 1.1
Glossary

Aero 8000 The Compaq Aero 8000 Handheld              programming interface for manipulating the
PC, which is a kind of Windows CE machine. It        device- and job-related data resources stored in
uses Hitachi SH4 processor and has a 10-inch         the Device Manager database.
color SVGA screen with 800 x 600 resolution,         Device management server API An API
256 colors, and a 0.24 pixel pitch.                  (package com.tivoli.dms.dmserver) that defines
AIX Advanced Interactive eXecutive. An IBM           the programming interface between the device
industrial-strength version of UNIX.                 management server servlet and the device
                                                     plug-ins.
API Application program interface.
                                                     Device Manager console A graphical user
ASP Application Service Provider. An Internet        interface, written by Java, for administering
service provider that offers application services.   device management operations.
business object An object containing                 DHCP See Dynamic Host Configuration
business methods (logic) and state that is           Protocol.
intended for use within business applications.
Business objects are Managed Objects. In some        DM Device Manager.
contexts, the term “business object” in this book    DM console see Device Manager console.
is used to refer to a business object class. It
may also be used to refer to a composition of        DMD Device Management Dispatcher.
business object classes.                             DMS servlet Device management server
Challenge Handshake Authentication                   servlet.
Protocol (CHAP) A type of authentication in          DNS See Domain Name System.
which the authentication agent (typically a
                                                     Domain Name System (DNS) A function to
network server) sends the client program a key
                                                     associate names and addresses on Internet
to be used to encrypt the username and
                                                     domain servers.
password.
                                                     Dynamic Host Configuration Protocol
CHAP See Challenge Handshake
                                                     (DHCP) A protocol for assigning dynamic IP
Authentication Protocol.
                                                     addresses to devices on a network.
conduit A component of Palm Desktop
                                                     e-business A term used by IBM to describe
software. A conduit specifies how to transfer
                                                     the use of Internet technologies to transform
and translate data between your handheld and
                                                     business processes. In practice, this means
your computer for a specific handheld
                                                     using Internet clients, such as Web browsers, as
application or database during a Hot Sync
                                                     front ends for applications that access back-end
operation.
                                                     legacy systems to allow greater access. See
cradle The docking station for PDA devices to        http://www.software.ibm.com/ebusiness for
connect to the desktop PC. Generally, they also      more information.
have the function to charge the device.
                                                     eXtensible Markup Language (XML) This
DBCS Double byte character set.                      markup language, a streamlined version of
DDL Data Definition Language.                        SGML, is regulated by WC3 (the World Wide
                                                     Web Consortium). Can create more advanced
deal Deals represent the service plan that is        links than HTML.
being subscribed to.
Device management API An API (package
com.tivoli.dms.dmapi) that defines the


© Copyright IBM Corp. 2001                                                                       299
file package Describes which files and                    iTk Tivoli Internet Services Manager Integration
directories to distribute and how to distribute           Toolkits.
them.
                                                          Java A high-level programming language
file package definition file An ASCII file that           developed in 1991 by Sun Microsystems that
identifies the contents and characteristics of a file     works on virtually any computer. Unlike HTML,
package.                                                  which is a document display format that is
                                                          continually improved to make it do more, Java is a
File Transfer Protocol (FTP) The protocol used
                                                          full-blown programming language like C and C++.
for sending files over the network.
                                                          It allows for the creation of sophisticated
FTP See File Transfer Protocol.                           client/server applications to be developed for the
GUI Graphical User Interface.                             Web and for intranets.

HACMP High Availability Cluster                           Java Database Connectivity (JDBC) A Java
Multi-Processing.                                         API that allows Java programs to communicate
                                                          with different database management systems in a
HotSync A Palm function to do two-way                     platform-independent manner. Database vendors
synchronization of records between your                   provide JDBC drivers for their platforms that
handheld and your computer. Changes that you              implement the API for their database, allowing
make on your handheld or your computer are                the Java developer to write applications to a
updated on both platforms after a HotSync                 consistent API no matter which database is used.
operation. The HotSync operation only
synchronizes the changed portions of data,                Java Development Kit (JDK) A software
reducing HotSync time.                                    development kit (SDK) for producing Java
                                                          programs.
HTTP See Hyper Text Transmission Protocol.
                                                          JDBC See Java Database Connectivity.
Hyper Text Transmission Protocol (HTTP) The
communications protocol used to connect to                JDK See Java Development Kit.
servers on the World Wide Web. Its primary                kiosk services Solutions for business center
function is to establish a connection with a Web          service providers such as hotel chains, airports,
server and transmit HTML pages to the client              and office service franchises that offer document
browser.                                                  services (storing, reproduction, and distribution)
IBM International Business Machines.                      through shared access devices in public spaces.

IMAP See Internet Message Access Protocol.                LAN See Local Area Network.

Integrated Services Digital Network (ISDN)                LDAP See Lightweight Directory Access
An international communications standard for              Protocol.
sending voice, video, and data over digital               Lightweight Directory Access Protocol
telephone lines and normal telephone wires.               (LDAP) A set of protocols for accessing
Internet Message Access Protocol (IMAP) A                 information directories. LDAP is based on the
protocol for retrieving e-mail messages.                  X.500 protocol, but supports TCP/IP, which is
                                                          necessary for Internet access. Because it's a
Internet screenphone A telephone-like                     simpler version of X.500, LDAP is sometimes
appliance with a built-in display screen that may         called X.500-lite.
be used to call up Internet sites quickly.
                                                          Local Area Network (LAN) A computer network
Internet Service Provider (ISP) Offers services           that spans a relatively small area, such as a
on the Internet, such as connection services.             building or a group of buildings.
ISDN See Integrated Services Digital Network.             meta file definition file An ASCII file that
ISP See Internet Service Provider.                        provides software distribution properties for the



300     Introducing Tivoli Personalized Services Manager 1.1
job. It also has a numbered application stanza,        Portal Toolkit (pTk) A toolkit that features a
[Applicationn], for each application package in        Multi-device portal engine thata supports web
the software distribution job.                         devices such as Win CE based PDAs,
                                                       screenphones, and WAP devices as well as PCs.
NetVista The IBM NetVista™ system includes
                                                       It also features a User Preference API, which
all-in-one, legacy-free, traditional desktops and
                                                       allows user and user group profiling.
thin clients to provide a full range of computing
solutions for your business or home.                   Post Office Protocol (POP) A protocol used to
                                                       retrieve e-mail from a mail server.
Palm OS platform A popular operating system
for Palm and other handheld devices, designed          PPP See Point-to-Point Protocol.
by Palm specifically for information management.
                                                       PRC Palm Resource. See Palm OS resource
Palm Pilot One of the most popular brands of           database.
PDAs, which uses Palm OS provided by Palm,
                                                       proxy A proxy server is configured to manage
Inc. Nowadays, 3Com, IBM, Sony, and some
                                                       network traffic and to protect your network.
other vendors sell original Palm Pilot devices.
                                                       PSTN See Public Switched Telephone Network.
Palm OS resource database Commonly
referred to as a PRC (Palm Resource). A PRC            PTF Problem temporary fix.
can exist as a file on the host computer (that is, a   pTk See Portal Toolkit.
PC or a Macintosh) and is commonly referred to
as a PRC file. A PRC contains database header          Public Switched Telephone Network (PSTN)
information as well as individual resource records     The international telephone system based on
in the database itself.                                copper wires carrying analog voice data. This is
                                                       in contrast to newer telephone networks based on
Palmscape Palmscape is a Web browser for               digital technologies such as ISDN and FDDI.
PDA. Palm version of Palmscape works on the
Palm OS 3.0 and above.                                 RADIUS Remote Access Dial-In User Service.

PAP See Password Authentication Protocol.              RAM disk Refers to RAM that has been
                                                       configured to simulate a disk drive. You can
Password Authentication Protocol (PAP) The             access files on a RAM disk as you would access
most basic form of authentication in which a           files on a real disk.
user's name and password are transmitted over a
network and compared to a table of                     RAS Short for Reliability, Availability,
name-password pairs.                                   Serviceability. See Remote Access Services.

PDA See Personal Digital Assistant.                    Realm Realms are a division of the subscriber
                                                       name-space that allow the ISP to divide its
PDB PDB files contain database records that            Internet provisioning services, effectively creating
are used by Palm OS to store the application           a set of “Virtual ISPs.”
data. They have features unique to the Palm OS.
                                                       Remote Access Services (RAS) A feature built
Personal Digital Assistant (PDA) A small               into Windows NT that enables users to log into an
handheld device that offers functions such as          NT-based LAN using a modem, X.25 connection,
address storage, calendar, and e-mail. This            or WAN link.
mobile device can be synchronized with desktop
PCs.                                                   screenphone See Internet screenphone.

Point-to-Point Protocol (PPP) A data link              servlets Java classes that run on Web servers
protocol that provides dial-up access over several     to provide dynamic HTML content to clients. They
lines.                                                 take as input the HTTP request from the client
                                                       and output dynamically generated HTML. For
POP See Post Office Protocol.                          more information on servlets, see



                                                                                                       301
http://www.software.ibm.com/ebusiness/                    HTML, so that the output will be displayed in a
pm.html#Servlets                                          manner appropriate to the device.
Simple Mail Transfer Protocol (SMTP) A                    TSM Tivoli Subscriber Manager.
protocol for sending e-mail messages between
                                                          UDB DB2 Universal Database from IBM.
servers.
                                                          URL Universal Resource Locator.
SM See Subscription Manager.
                                                          WAN Wide Area Network.
smart phone Enables connections to the
Internet or Lotus Notes network so that users can         WAP See Wireless Application Protocol.
access e-mail, faxes, voice mail, Web pages, and          WAS IBM WebSphere Application Server.
other files. It also has the potential to connect to a
speech recognition server by phone, which would           WE See WebSphere Everyplace Suite.
allow a user to dictate notes or responses and            WebSphere Everyplace Suite (WES) IBM
then see the recognized text as it is returned from       WebSphere Everyplace Suite is the solution for
the server.                                               pervasive computing that connects any device to
SMTP See Simple Mail Transfer Protocol.                   any data, anywhere, anytime. It supports the
                                                          following features; Connectivity, Content
Solaris A UNIX-based operating environment                Adaptation, Optimization, Security, Management
developed by Sun Microsystems. Originally                 Services, and Services.
developed to run on Sun's SPARC workstations, it
now runs on many workstations from other                  WebSphere Transcoding Publisher (WTP)
vendors. Solaris includes the SunOS operating             A network software that modifies content
system and a windowing system (either Open                presented to users based on the information
Windows or CDE).                                          associated with the request, such as device
                                                          constraints, network constraints, user
SQL See Structured Query Language.                        preferences, and organization policies.
SSL Secure Sockets Layer. A protocol for                  Transforming content can reduce or eliminate the
transmitting private documents securely via the           need to maintain multiple versions of data or
Internet.                                                 applications for different device types and
                                                          network service levels.
Structured Query Language (SQL) A standard
set of statements used to manage information              Windows CE A version of the Windows
stored in a database. By using these statements,          operating system designed for small devices such
users can add, delete, or update information in a         as personal digital assistants (PDAs) (or
table, request information through a query, and           handheld PCs in the Microsoft vernacular). The
display the result in a report.                           Windows CE graphical user interface (GUI) is
                                                          similar to Windows 95, so devices running
Subscription Manager (SM) A feature of the
                                                          Windows CE should be easy to operate for
Tivoli Internet and Personalized Services
                                                          anyone that is familiar with Windows 95.
Manager: Programmer’s Guide, which has
functions such as enrollment, access control, and         Wireless Application Protocol (WAP) A
personalization.                                          protocol to transfer content to and from wireless
                                                          devices.
TCP/IP Transmission Control Protocol/Internet
Protocol.                                                 Wireless Markup Language (WML) A
                                                          language to present content on wireless devices.
TISM Tivoli Internet Services Manager.
                                                          WML See Wireless Markup Language.
TPSM Tivoli Personalized Services Manager.
                                                          WTE Web Traffic Express.
transcoding The operation of changing data
from one format to another, such as XML to                WTP See WebSphere Transcoding Publisher.



302     Introducing Tivoli Personalized Services Manager 1.1
XML See eXtensible Markup Language.




                                      303
304   Introducing Tivoli Personalized Services Manager 1.1
Index
                                        isLastCommandValid 236
                                 AddressBook.class
A                                   add method 189
Access Code 75, 76, 94
                                    categories method 189
   associating with a deal 92
                                    del method 189
   creation 79
                                    elements method 189
   DEFAULT 77, 79
                                    elementsByCategory method 190
   purpose 80
                                    elementsByCategoryAndLastname method
   unique billing deals 80
                                    190
AccessBean
                                    elementsByCategoryAndName method 189
   implementation 186
                                    elementsByLastname method 190
AccessBean.class 185
                                    modify method 190
   getBean method 186
                                 Aero 8000 299
   getWellKnownName method 186
                                 Agenda 182
   read method 185
                                    example 250
   update method 186
                                    garbage collector 230
Account Information 156
                                 Agenda portlet
Account.class
                                    command
   getParentAccount method 188
                                        addappt 232
   read method 188
                                        addapptentry 231
AccountMembers.class
                                        defaultcmd 231
   getMemberNbr method 188
                                        delappt 232
   getUserFirstName method 188
                                        delapptentry 232
   getUserName method 188
                                        maximize 231
accounts
                                        minimize 231
   sub-accounts 149
                                        nextday 232
Additional Services 164
                                        previousday 232
AddressBook 182
                                        resOK 232
AddressBook portlet
                                        updateappt 232
   command
                                        updateapptentry 232
       addcommand 235
                                    method
       addentry 235
                                        elements 233
       cancelmanageentry 235
                                        getAgenda 233
       defaultcmd 234
                                        getDate 233
       delupdatecommand 235
                                        getMaxHour 233
       delupdateentry 235
                                        getMaxHourConfig 233
       endmanageentry 235
                                        getMinHour 233
       maximize 235
                                        getMinHourConfig 233
       minimize 235
                                        getPageCommand 234
       search 235
                                        getStartDay 233
       setfilter 235
                                        getStartMonth 233
   method
                                        getStartTime 233
       elements 236
                                        getStartYear 233
       getAddressBook 236
                                        isCommandValid 234
       getCategoryFilter 236
                                        setMaxHourConfig 233
       getCurrentEntry 236
                                        setMinHourConfig 233
       getLastnameFilter 236
                                 Agenda.class
       getPageCommand 236



© Copyright IBM Corp. 2001                                            305
add method 194                                        Architecture
   del method 194                                           JSP Portlet 202
   elements method 194                                   ARPANET 1
   getMinHour method 194                                 ASP 299
   getStartHour method 194                               Authentication 111
   getStarttime method 193                                  API 184
   modify method 194                                        MS-ISDN 182
   Starttime method 193                                     Multi-domain mode 113
   updateMinMaxHours method 195                             Single-domain mode 113
Aggregator 182                                              stages 112
Aggregator portlet                                          WML 182
   commands                                              Authentication Checker 113
        defaultcmd 221                                      supports multiple device types 114
        maximize 221                                        wireless 134, 135
        minimize 221                                     Authentication Server 111, 112, 241
        normal 221                                          central 122
        oneitem 221                                         creating 42
   method                                                   file system 115
        getContent 222                                      structure 114
        getContentEnumeration 222                           testing 70
AIX 299                                                     wireless 135
AIX filesets 22                                          authentication.jar 184
   installing latest level 23
API 299
Application Servers
                                                         B
                                                         billing systems 264
   configuration 67
                                                         BITNET 1
Appointment.class
                                                         business accounts 149
   Appointment method 192
                                                         business case one 138
   displayDate method 192
                                                         business object 299
   displayEnd method 192
   displayStart method 192
   equals method 192                                     C
   getDescription method 192                             Calendar 182
   getDuration method 192                                   example 249
   getDurationHour method 192                            Calendar portlet
   getDurationMin method 193                                command
   getEnd method 193                                           currmonth 229
   getId method 193                                            defaultcmd 229
   getStart method 192                                         maximize 229
   getStartDay method 193                                      minimize 229
   getStartHour method 193                                     nextmonth 229
   getStartMin method 193                                      prevmonth 229
   getStartMonth method 193                                    week 229
   getStartYear method 193                                  method
   isInThePast method 193                                      getCurrentDate 230
   setDescription method 192                                   getCurrentTime 230
   setDuration method 192                                      getDayOfMonth 230
   setId method 193                                            getRollingMonthWeekNbr 230
   setStart method 192                                         getTime 230



306    Introducing Tivoli Personalized Services Manager 1.1
challenge handshake authentication protocol 299           getCity 217
CHAP 299                                                  getComponents 218
child subscriber                                          getFirstName 217
    creating 162                                          getGender 217
    disconnecting 163                                     getLastName 217
class                                                     getMyComponents 218
    Component 204, 209                                    getValue 217
    ComponentConfiguration 204, 211                       getXxx 217
    ComponentSession 204, 210                     ComponentSession.class
    HttpServlet 202, 204                             getSession method 211
    portletSession 202                               href method 210
command                                              init method 210
    /etc/rc.txservers 71                             service method 210
    /etc/rc.webservers 71                         conduit 299
    /usr/netscape/suitespot/stop-admin 39         console application
    adminclient.sh 67                                downloading 69
    chuser 38                                     Consumer account
    console.bat 69, 74, 150                          managing 155
    instfix 28                                    consumer accounts 149
    inutoc 25                                     cookies 12, 114, 123, 124
    lslpp 23                                      cradle 299
    mkgroup 38                                    CSR 13
    mkuser 38                                        limits by realm 264
    smitty 25                                        see Customer Service Representative 149
    StartProvServer.ksh 71                        Customer Care 12, 152
    tar 25                                           accessing 150
    XMLConfig.sh 67                                  component 149
Component.class                                      functions 149
    include method 209                               launching 155
ComponentSelector                                    linking external applications 164
    example 251                                      reports 163
ComponentSelectorComponent                           security provisions 12
    WAP example 262                               Customer Care Representative
ComponentSelectorComponent portlet                   enrollment 154
    commands                                      Customer Care Server
        add 218                                      creating 43
        customize 218                                test 70
        defaultcmd 217                            Customer Care Support 13
        delete 218                                Customer Service
        maximize 218                                 security control 13
        minimize 218                              Customer Service Representative 149
        myappli 218                                  access control profile 154
    macro                                            enrolling a consumer 156
        *getCity* 217                                view and update consumer account 157
        *getFirstName* 217                        Customizor
        *getGender* 217                              example 242
        *getLastName* 217                         Customizor portlet
        *getXxx* 217                                 commands
    method                                                defaultcmd 224



                                                                                           307
maximize 224                                      Director Tool 16, 225
       minimize 224                                          installing 73
       save 224                                              testing 69
       themes 224                                        directory
       topics 224                                            /usr/TivTSM/selfcare/content/jsp 167
CustomizorComponent.class                                    /usr/WebSphere/AppServer/bin 67
   exists method 224                                     DM. See Device Manager
   getParameterCheckings method 225                      DMD 299
                                                         DMS servlet 299
                                                         DNS 299
D                                                        double byte character set 299
DB2 21
DbConnectionMgr 274
DBCS 299                                                 E
DDL 299                                                  EARN 1
Deal 9, 75                                               e-business 299
   associate Method of Payment List 98                   eND 124
   associate with a realm 90                             enrollment engine 11
   associating an access code 92                         Enrollment JSP 108
   change the subscriber’s Deal 159                      Enrollment metrics 75
   creation 82                                           enrollment process
   definition 299                                           managing 99
   properties 76, 85                                     Enrollment Server
Deal text 75                                                creating 48
   creation 84                                              test 70
device
   distributing software 10
device management API 281, 282, 299
                                                         F
                                                         FavoriteLinks.class
device management server API 299
                                                              add method 197
Device Manager
                                                              del method 197
   components 278
                                                              elements method 197
   console 283
                                                         field
   console updates 9
                                                              Profile Name 151
   DB2 support 9
                                                         file
   functions 278, 284
                                                              /db/app/oracle/admin/ispb/create/ispbrun1.ksh
   Generic Windows CE device 9
                                                              33
   Iap500 9
                                                              /db/creispblv.ksh 33
   Internet appliance device 9
                                                              /installdir/TivTSM/install/tisminstall.log 65
   job distribution 9
                                                              /usr/TivTSM/install/db/oracle/./sqlispb.log 37
   overview 277
                                                              /usr/TivTSM/install/etc/rc.txservers 66
   Personal Digital Assistants 10
                                                              /usr/WebSphere/AppServer/bin/setupCmd-
   plug-ins changes 9
                                                              Line.sh 67
   purpose 277
                                                              AddressBookComponent.properties 234
   Screenphones 10
                                                              AgendaComponent.properties 230
   subscription manager 9
                                                              AggregatorComponent.properties 219
   Wireless Access Protocol 10
                                                              AgregatorComponent.properties 244, 245
Device Manager console 299
                                                              authentication.jsp 115, 116
device plug-ins 280
                                                              Authentication.properties 117, 138
DHCP 299
                                                              Authentication.properties.wes 119



308    Introducing Tivoli Personalized Services Manager 1.1
Authenticator.properties 118, 119                I
     Calendar Component. properties 227               IBM 300
     ComponentSelectorComponent.properties            IBM HTTP Server 21, 22
     214, 252                                         IMAP 300
     CustomizorComponent.properties 222, 242          installation
     DBPool.properties 117, 121, 122                      different volume group 35
     DefaultAuthenticator.properties 117, 118, 122,   InstantDB 56
     126, 138, 239                                        backup database 67
     Device.properties 138, 143                       Integration Toolkit
     device_enroll.properties 110                         see iTk 269
     enroll.properties 110                            Internet Explorer 131
     EnrollJspMsg.properties 110                      Internet screenphone 300
     httpd.conf 55                                    Internet Service Provider 2, 5
     IE.properties 117, 131                           Internet Signup file 263
     install.ksh 58                                   Internet2 3
     LayoutSelectorComponent.properties 207, 212      ISDN 300
     LinkSelectorComponent.properties 225             ISP 300
     Nav4.properties 117, 131                         ispb 33
     ns-setup 38                                      iTk 300
     obj.conf 55                                          definition 269
     selfcare.properties 169                              example uses 269
     Transaction.properties 69, 74, 110                   form based browser 271
     Validator.properties 110                             Java Applets 272
     WAPAuthentication.properties 138, 139                method
     WapAuthentication.properties 138                         count 276
     WAPAuthenticator.properties 138, 144                     create 276
file package 300                                              delete 276
     definition file 300                                      read 276
file transfer protocol 300                                    setSelectAllField 275
filter API 236                                                setSelectField 275
Filter.class                                                  update 276
     sample 236                                           third party applications 272
FTP 300                                                   usage scenarios 271
                                                      IY12075 28
G
garbage collector                                     J
   agenda 230                                         jar files 117
   properties 231                                     Java 19, 300
GUI 300                                               Java Bean 116
                                                           auth 137
                                                           personalization API 181
H                                                     Java Developer Toolkit
HACMP 300
home page                                                  download 25
   customization 14                                        installation 25
HotSync 300                                                PTF 7 27
HTTP 300                                              Java Server Pages 19
                                                      JavaBeans session 114
                                                      JavaScript 19



                                                                                         309
JDBC 121, 269, 270, 300                                       customapplihtml.jsp 218
JDBC Connection pool                                          debug 110
   tuning 121                                                 delAppthtml.jsp 232
JDK 22, 300                                                   displayaddressbookhml.jsp 235
JDK 1.2.2 with PTF 7 21                                       displayaddressbookhtml.js 235
JSP                                                           displayaddressbookhtml.jsp 235
   accessCode 109                                             displayaddressbookwml.jsp 235
   accountCode 109                                            displayaddressbookwtml.jsp 235
   addaddressbookentrywml.jsp 235                             displayAppthtml.jsp 231, 232
   addAppthtml.jsp 231, 232                                   displayApptwml.jsp 231, 232
   addApptwml.jsp 231                                         DisplayDeviceAuthError 169
   AddMemberAuthError 167                                     DisplayDeviceInfo 169
   AddMemberCommit 168                                        DisplayDeviceList 169
   AddMemberInput 168                                         DisplayDeviceMain 169
   AddMemberMain 168                                          DisplayDevicenotFound 169
   AddMemberMemberCancel 168                                  DisplayDeviceRefused 169
   AddMemberRefused 168                                       dontGo 110
   AddMemberSubmit 168                                        English 136
   addrbookhtml.jsp 213                                       enroll 110
   agendahtml.jsp 213                                         example 241
   agreement 110                                              favlink7110.jsp 226
   areYou18 109                                               favlinkhtml.jsp 226
   cancelByUser 109                                           findaddrbookentrieshtml.jsp 234, 235
   ChangePasswordAuthError 168                                findaddrbookentrieswml.jsp 235
   ChangePasswordCancel 168                                   homehtml.jsp 212
   ChangePasswordCommit 168                                   homewml.jsp 212
   ChangePasswordInput 168                                    Japanese 136
   ChangePasswordMain 168                                     Layout 183
   ChangePasswordRefused 168                                  logouthtml.jsp 213
   ChangePasswordSubmit 168                                   manageaddrbookentrieshtml.jsp 235
   ChangePaymentAuthError 168                                 manageaddrbookentrieswml.jsp 235
   ChangePaymentCancel 168                                    maxappliwml.jsp 218
   ChangePaymentCommit 168                                    maxcustomhtml.jsp 224
   ChangePaymentInput 168                                     minaddressbookwml.jsp 234, 235
   ChangePaymentMain 168                                      minAgendahtml.jsp 231
   ChangePaymentRefused 168                                   minAgendawml.jsp 231
   ChangePaymentSubmit 168                                    minapplihtml.jsp 218
   ChangePersonalInfoAuthError 168                            minappliwml.jsp 218
   ChangePersonalInfoCancel 168                               mincalendar7110.jsp 229
   ChangePersonalInfoCommit 169                               mincalendarhtml.jsp 229
   ChangePersonalInfoInput 169                                mincustomhtml.jsp 224
   ChangePersonalInfoMain 169                                 minlink7110.jsp 226
   ChangePersonalInfoRefused 169                              minlinkhtml.jsp 226
   ChangePersonalInfoSubmit 169                               minnewswml.jsp 221
   configure 109                                              monthhtml.jsp 229
   confirm 109                                                monthwml7110.jsp 229
   congrats 109                                               mopCombined 110
   createfavlinkhtml.jsp 226                                  myapplihtml.jsp 217, 218
   createlink7110.jsp 226                                     myappliwml.jsp 217, 218



310    Introducing Tivoli Personalized Services Manager 1.1
newsabstract.jsp 221                                    creproplink 226
   newsfull.jsp 221                                        defaultcmd 226
   newshtml.jsp 213                                        dellink 226
   newswml.jsp 221                                         favlink 226
   onenews.jsp 221                                         minimize 226
   onenewswml.jsp 221                                      reflink 226
   paymentPlan 110                                     method
   personalCombined 110                                    getCatEnum 226
   Portlet 183                                             getCatIxEnum 227
   Portlets Framework 201                                  getCurrentCategory 227
   reflink7110.jsp 226                                     getFavCategories 227
   reflinkhtml.jsp 226                                     getFavLinkEnum 227
   resultAgendahtml.jsp 232                                getFavLinks 227
   themehtml.jsp 224                                       getLinkEnum 227
   topicshtml.jsp 224                              List of Method of Payment
   updateDelApptwml7110.jsp 232                        creation 96
   userNameInvalid 110                             load balancing 124
   wapauthentication.jsp 136                       log
   wapauthenticator.jsp 136                            /usr/WebSphere/AppServer/logs/authentica-
   weekwml7110.jsp 229                                 tion.log 136
JSP Portlet                                            locations 38
   architecture 202                                Login
                                                       creating 152
                                                   lvispbdata 34
K                                                  lvispbdrsys 34
Kiosk services 300
                                                   lvispbindex 34
                                                   lvispboem 35
L                                                  lvispbsys 34
LAN 300                                            lvispbtemp 34
LayoutSelector 182                                 lvispbuser 35
LayoutSelectorComponent portlet
    command
       addrbook 213                                M
                                                   macros
       agenda 213
                                                      links 225
       defaultcmd 212
                                                   meta file definition file 300
       home 212
                                                   method
       logout 213
                                                      Checker.getSSOPassword       185
       news 213
                                                      Checker.getSSOUserName        185
LDAP 16, 300
                                                      Checker.isNotAuthenticated    184
    see Lightweight Directory Access Protocol 10
                                                   Method of Payment
Lightweight Directory Access Protocol 10
                                                      creation 95
LinkSelector 182
                                                   method of payment
    example 248
                                                      changing 159
LinkSelectorComponent portlet
                                                   Method of Payment Information   156
    command
                                                   Method of Payment List
       addlink 226
                                                      associate deal 98
       back 226
                                                   Mosaic 2
       copylink 226
                                                   multi-domain mode 122, 123
       createlink 226



                                                                                               311
N                                                            creating 46
NameValuePairs.class                                         port 207
   add method 198                                            test 70
   del class 198                                         Personalized Service Environment 181
   elements method 199                                   PFTPD 6
NAS 138                                                  plug-in
National Science Foundation 1                                Authenticator.properties 118
NcFTPd 6                                                     DefaultAuthenticator.properties 118
Netscape Enterprise Server 18, 21                        plug-ins
   installing 38                                             Generic Windows CE 9
Netscape server administration console                       Internet appliance device 9
   starting 39                                               lap500 9
Netscape server instances                                POP 301
   creating 39                                           portal software architecture 183
   ports 41                                              Portal Toolkit 14
   primary directories 41                                    address book 7
   server identifier 41                                      agenda 7
Netscape servers                                             Authentication Services 7, 16
   starting 67                                               calendar 7
   stopping 67                                               JSP Components Framework 15
NetVista 301                                                 JSP Portlet Framework 7
Network Access Server 73, 134                                Multi-device Portal Engine 7, 15
Nokia Gateway 1.1.1 144                                      Referenced Links Management 7, 15
NSFNET 2                                                     see pTk 181
                                                             Targeted Ads 8, 16
                                                             User Preferences API 7, 15
O                                                            Vertical Services Integrated 15
Oracle 21
                                                         portlet API
   8i Version 8.1.5 9
                                                             Component API 208
   starting 71
                                                             ComponentSession API 208
                                                         portlet framework
P                                                            design 203
Palm OS 301                                              portlet JSP
Palm pilot 301                                               definition 204
Palmscape 301                                            portlets 201
PAP 301                                                      classes 204
password authentication protocol 301                         command addressing mechanism 208
payment methods 75                                           Desktop 202
PDA 135, 277, 301                                            features 202
PDB 301                                                      Layout 202
Perl 19                                                      LayoutSelector 206, 207
Personal Information 156                                     service 182, 211
Personal Information Management                                   AddressBook 222 , 234
   address book 15                                                Agenda 222, 230
   agenda 15                                                      Calendar 222, 227
   calendar 15                                                    Customizor 222
personalization 14                                                LinkSelector 222, 225
   example 241                                               structural 182, 211
Personalization Server                                            Aggregator 211, 219



312    Introducing Tivoli Personalized Services Manager 1.1
ComponentSelectorComponent 211, 213   R
         CustomizorComponent 211               RADIUS 112, 123, 135, 182, 183, 301
         LayoutSelectorComponent 211, 212      RADIUS authentication server 19
portletSelector 182                            RADIUS server
PPP 301                                             enhancements 8
PRC 301                                        RAM disk 301
Premium Server                                 RAS 301
    creating 47                                Realm 9, 11, 74, 91, 99, 150
    parameters 126                                  associating with deals 90
    test 70                                         creation 76
Profile 150                                         default 124
profile                                             default domain 76
    creating 151                                    definition 264, 301
Profiler.class                                      description 76
    sample 239                                      name 76
property                                            wireless 137
    creating 87                                Registration Name 73, 92, 99
    definition 87                                   creation 77
Provisioning FTP Daemon 6                      Registration name 75
Provisioning server                                 generic 77
    starting 71                                     Multiple Access 77
proxy 301                                      reporting
PSTN 301                                            sales 93
PTF 301                                        reports
pTk 132, 135, 301                                   available reports 163
    access Bean 185                            restpages 10
    Account.class 187                          rlvispbdata 36
    AccountFavoriteLinks.class 188             rlvispbindex 36
    AccountMembers.class 188                   rlvispbtemp 36
    AccountNameValuePairs.class 188
    AddressBook.class 189
    Agenda.class 193                           S
                                               Sales Channel 94
    Appointment.class 191
                                                   creation 93
    banner ads 182
                                                   definition 93
    database of links 182
                                               sample pages
    FamilyMembers.class 195
                                                   for HTML devices 205
    FavoriteLinks.class 188, 196
                                               screenphone 301
    filter API 236
                                               SDP Servlet Server
    functions 181
                                                   creating 50
    JSP portlets 202
                                               SelfCare 16
    NameValuePairs.class 198
                                                   adding members 178
    Profiler API 238
                                                   administration home page 172
    ReferencedLinks.class 200
                                                   change password 172
    sample JSP for HTML 183
                                                   changing payment information 176
    sample JSP for WML 183
                                                   changing personal information 174
    see Portal Toolkit 7
                                                   configuration file 169
    User.class 201
                                                   Server
                                                       creating 44



                                                                                       313
test 70                                              start sequence 70
Service Provisioning 265                                     what’s new 6
servlet 301                                              Tivoli
Single Sign On 124                                           SecureWay Policy Director 12
SM 302                                                   TPSM 302
SMTP 302                                                     installation 57
Solaris 302                                                  overview 5
Solaris support 19                                           start sequence 70
SQL 302                                                  Trace 274
SqlGenerator 274                                         traceLevel 67
SSL 302                                                  TraceResources 274
SSO Cookie 123                                           Transaction Servers
style sheet 245                                              verifying 71
    wireless 136                                         TSM 302
sub-accounts 149                                         TxObject 274
subscriber                                               TxSqlContext 274
    bulk transfer 17                                     TxValue 274
    creating child subscriber 162                        TxValues 275
    disconnecting 160
    reconnecting 161
    removing 160
                                                         U
                                                         UDB 302
    searching 165
                                                         URL 302
subscriber bases
                                                         USENET 1
    bulk transfer 263
                                                         User Groups
subscriber number 33
                                                            definition 265
Subscriber Selfcare
                                                         User Preference
    functions 167
                                                            API 185
Subscriber Update panel 158
                                                         User Preferences
subscribers
                                                            API 181
    child 149
    primary 149
System Management Tools Server                           V
    creating 45                                          Validator 275
                                                         Virtual ISP 264
                                                             creation 266
T                                                            enrolling subscribers 267
TCP/IP 302
                                                             overview 263
Telenet 1
test environment
    hardware 21                                          W
    software 22                                          WAN 302
TISM 302                                                 WAP 135, 277, 302
    Administration Console 74, 150                         authentication 182
    DB2 support 8                                          welcome homepage 261
    installation 57                                      WAP device 113
    installation verification 69                         WAP Gateway 134
    localization 8                                       WAS 302
    overview 5                                           Web Content Hosting 6
    post-installation steps 66                             File delete 7



314    Introducing Tivoli Personalized Services Manager 1.1
File download 7
    File upload and automatic publishing 7
    Perl scripts
        access counters statistics 6
        guestbook 6
        mail-to function 6
        page access counter 6
    Personal Web space display 7
    provisioning 6
    upload facility 6
Web Hosting Content Server
    creating 51
Web server configuration file 55
WebMail 234
WebSphere
    starting 67
Websphere
    create application servers 67
WebSphere Application Server 21
    installation 52
    root directory 57
WebSphere Every Place Suite
    see WES 183
WebSphere Everyplace Suite 9
WebSphere Everyplace suite
    TPSM integration 10
WES 119, 302
    Authentication Proxy 183
WES authentication proxy 113
Windows CE 302
wireless access 134
Wireless Gateway 135
WML 135, 137, 138, 139, 302
WML Script 135
WTE 302
WTP 302


X
XML 135, 183, 303




                                             315
316   Introducing Tivoli Personalized Services Manager 1.1
IBM Redbooks review
Your feedback is valued by the Redbook authors. In particular we are interested in situations where a
Redbook "made the difference" in a task or problem you encountered. Using one of the following
methods, please review the Redbook, addressing value, subject matter, structure, depth and
quality as appropriate.
 • Use the online Contact us review redbook form found at ibm.com/redbooks
 • Fax this form to: USA International Access Code + 1 845 432 8264
 • Send your comments in an Internet note to redbook@us.ibm.com



 Document Number                     SG24-6031-00
 Redbook Title                       Introducing Tivoli Personalized Services Manager 1.1

 Review




 What other subjects would you
 like to see IBM Redbooks
 address?


 Please rate your overall            O Very Good     O Good      O Average      O Poor
 satisfaction:

 Please identify yourself as         O Customer     O Business Partner       O Solution Developer
 belonging to one of the             O IBM, Lotus or Tivoli Employee
 following groups:                   O None of the above

 Your email address:
 The data you provide here may
 be used to provide you with         O Please do not use the information collected here for future
 information from IBM or our         marketing or promotional contacts or other communications beyond
 business partners about our         the scope of this transaction.
 products, services or activities.

 Questions about IBM’s privacy       The following link explains how we protect your personal information.
 policy?                             ibm.com/privacy/yourprivacy/




© Copyright IBM Corp. 2001                                                                             317
250 <-> 459 pages
                                                        0.475”<->0.875”
                                                          (0.5” spine)
Introducing Tivoli Personalized Services Manager 1.1
®




Introducing
Tivoli Personalized
Services Manager 1.1
Supports pervasive     Tivoli Personalized Service Manager is a new product that
devices                helps the Internet Services Providers to manage and provide
                                                                                          INTERNATIONAL
                       services to their clients. Tivoli Personalized Service Manager     TECHNICAL
Creates personalized   manages the different domains and provides services for            SUPPORT
service                them; selfcare, customer care, premium services,                   ORGANIZATION
                       personalization, and web content hosting. TPSM permits the
environments
                       creation of a portal for any type of device very quickly. All of
                       these features have the flexibility to be personalized very easy
Provides self care     via standard languages, such as JavaBeans, JSP, HTML,              BUILDING TECHNICAL
                       WML, and XML.                                                      INFORMATION BASED ON
                                                                                          PRACTICAL EXPERIENCE
                       This redbook will show you how to install the Tivoli
                       Personalized Service Manager and create a Portal for Internet      IBM Redbooks are developed by
                       and Wireless Devices with all the necessary services to            the IBM International Technical
                       manage it. The homepage can be personalized with                   Support Organization. Experts
                                                                                          from IBM, Customers and
                       applications provided via TPSM or the ISP. Some samples of
                                                                                          Partners from around the world
                       applications provided by TPSM are Agenda, Calendar, News.          create timely technical
                       Tivoli Personalized Service Manager provides tools that            information based on realistic
                       manage all these applications in the homepages, allowing you       scenarios. Specific
                       to set up a professional portal with a lot of services in a few    recommendations are provided
                                                                                          to help you implement IT
                       hours.
                                                                                          solutions more effectively in
                                                                                          your environment.
                       This book is valuable when planning a TPSM architecture and
                       development. The discussions of design, installation and
                       customization issues gives valuable information for
                       Administrators, Architects, and Developers.                        For more information:
                                                                                          ibm.com/redbooks

                         SG24-6031-00                     ISBN 0738419788

Introducing tivoli personalized services manager 1.1 sg246031

  • 1.
    Introducing Tivoli Personalized Services Manager1.1 Supports pervasive devices Creates personalized service environments Provides self care Stephen Hochstetler Edgar Gutierrez Patricia Iglesias ibm.com/redbooks
  • 3.
    SG24-6031-00 International Technical SupportOrganization Introducing Tivoli Personalized Services Manager 1.1 June 2001
  • 4.
    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 number 5698-PSM for use with the AIX and Solaris operating systems. Comments may be addressed to: IBM Corporation, International Technical Support Organization Dept. JN9B Building 003 Internal Zip 2834 11400 Burnet Road Austin, Texas 78758-3493 When you send information to IBM, you grant IBM a non-exclusive right to use or distribute the information 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 to restrictions set forth in GSA ADP Schedule Contract with IBM Corp.
  • 5.
    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 What's 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
  • 6.
    4.3 Installing NetscapeEnterprise 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 . . . . . . . . . . . . . .. . . . . .. . . . . 95 iv Introducing Tivoli Personalized Services Manager 1.1
  • 7.
    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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Chapter 6. Subscriber authentication and access control. . . . . . . . . 111 6.1 Authentication stages . . . . . . . . . . . . . . . . . . . . . ....... . . . . . . . . 112 6.2 Authentication modes . . . . . . . . . . . . . . . . . . . . . ....... . . . . . . . . 113 6.3 Internet world . . . . . . . . . . . . . . . . . . . . . . . . . . . ....... . . . . . . . . 113 6.3.1 Structure of Authentication Server . . . . . . . ....... . . . . . . . . 114 6.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 . . . . . . . . . . . . . . . . . . . . . ....... . . . . . . . . 144 Chapter 7. Using Customer Care and Director Tool . . . . . . . . . . . . . . 149 7.1 Assigning login IDs and access control profiles to CSRs . . . . . . . . . 150 7.2 Logging on to Customer Care. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 7.3 Log on steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 7.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 subscriber's deal . . . . . . . . . . . . . . . . . . . . . . . . . . 159 7.4.4 Change subscriber's 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 . . . . . . . . . . . . . . . . . . . . . . . . . . 163 7.5 Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 7.6 Additional services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 7.7 Using the Search Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 7.7.1 Search criteria for individual subscribers . . . . . . . . . . . . . . . . . 165 7.7.2 Exact match feature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 Chapter 8. Subscriber Selfcare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 8.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 8.2 Customization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 8.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
  • 8.
    Chapter 9. SubscriberPersonalized 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 vi Introducing Tivoli Personalized Services Manager 1.1
  • 9.
    11.2 iTk usagescenarios . . . . . . . . . .. . . . .. . . . . .. . . . .. . . . . .. . . . 271 11.3 iTk classes . . . . . . . . . . . . . . . . .. . . . .. . . . . .. . . . .. . . . . .. . . . 272 11.3.1 Core classes. . . . . . . . . . . .. . . . .. . . . . .. . . . .. . . . . .. . . . 272 11.3.2 iTk Business Objects . . . . .. . . . .. . . . . .. . . . .. . . . . .. . . . 275 Chapter 12. Device Manager . . . . . . . . . . . . . . . . . . . . . .. . . . . .. . . . 277 12.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . .. . . . 277 12.2 Device Manager on TPSM . . . . . . . . . . . . . . . . . . . . .. . . . . .. . . . 278 12.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 . . . . . . . . . . . . . . . . . .. . . . . .. . . . 283 12.4 Device Manager functions . . . . . . . . . . . . . . . . . . . . .. . . . . .. . . . 284 12.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 . . . . . . . . . . . . . . .. . . . . .. . . . 288 12.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 . . . . . . . . . . . . . . . . . .. . . . . .. . . . 290 Appendix A. Special notices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 Appendix B. Related publications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 B.1 IBM Redbooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 B.2 IBM Redbooks collections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 B.3 Other resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 How to get IBM Redbooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 IBM Redbooks fax order form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 IBM Redbooks review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317 vii
  • 10.
    viii Introducing Tivoli Personalized Services Manager 1.1
  • 11.
    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
  • 12.
    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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 x Introducing Tivoli Personalized Services Manager 1.1
  • 13.
    84. Premium configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 85. Hierarchal device type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 86. WAP architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 87. Active components of the Authentication Server (mobile internet) . . . . . 136 88. Example of navigation for business case 1 . . . . . . . . . . . . . . . . . . . . . . . 144 89. The TISM Administration Console dialog box . . . . . . . . . . . . . . . . . . . . . 150 90. TISM Administration Console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 91. Add a New Access Role (1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 92. Add a New Access Role (2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 93. TISM Administration Console (1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 94. TISM Administration Console (2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 95. Add a New Login Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 96. TISM Administration Console (3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 97. Customer care logging page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 98. TISM customer care. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 99. Search results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 100.Subscriber update panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 101.Changing method of payment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 102.Disconnecting a user . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 103.User disconnected. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 104.Enrolling a customer child subscriber . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 105.TISM Reporting Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 106.Selfcare initial page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 107.Logging into Selfcare. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 108.Changing a subscriber’s password . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 109.Change Password confirmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 110.Password successfully changed message . . . . . . . . . . . . . . . . . . . . . . . 174 111.Change Personal Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 112.Changing Personal Information confirmation . . . . . . . . . . . . . . . . . . . . . 176 113.Changing Payment Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 114.Changing method of payment confirmation. . . . . . . . . . . . . . . . . . . . . . . 178 115.Adding a new member (1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 116.Adding a new member (2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 117.Portal software architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 118.JSP Portlet Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 119.Pattern model-view-controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 120.More detail about the architecture of JSP Portlets . . . . . . . . . . . . . . . . . 204 121.Example of welcome.jsp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 122./perso/home without an authentication . . . . . . . . . . . . . . . . . . . . . . . . . . 205 123./perso/home with authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 124./perso/home for WAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 125.Sending a command and parameters to a portlet in the HTTP request . 208 126.Use of LayoutSelectorComponent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 xi
  • 14.
    127.Example for HTMLbrowsers 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 xii Introducing Tivoli Personalized Services Manager 1.1
  • 15.
    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
  • 16.
    xiv Introducing Tivoli Personalized Services Manager 1.1
  • 17.
    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
  • 18.
    pervasive. For thelast 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 Alfonso Comments 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.com xvi Introducing Tivoli Personalized Services Manager 1.1
  • 19.
    Chapter 1. Evolutionof 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 Tomlinson's 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
  • 20.
    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. Gopher's 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 do 2 Introducing Tivoli Personalized Services Manager 1.1
  • 21.
    this, TISM isdesigned for continuous operation, flexible enhancement, and is highly scalable. The system relies on industry standard hardware and software components with a flexible architecture for integrating varied components so that ISPs operating under the TISM umbrella can offer their subscribers an unlimited variety of Internet value-add features and benefits without having to alter the core base of information management and customer service platform that TISM maintains in a centralized database. TISM is designed to anticipate growth by allowing service providers to initially deploy a system size that comfortably accommodates their immediate operational needs and grow it exponentially to support a subscription install base of millions of users while providing uninterrupted services and maintaining database consistency. TPSM expands on TISM. It is a complete business infrastructure that empowers ISPs to offer new and different types of value-added and premium-content services. TPSM will carry ISP s into the next generation of IP communication services. TPSM extends the capability of present day Internet services to new mobile and handheld service offerings. TPSM is designed to scale and manage millions of subscribers and pervasive devices in a feature-rich environment. TPSM's new operational service paradigm goes beyond the simple connection of subscribers by single devices. TPSM associates and links subscribers with individual Personalized Service Environments and allows each subscriber to access their customized secure environment from a variety of pervasive devices anywhere and anytime. Tivoli and IBM will continue to push the envelope on developing scalable Internet solutions. In 1999 IBM became the first Corporate partner to be approved for Internet2 access. Chapter 1. Evolution of the Internet and ISP solutions 3
  • 22.
    4 Introducing Tivoli Personalized Services Manager 1.1
  • 23.
    Chapter 2. Overviewof 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 system's 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
  • 24.
    2.1 What's newfor 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 statistics 6 Introducing Tivoli Personalized Services Manager 1.1
  • 25.
    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 delete 2.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
  • 26.
    Targeted Ads: Interfacewith Double Click Ads Server Personalization allows users to customize their device's 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 system 2.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
  • 27.
    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 device's 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 console's 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
  • 28.
    2.1.7 Integration withWebSphere 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 subscriber's devices. Device vendors can extend the system's 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) devices 10 Introducing Tivoli Personalized Services Manager 1.1
  • 29.
    Figure 2. DeviceManager Services 2.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 Manager's 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
  • 30.
    Realm distinctions providebenefits to system management. Customer Care Reps can be granted complete read and write security provisions to specific realms, which keeps each realm's data separate and secure from any others. Figure 3. Enrollment and service provisioning 2.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, Tivoli's 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
  • 31.
    Figure 4. Subscriberauthentication and access control 2.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
  • 32.
    Figure 5. Customercare support 2.2.5 Subscriber personalized service environment and self care Personalization allows users to customize their device's 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
  • 33.
    Figure 6. Subscriberpersonalization and self care The portal engine is delivered with built-in components, such as Personal Information Management (PIM), components such as calendar, agenda, and address book. These components allow the subscriber to customize the portal pages on their devices. Some additional key functions associated with pTk are: 1. Multi-device Portal Engine Web devices (e.g., PC, Win CE, screenphones), WAP devices 2. User Preferences API Users and user groups profiling 3. Referenced Links Management Hierarchical repository of links referenced by the portal 4. 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
  • 34.
    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 subscriber's 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 Manager's 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
  • 35.
    Figure 7. Operationsupport for growing provider business 2.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 ISP's business. Chapter 2. Overview of Tivoli Personalized Service Manager 17
  • 36.
    Figure 8. Supportingemerging Internet business models 2.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 staff's 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 system 18 Introducing Tivoli Personalized Services Manager 1.1
  • 37.
    • Sun Solarissupport Industry 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 - iTk's) • 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
  • 38.
    20 Introducing Tivoli Personalized Services Manager 1.1
  • 39.
    Chapter 3. Installationchecklist 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 recommended 3.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
  • 40.
    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.12 3.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.2 22 Introducing Tivoli Personalized Services Manager 1.1
  • 41.
    • 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 To verify that we have installed the fileset, we used the lslpp command as shown 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 Server We can see that the bos.net.tcp.client is at the 4.3.3.26 level and we required 4.3.3.3 as minimum, so with the 4.3.3.26 we do not have any problem. 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
  • 42.
    - Select SOFTWAREto 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
  • 43.
    • Select Installand 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
  • 44.
    Install and UpdateSoftware 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
  • 45.
    Install and Updatefrom 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=Image After it finishes, it will provide you with an installation summary at the bottom of the command status screen, as shown in the next screen. You should verify each 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 /=Find After the successful installation of IBM Developer Kit for AIX, Java Technology Edition, Version 1.2.2, we proceded to apply PTF 7. See APAR IY12075. Chapter 3. Installation checklist 27
  • 46.
    The instfix -ikcommand 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
  • 47.
    # instfix -ivckIY12075 #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_dev2 3.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
  • 48.
    • Call theAIX 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
  • 49.
    Chapter 4. Buildingthe 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 Edition 4.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 -g'rootvg' -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 -y'dbvg' -s'8' hdisk1 crfs -v jfs -g'dbvg' -asize=' 4259840' -m'/db' -Ayes We mount the file systems. mount /var/adm/logs mount /db © Copyright IBM Corp. 2001 31
  • 50.
    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 user's home? 32 Introducing Tivoli Personalized Services Manager 1.1
  • 51.
    This process initializesJava 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.2 17.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. Don't 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
  • 52.
    #!/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
  • 53.
    RC=$?;[ $RC -gt $MAXRC ] && MAXRC=$RC mklv -a c -y lvispbctrl1 rootvg 1 hdisk3 RC=$?;[ $RC -gt $MAXRC ] && MAXRC=$RC mklv -a c -y lvispbctrl2 rootvg 1 hdisk3 RC=$?;[ $RC -gt $MAXRC ] && MAXRC=$RC mklv -a c -y lvispbctrl3 rootvg 1 hdisk3 RC=$?;[ $RC -gt $MAXRC ] && MAXRC=$RC mklv -a c -y lvispbuser rootvg 1 hdisk3 Compare the number of lvispbuser units with the number of units for user in the table. RC=$?;[ $RC -gt $MAXRC ] && MAXRC=$RC mklv -a c -y lvispboem rootvg 1 hdisk3 Finally, compare the number of lvispboem units with the number of units for oem in the table. RC=$?;[ $RC -gt $MAXRC ] && MAXRC=$RC chown oracle8:dba /dev/lvispb* chown oracle8:dba /dev/rlvispb* exit $MAXRC The 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 install it. It´s specified here, so if you want to install in another volume group (in our case dbvg) you must change the command to read: mklv -a c -y lvispboem dbvg 1 hdisk3 If you change the name of the instance for the db, you will notice that the names for the logical volumes change in the middle for the name of the instance. /db/app/oracle/admin/ispb/create/ispbrun1.ksh #!/bin/sh ORACLE_SID=ispb export ORACLE_SID /db/app/oracle/products/8.1.5/bin/svrmgrl << EOF connect internal @/db/app/oracle/products/8.1.5/rdbms/admin/catalog.sql; CREATE ROLLBACK SEGMENT r0 TABLESPACE SYSTEM STORAGE (INITIAL 32K NEXT 64K MINEXTENTS 10 MAXEXTENTS 512); ALTER ROLLBACK SEGMENT r0 ONLINE; Chapter 4. Building the environment 35
  • 54.
    REM ************ TABLESPACEFOR 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 REUSE 36 Introducing Tivoli Personalized Services Manager 1.1
  • 55.
    You have tocompare 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 EOF 22.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
  • 56.
    - 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 enterpri 4.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 Machine's name [hostname.]: hostname.domainname.com SuiteSpot User [nobody]: enterpri 38 Introducing Tivoli Personalized Services Manager 1.1
  • 57.
    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-admin 4.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
  • 58.
    Figure 9. NetscapeServer 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
  • 59.
    and primary documentdirectory 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
  • 60.
    4.4.1 Creating theAuthentication Server Fill in the form as shown in Figure 10 to create the Authentication Server instance. Figure 10. Form for Authentication Server 42 Introducing Tivoli Personalized Services Manager 1.1
  • 61.
    4.4.2 Creating theCustomer 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
  • 62.
    4.4.3 Creating theSelfcare Server Fill in the form as shown in Figure 12 to create the Selfcare Server instance. Figure 12. Form for Selfcare Server 44 Introducing Tivoli Personalized Services Manager 1.1
  • 63.
    4.4.4 Creating theSystem 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
  • 64.
    4.4.5 Creating thePersonalization Server Fill in the form as shown in Figure 14 to create the Personalization Server instance. Figure 14. Form for Personalization Server 46 Introducing Tivoli Personalized Services Manager 1.1
  • 65.
    4.4.6 Creating thePremium 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
  • 66.
    4.4.7 Creating theEnrollment 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
  • 67.
    Figure 17. Formof CGI for Enrollment Server 3. 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
  • 68.
    4.4.8 Creating theSDP Servlet Server Fill in the form as shown in Figure 18 to create the SDP Servlet Server instance. Figure 18. Form for SDP Servlet Server 50 Introducing Tivoli Personalized Services Manager 1.1
  • 69.
    4.4.9 Creating theWeb 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
  • 70.
    4.5 Installation ofIBM 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
  • 71.
    Figure 20. WebSphereApplication 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
  • 72.
    • The nextdialog 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
  • 73.
    Figure 23. WebSphereInstallation 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
  • 74.
    • The nextdialog 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 information 56 Introducing Tivoli Personalized Services Manager 1.1
  • 75.
    • Specify adirectory 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
  • 76.
    ./install.sh in anAIX 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
  • 77.
    Figure 29. Choosingthe database It is interesting that we are prompted for the database because we are installing from the TPSM/Oracle CD. It appears that in the future, this will allow 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 you will be prompted for the local machine information. DNS domain resolution is a requirement. Chapter 4. Building the environment 59
  • 78.
    Figure 30. LocalInformation 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
  • 79.
    Figure 31. Oracleconfiguration information While the ITSO did an initial install on itso14.dev.tivoli.com, this screen capture was done on a separate machine, knight1. This is the reason for the discrepancy in hostnames on our dialog boxes. No information was changed on this dialog. Selecting Next opened the next dialog as shown in Figure 32 on page 62. If you have a Radius server already installed, you can unselect the internal TISM Radius server. Chapter 4. Building the environment 61
  • 80.
    Figure 32. TISMinstall 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
  • 81.
    Figure 33. TISMprerequisite checklist Selecting Next will bring up the dialog to ask you where the prerequisites have been installed as shown in Figure 34 on page 64. Update the dialog with any changes from the application defaults. Chapter 4. Building the environment 63
  • 82.
    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
  • 83.
    Figure 35. Installationverification dialog You can scroll up/down the information that you have chosen from the previous panels. When you have verified that it is correct select Next to start the install. While it is installing this version of the install code does not display a status window. While the install document tells us to look at /installdir/TivTSM/install/tisminstall.log, that file is not written until the installation is complete or fails. You cannot tail the file to check the status of the installation. After the installation has completed a dialog will open as shown in Figure 36 on page 66. Chapter 4. Building the environment 65
  • 84.
    Figure 36. Installationis 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
  • 85.
    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/$1 3. 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 stop 5. Start all the Netscape servers: /etc/rc.webservers start 4.6.1.2 IBM WebSphere Application Server configuration This 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.sh 6. 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.xml Now we can start the Admin Console (Figure 37 on page 68) to verify the creation of the application servers. Go to the /usr/WebSphere/AppServer and issue ./adminclient.sh&. Ignore the following warning messages: Chapter 4. Building the environment 67
  • 86.
    [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
  • 87.
    Figure 38. Startingup an Application Server 4.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
  • 88.
    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
  • 89.
    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: dbstart 4.8.2 Start Provisioning server Change to the /usr/TivTSM/provisioning/bin directory and issue: nohup ./StartProvServer.ksh > /var/adm/logs/ProvServ.log 4.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.txservers 4.8.4 Start Netscape Servers To start up the Netscape Servers, go to /etc directory and enter: ./rc.webservers start 4.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
  • 90.
    72 Introducing Tivoli Personalized Services Manager 1.1
  • 91.
    Chapter 5. Enrollmentand 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
  • 92.
    2. Download console.zipto 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: • Realms 74 Introducing Tivoli Personalized Services Manager 1.1
  • 93.
    • Registration names • Access codes • Deals • Deal text • Enrollment metrics The enrollment configuration objects have a structure. This structure is required to create the enrollment object as shown in Figure 42. Figure 42. Structure of the enrollment objects A realm needs a registration name to be able to enroll new users. A registration name requires an access code to be able to work. For marketing purposes, we have deals and each deal has a deal text, which explains the deal, for example, a deal, FREE, could have as deal text, you don’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
  • 94.
    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
  • 95.
    Figure 44. Dialogbox for the creation of Realm 5.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
  • 96.
    The following valuesdefine 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 subscriber's 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
  • 97.
    Figure 45. RegistrationNames dialog box 5.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
  • 98.
    Name. The AccessCode 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
  • 99.
    Figure 46. Flowof a multi-access registration name An example of creation of access code: 1. Select the new registration name, USER_FOR_ENROLL 2. Press the right mouse button and select Add -> Access Code 3. The dialog box shown in Figure 47 on page 82 appears: Chapter 5. Enrollment and service provisioning 81
  • 100.
    Figure 47. AccessCode dialog box 5.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
  • 101.
    The required fieldsto 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
  • 102.
    Figure 49. Dialogof 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
  • 103.
    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 finish Figure 50. Deal text dialog box 3. A dialog box to set the properties will appear. 5.1.5.1 Setting the properties for a deal To set the properties in the deal, you have to set the values in the dialog box shown in Figure 51 on page 86. Chapter 5. Enrollment and service provisioning 85
  • 104.
    Figure 51. Dialogfor 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
  • 105.
    Figure 52. Tablewith 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 90 5.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
  • 106.
    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 property 88 Introducing Tivoli Personalized Services Manager 1.1
  • 107.
    Figure 54. Dialogto create the property 4. 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
  • 108.
    Figure 55. Creatinga value for FAVBOOKS property 5.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
  • 109.
    Figure 56. Tableof deals 3. 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
  • 110.
    Figure 57. Exampleof how to relate a deal with several Realms 5.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
  • 111.
    Figure 58. Relationof access code and deals 5.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
  • 112.
    Figure 59. Anew 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
  • 113.
    Figure 61. Exampleof selection of created Sales Channel in the new Access Code 5.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
  • 114.
    3. Select Add.A new dialog box will be displayed as shown in Figure 62. Figure 62. Payment Method dialog 5.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
  • 115.
    Figure 63. Methodof Payment list dialog 4. 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 table 5. 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
  • 116.
    Figure 65. Exampleof how to relate the MOP list to MOPs 5.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
  • 117.
    Figure 66. Exampleof 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
  • 118.
    The enroll processbegins 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
  • 119.
    <!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>Here's 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, you pass to the next window (Figure 68 on page 102), which prompts the user for an access code. We have two; PUBLIC and CHEAP. In this example we will enroll with both to show the differences due to the different configuration. Chapter 5. Enrollment and service provisioning 101
  • 120.
    Figure 68. Enrollwith access code PUBLIC After this, the agreement window appears as shown in Figure 69. Figure 69. Agreement window 102 Introducing Tivoli Personalized Services Manager 1.1
  • 121.
    The enrollment detailswindow 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
  • 122.
    Figure 71. Dealand 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
  • 123.
    Figure 73. Detailsof chosen deal Access information and a choice for method of payment is shown (see Figure 74). Figure 74. Payment Method details for enroll Chapter 5. Enrollment and service provisioning 105
  • 124.
    The enrolling personis 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 screen 106 Introducing Tivoli Personalized Services Manager 1.1
  • 125.
    Selecting Continue onFigure 76 on page 106 will bring up Figure 77, which provides additional information for configuring your machine to access the service. Figure 77. Configuration enroll Now we are going to see what happens when we use the CHEAP access code in the screen shown as Figure 68 on page 102 to enroll a new user. First we go to the enroll main page (Figure 67 on page 100) and proceed to enroll a new one following the steps that we mentioned earlier in this chapter; see Figure 68 on page 102 through Figure 77. On the screen that asks us to choose the deal, we select the second option as shown in Figure 78 on page 108. Chapter 5. Enrollment and service provisioning 107
  • 126.
    Figure 78. Choosingthe 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
  • 127.
    Figure 79. Structureof directories of enroll The content directory contains the JSPs. Their names and functions are described 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
  • 128.
    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 file 110 Introducing Tivoli Personalized Services Manager 1.1
  • 129.
    Chapter 6. Subscriberauthentication 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
  • 130.
    3. The authenticationserver 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
  • 131.
    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 DB 6.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
  • 132.
    Authentication Checker thatdetermines 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
  • 133.
    Figure 82. Activecomponents of the Authentication Server for internet access The 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 in the next screen it is a form with a Java Bean that creates a session with the information passes. Chapter 6. Subscriber authentication and access control 115
  • 134.
    The bolded linesare 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
  • 135.
    <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 and the 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
  • 136.
    The authentication systemof 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.log 118 Introducing Tivoli Personalized Services Manager 1.1
  • 137.
    When the authenticationis delegated to the WES authentication proxy, the Authenticator.properties file must be replaced by the Authentication.properties.wes. This change must be done at the end of installation, before application servers start. The following screen is the Authenticator.properties file. Chapter 6. Subscriber authentication and access control 119
  • 138.
    ###################################################################### # 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 gateway 120 Introducing Tivoli Personalized Services Manager 1.1
  • 139.
    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.log 6.3.1.2 DBPool.properties DBPool.properties is used by the authentication server and pTk. It specifies the connection to the TISM database. These are the standard JDBC parameters: JDBC.dbDriver=oracle.jdbc.driver.OracleDriver This line specifies the driver, in this example, Oracle. JDBC.dbUser=stage_master JDBC.dbPassword=oracle This is the user and password to connect to TISM database. The following parameters tune the JDBC Connection pool used by the authentication and pTk. MaxDBConnections=5 MinDBConnections=2 The following specifies the TISM data model level. tsm.level=4.0 Chapter 6. Subscriber authentication and access control 121
  • 140.
    The following screenshows 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
  • 141.
    In multi-domain mode,the following parameter specifies the URL of the authentication server (not including the URL path). authentication.server.url=http://hostname:8080 In multi-domain mode, the following parameter specifies the URL path of the authentication server. authentication.form.path=/authentication/en/authentication.jsp The next parameters define the type of authentication stage. For more information, see Figure 6.1, “Authentication stages” on page 112. authentication.type1=ip|username|no authentication.type1.header=ip|<HTTP header name> The first parameter defines the type of authentication for stage 1. If no value is specified, it uses authentication stage 2 only. If the value IP is specified, it tries to identity a dial-up user by their IP Address in the Radius Active Session Table. If the value username is used, it searches for that username in the specified HTTP Header. The syntax of the username cannot be “username” or “username@realm.” The second parameter specifies the header name where the IP address of the username must be fetched. IP means the IP address contained within the original IP header. The following parameter specifies the type of authentication for stage 2; by a HTML (or WML) form, or by a basic HTTP authentication. authentication.type2=basic|form The next parameter covers Single Sign-On Cookies. For more information, see Figure 6.2, “Authentication modes” on page 113. authentication.sso.enabled=yes|no If this parameter is set to yes, the central authentication server sets a Single Sign-On Cookie to avoid prompting the user for several successive authentications. An SSO Cookie only works in multi-domain mode. Chapter 6. Subscriber authentication and access control 123
  • 142.
    The following parametersdefine 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
  • 143.
    Figure 83. Clusterconfiguration On the authentication checker side, the Webmaster must specify the list of premium services ids hosted by a thin server, and provide a list of URL paths prefixes for each of them as shown in Figure 84. Figure 84. Premium configuration Chapter 6. Subscriber authentication and access control 125
  • 144.
    The next parametersare 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
  • 145.
    ###################################################################### # TSM DefaultAuthenticatorproperties ###################################################################### # ###################################################################### # 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 won't 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.com 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/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
  • 146.
    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=yes 128 Introducing Tivoli Personalized Services Manager 1.1
  • 147.
    # # Key indexfor cookie encryption authentication.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 = 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 # ###################################################################### # 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
  • 148.
    # >> theserver 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 URL's patterns protected by each tier # This list must only contain absolute path (starting with /) # When several URL's 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.SampleProfiler 130 Introducing Tivoli Personalized Services Manager 1.1
  • 149.
    6.3.1.4 IE.properties The IE.propertiesis the properties for Internet Explorer browsers as seen in the 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-type's 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 LayoutComponent's ###################################################################### # 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.properties Nav4.properties is the properties for Enterprise Navigator browsers, as seen in the following screen. Chapter 6. Subscriber authentication and access control 131
  • 150.
    . ###################################################################### # 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-type's 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 LayoutComponent's ###################################################################### # 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/IE 132 Introducing Tivoli Personalized Services Manager 1.1
  • 151.
    Figure 85. Hierarchaldevice 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/jpeg 6.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
  • 152.
    Figure 86. WAParchitecture 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
  • 153.
    The Wireless Worldhas 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
  • 154.
    Figure 87. Activecomponents 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
  • 155.
    <%@ 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. In that code, the JSP sets the type of mime type and creates the Java Bean auth to collect the data needed for authentication. The rest of the code is a WML form. As you can see the SMSrealm and SMSurl has been changed by hand. These fields are the REALM and the URL to go back to when the user is authenticated that we used because we don’t pass these parameters. The configuration for the servlets will be explained in the sample business cases because it depends on the environment. Chapter 6. Subscriber authentication and access control 137
  • 156.
    6.4.2 Business case1 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 = yes 138 Introducing Tivoli Personalized Services Manager 1.1
  • 157.
    The recommended valueis “no” because it can be used when devices do not support HTTP redirect properly, but we set it as yes because the mobile devices that we are using support HTTP redirection. Because we don’t have a gateway, we set: authentication.type1 = no authentication.type2 = form These parameters disable auto logon and prompt the user with a log-in WML form. authentication.sso.enabled = no Although we are not using a gateway at the moment, we set this parameter as no. Many WAP gateways do not support cookies. In that case, it is better to disable the SSO Cookie. The IBM WAP gateway supports session cookies, and can be used for SSO. authentication.openurl=http://www.ibm.com If the servlet doesn’t receive any ComeBackURL, it uses this one. authentication.default.realm=IBM If the servlet doesn’t receive the REALM that is using, it would get this one as default. See the next screen for the WAPAuthentication.properties code. Chapter 6. Subscriber authentication and access control 139
  • 158.
    ###################################################################### # 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 won't 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=Cookie 140 Introducing Tivoli Personalized Services Manager 1.1
  • 159.
    ###################################################################### # 2nd authenticationtype (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://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
  • 160.
    ###################################################################### # 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 URL's patterns protected by each tier # This list must only contain absolute path (starting with /) # When several URL's 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.com 142 Introducing Tivoli Personalized Services Manager 1.1
  • 161.
    ####################################################################### # Logthe 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 Device.properties The Device.properties is an example of properties file for devices. The explanation 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 an example. The first code line is a label for the device. After that, it sets the mime types supported and the presentation properties for the device. See the next 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 LayoutComponent's ###################################################################### 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
  • 162.
    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 1 6.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
  • 163.
    ###################################################################### # TSM DefaultAuthenticatorproperties ###################################################################### # ###################################################################### # 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 won't 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 Chapter 6. Subscriber authentication and access control 145
  • 164.
    # Ericsson WAPgateway 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
  • 165.
    authentication.session.used=yes ###################################################################### # Authentication serveruses 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 URL's patterns protected by each tier # This list must only contain absolute path (starting with /) # When several URL's 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 ###################################################################### Chapter 6. Subscriber authentication and access control 147
  • 166.
    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
  • 167.
    Chapter 7. UsingCustomer 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
  • 168.
    7.1 Assigning loginIDs 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 Console 150 Introducing Tivoli Personalized Services Manager 1.1
  • 169.
    • Fill outthe 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
  • 170.
    Figure 93. TISMAdministration 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
  • 171.
    This will openthe window shown in Figure 95. Fill out all the information. In the Access Profile, choose the one that you just have created, in our example CSR_ITSOCHANNEL. Figure 95. Add a New Login Name The Login we just created is shown in Figure 96 on page 154. Chapter 7. Using Customer Care and Director Tool 153
  • 172.
    Figure 96. TISMAdministration 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
  • 173.
    7.3 Log onsteps 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
  • 174.
    7.4.1 Enroll anew 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
  • 175.
    Figure 98. TISMcustomer care 7.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 subscriber's 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
  • 176.
    • If thesearch produced a list of subscribers, select the correct one from the list by double clicking the subscriber's 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 results 158 Introducing Tivoli Personalized Services Manager 1.1
  • 177.
    Figure 100. Subscriberupdate panel 7.4.3 Changing a subscriber's 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 subscriber's 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
  • 178.
    • If thesubscriber 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 payment 7.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
  • 179.
    Figure 102. Disconnectinga user Figure 103. User disconnected 7.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
  • 180.
    • Subscriber statusdisplayed 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 subscriber 162 Introducing Tivoli Personalized Services Manager 1.1
  • 181.
    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
  • 182.
    • Monthly UsageSummary Report • Monthly Cohort by Hours Report • Monthly Enrollment by Access Code Report • Monthly Enrollment Report • Monthly Disconnect Analysis Report Figure 105. TISM Reporting Program 7.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 application's URL. The “Additional Services” button will then link to and launch the external application. 164 Introducing Tivoli Personalized Services Manager 1.1
  • 183.
    7.7 Using theSearch 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 • Subscriber's first name • Subscriber's 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 doesn't 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 won't. A User Name Field search assumes that what you type is the beginning of the search object. If you type “nge” won't 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 subscriber's data is displayed. For business accounts the Account Number does appear when the subscriber's data is displayed Chapter 7. Using Customer Care and Director Tool 165
  • 184.
    166 Introducing Tivoli Personalized Services Manager 1.1
  • 185.
    Chapter 8. SubscriberSelfcare 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
  • 186.
    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
  • 187.
    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.properties located in /usr/TivTSM/selfcare/. In Table 13, you can see each of the variables 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
  • 188.
    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
  • 189.
    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 angePassword4PC 8.3 Running Subscriber Selfcare The URL to the Subscriber Selfcare applications should be provided as a link to the subscriber's 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
  • 190.
    Use the URLfor 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 Members 8.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
  • 191.
    Figure 107. Logginginto Selfcare When we introduced the username and password we were authenticated in the Authentication Server, (please refer to Chapter 6, “Subscriber authentication and access control” on page 111),and now we are ready to change the password as is shown in Figure 108. Figure 108. Changing a subscriber’s password Chapter 8. Subscriber Selfcare 173
  • 192.
    Once this formis 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 message 8.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 on 174 Introducing Tivoli Personalized Services Manager 1.1
  • 193.
    page 172) chooseChange Personal 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 Personal Information as shown in Figure 111. Figure 111. Change Personal Information When 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
  • 194.
    Figure 112. ChangingPersonal 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
  • 195.
    Figure 113. ChangingPayment Information Update the information and click Change Payment Information. A confirmation screen will be displayed (Figure 114 on page 178), in this screen, click Yes, Change Payment Information to confirm the changes. Chapter 8. Subscriber Selfcare 177
  • 196.
    Figure 114. Changingmethod 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
  • 197.
    Figure 115. Addinga new member (1) Chapter 8. Subscriber Selfcare 179
  • 198.
    Figure 116. Addinga 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
  • 199.
    Chapter 9. SubscriberPersonalized 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
  • 200.
    9.2.3 Hierarchical repositoryof 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 portlet 9.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
  • 201.
    These authentication modescan 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 Authentication 9.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
  • 202.
    Figure 117. Portalsoftware architecture 9.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
  • 203.
    <%@ 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 user's 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 user's 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
  • 204.
    This method readsthe 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 meration 186 Introducing Tivoli Personalized Services Manager 1.1
  • 205.
    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 use 9.3.2.2 Account.class This class is an access Bean that wraps the TISM EBILL_ACCOUNTINFO and EBILL_ACCOUNT tables. An account can be either a residential account or a business account. Business accounts can be organized in a hierarchy mapped on the company organization. This access Bean is read only. Chapter 9. Subscriber Personalized Service Environment 187
  • 206.
    • public voidread(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 different 188 Introducing Tivoli Personalized Services Manager 1.1
  • 207.
    from the JavaProperties model; it can store several values with the same name. It inherits from NameValuePairs. For an explanation, refer to the NameValuePairs class description. package com.tivoli.tsm.perso; public class AccountNameValuePairs extends NameValuePairs; 9.3.2.6 AddressBook.class This class is an access Bean that stores and retrieves the address book entries 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 user's 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
  • 208.
    It returns anEnumeration 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
  • 209.
    <%@ page buffer="none"import="com.tivoli.tsm.perso.* %> <HTML><BODY> <% // Create, read and populate the AddressBook bean, or just retrieve it from session AddressBook addbook = AddressBook.getBean(request); // Add a new contact AddressBookEntry 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.class This class is a utility class used to add or store Appointments in the Agenda access Bean. It is not an access Bean. package com.tivoli.tsm.perso; public class Appointment; Chapter 9. Subscriber Personalized Service Environment 191
  • 210.
    • public Appointment(Datestart, 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 “HH'h'mm” • public String displayEnd() This method displays the end date of the appointment (start date + duration) as a string with the format “HH'h'mm” • 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
  • 211.
    • public intgetDurationMin() 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.class This class is an access Bean that stores and retrieves the agenda entries of a user. 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
  • 212.
    • public Enumerationelements(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
  • 213.
    • public voidupdateMinMaxHours(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.class This class is an access Bean that retrieves the members of a family. It inherits from 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
  • 214.
    !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
  • 215.
    • public synchronizedboolean 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 user's 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
  • 216.
    <%@ 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 user's NameValuePairs. 198 Introducing Tivoli Personalized Services Manager 1.1
  • 217.
    • public synchronizedvoid 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
  • 218.
    <!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 “user's 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 periodically 200 Introducing Tivoli Personalized Services Manager 1.1
  • 219.
    reloads the referencedlinks 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 user's 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 JSP's by including building blocks; the portlets. Because the requirements for PC, PDA's, 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
  • 220.
    9.4.1 JSP portletarchitecture 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
  • 221.
    Figure 118. JSPPortlet Architecture 9.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
  • 222.
    A portlet ismade 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 JSP's dispatching rules: portlet JSP = f (portlet Command, Device Type). It contains all the references to the portlet JSP's. • 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 Portlets 204 Introducing Tivoli Personalized Services Manager 1.1
  • 223.
    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
  • 224.
    Figure 123. /perso/homewith 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=pageindex 206 Introducing Tivoli Personalized Services Manager 1.1
  • 225.
    • hostname: TheDNS 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.jsp page./WEB.home=/perso/components/layoutselector/homehtml.jsp page./WEB.addrbook=/perso/components/layoutselector/addrbookhtml.jsp page./WEB.agenda=/perso/components/layoutselector/agendahtml.jsp page./WEB.news=/perso/components/layoutselector/newshtml.jsp page./WEB.logout=/perso/components/layoutselector/logouthtml.jsp # ###################################################################### # Pages for WML devices ###################################################################### # page./WAP/R380.defaultcmd=/perso/components/layoutselector/homewml.jsp page./WAP/R380.minimize=/perso/components/layoutselector/homewml.jsp page./WAP/NokiaEmul.defaultcmd=/perso/components/layoutselector/homewml.jsp page./WAP/NokiaEmul.minimize=/perso/components/layoutselector/homewml.jsp page./WAP/nokia7110.defaultcmd=/perso/components/layoutselector/homewml.jsp page./WAP/nokia7110.minimize=/perso/components/layoutselector/homewml.jsp page./WAP/R320.defaultcmd=/perso/components/layoutselector/homewml.jsp page./WAP/R320.minimize=/perso/components/layoutselector/homewml.jsp Chapter 9. Subscriber Personalized Service Environment 207
  • 226.
    9.4.3.2 Addressing acommand 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
  • 227.
    9.4.4.1 Component API Thisstatic method includes a portlet within a page (servlet or Java Server Page). 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 API Each portlet can receive commands that are processed by the ComponentSession::service() method. Chapter 9. Subscriber Personalized Service Environment 209
  • 228.
    The portlet commandAPI 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 user's 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 JSP's. For portlets that need to access the TISM data base, the service() method usually loads at the User's 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 JSP's 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
  • 229.
    • public staticComponentSession getSession(HttpServletRequest request) - HttpServletRequest request: the HTTP request object. This method is used by the portlet JSP's to retrieve the current user's 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 JSP's 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 JSP's controls (buttons) to the portlet • The list of accessors that the JSP's can use to retrieve the “model” data Beans 9.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
  • 230.
    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 page 212 Introducing Tivoli Personalized Services Manager 1.1
  • 231.
    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 logout Class definition package com.tivoli.tsm.perso.components; public class LayoutSelectorComponent extends LayoutComponent; public class LayoutSelectorComponentSession extends LayoutComponentSession; 9.5.1.2 ComponentSelectorComponent ComponentSelectorComponent displays the list of available services to the user. The user chooses services, and that information is saved in the user profile. This is used to display, for instance, favorite applications in a homepage. See examples in Figure 127 on page 214 and Figure 128 on page 214. Chapter 9. Subscriber Personalized Service Environment 213
  • 232.
    Figure 127. Examplefor 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
  • 233.
    ###################################################################### # Application SelectorComponent 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 Calendar application.icon.calendar=/images/calendar.gif application.componenturl.calendar=/perso/calendarComponent application.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 Agenda application.icon.agenda=/images/agenda.gif application.componenturl.agenda=/perso/agendaComponent application.iconclickurl.agenda=/perso/home?layout=agenda&agenda=maximize application.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 Links application.icon.links=/images/world.gif application.componenturl.links=/perso/linkSelectorComponent application.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 Book application.icon.addressBook=/images/addrbook.gif application.componenturl.addressBook=/perso/addressBookComponent application.iconclickurl.addressBook=/perso/home?layout=addrbook&addressBook=maximize application.devicetype.addressBook=/ Chapter 9. Subscriber Personalized Service Environment 215
  • 234.
    ###################################################################### # 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 user's 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 JSP's : 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.jsp 216 Introducing Tivoli Personalized Services Manager 1.1
  • 235.
    Each service isdescribed 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 ximize For external services (with no portlet) the property application.componenturl.agenda is blank. The icon click URL can be completed dynamically with the user's profiling parameters. It uses pre-defined macros between * characters: http://www.yahoo.com/weather?q=*getCity* URL macros definition The 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’ Commands The 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
  • 236.
    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 user's selection. add Adds a new myapplihtml.jsp myappliwml.jsp application to the user's profile, and displays the user's selection. delete Deletes an myapplihtml.jsp myappliwml.jsp application from the user's profile, and displays the user's selection. myappli Displays the user's myapplihtml.jsp myappliwml.jsp selection. customize Allows modification customapplihtml.js of the user's 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
  • 237.
    9.5.1.3 Aggregator The Aggregatoris responsible for filtering and aggregating content into a page, such as the head-lines of the portal. An aggregator handles a list of Contents. For each user, that content can be filtered out according to filtering rules specified by the site WebMaster, such as new promotions targeting some categories of users. The aggregated contents are presented in a JSP selected according to the device type. Those JSPs are responsible for “skinning” the aggregated contents with the correct mark-up language (HTML, WML, etc). The contents' abstract and detailed texts should not include any markup tags so they are device type independent. Portlet configuration file The file used for the configuration of this servlet is /usr/TivTSM/personal/servlet/properties/com/tivoli/tsm/perso/components/Ag gregatorComponent.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.jpg The 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 rules based on the user's profile. This class must implement the Filter API. Its name is specified in the property: aggregator.filterclass=com.tivoli.tsm.perso.filter.SampleFilter The component is shown in the following screen. Chapter 9. Subscriber Personalized Service Environment 219
  • 238.
    ###################################################################### # 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
  • 239.
    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.class The 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
  • 240.
    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 user's 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 portlets 9.6.1 Customizor Portlet The Customizor Portlet allows you to capture parameters from the HTTP requests, validate them, and store them into the user's 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
  • 241.
    ###################################################################### # Customizor Componentfor 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,politics,soccer,golf,basketball ###################################################################### # 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 ###################################################################### # ###################################################################### # Pages for WML devices ###################################################################### # # .../... Chapter 9. Subscriber Personalized Service Environment 223
  • 242.
    List of portletcommands 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 user's profile. This method can be used in a portlet JSP to propose selections with check boxes. Choices 224 Introducing Tivoli Personalized Services Manager 1.1
  • 243.
    already selected bythe 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 macro's 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
  • 244.
    Portlet commands processedby 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 user's 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
  • 245.
    • public EnumerationgetCatIxEnum() 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 user's 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
  • 246.
    ###################################################################### # 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.jsp 228 Introducing Tivoli Personalized Services Manager 1.1
  • 247.
    The following properties(see the next screen) specify the date and time format. 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 yyyy Portlet commands processed by Calendar Table 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 definition package com.tivoli.tsm.perso.components; public class CalendarComponent extends Component; public class CalendarComponentSession extends ComponentSession; Chapter 9. Subscriber Personalized Service Environment 229
  • 248.
    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 E 230 Introducing Tivoli Personalized Services Manager 1.1
  • 249.
    The following propertiesspecify the default minimum and maximum hours to display 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 appointment displayed. ################################################# #min and max hours to display in agenda agenda.min.hour=8 agenda.max.hour=18 The following properties specify the garbage collector properties. The periodicity defines when the garbage collector must be activated in order to delete elder appointments. The appointment validity time is defined by the last properties. In this case, every six months the garbage collector is launched to delete all appointments whose start dates are more than six months ago. ############################## # For Garbage Collector ############################## #GC periodicity (in months) agenda.gc.periodicity=6 #appointment validity time (in months) agenda.gc.apptvaliditytime=6 Portlet commands processed by Agenda The 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
  • 250.
    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
  • 251.
    Methods • publiccom.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
  • 252.
    • public booleanisCommandValid() 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
  • 253.
    Command Description Dispatched Dispatched WML HTML JSP JSP minimize Minimizes the findaddrbookentrie minaddressbookw component shtml.jsp ml.jsp maximize Opens all the displayaddressboo displayaddressboo address book khtml.jsp kwml.jsp entries search Allows searching findaddrbookentrie for an entry by the swml.jsp first and lastname characters setfilter Applies a filtering displayaddressboo displayaddressboo command by khtml.jsp kwtml.jsp lastname addentry 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 entry addcommand Adds a new contact manageaddrbooke addaddressbooken ntrieshtml.jsp trywml.jsp delupdatecomman Updates or deletes displayaddressboo displayaddressboo d an existing entry khtml.jsp kwml.jsp endmanageentry 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, displayaddressboo y update or delete khtml.jsp command Chapter 9. Subscriber Personalized Service Environment 235
  • 254.
    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 user's 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
  • 255.
    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 user's profiling information. Chapter 9. Subscriber Personalized Service Environment 237
  • 256.
    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 user's 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
  • 257.
    It allows theportal Webmaster to define arbitrary rules that are evaluated at the beginning of each user session. Typically those rules can: • Load the user's profiling data. • Test any user's profile values, and other values provided by the JDK such as time and date. • Perform dynamic user's grouping; if (condition), then user belongs to a group. • Compute and save new properties in the user's 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 a class that implements the Profiler interface. That class is loaded by name by the authentication Checker; its name is specified in the property files: Web devices: /usr/TivTSM/personal/servlet/properties/com/tivoli/tsm/authentication/Default Authenticator. properties WAP devices: /usr/TivTSM/personal/servlet/properties/com/tivoli/tsm/authentication/WapAu thenticator.properties The property is: authentication.profiler.class=com.tivoli.tsm.perso.filter.SampleProfiler A sample Profiling class is provided in com.tivoli.tsm.perso.filter.SampleProfiler as shown in the next screen. Interface definition package com.tivoli.tsm.perso.filter; public interface Profiler; Methods public void createDynamicProfile(javax.servlet.http.HttpServletRequest request); Chapter 9. Subscriber Personalized Service Environment 239
  • 258.
    This method iscalled at each user's session start. The user's 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
  • 259.
    9.9 Example ofpersonalization 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
  • 260.
    <TR ID=componentbar ><TDalign="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
  • 261.
    ###################################################################### # CustomizorComponent 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 131 on page 244. Chapter 9. Subscriber Personalized Service Environment 243
  • 262.
    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 news 244 Introducing Tivoli Personalized Services Manager 1.1
  • 263.
    Figure 133. Contentnews Now, you have a news service. If you have a problem that you don’t get the changes in your page, restart the personal server. Customizing the desktop themes In the next screen, the themes are specified in the AgregatorComponent.properties after the topics. Once you set this, there are a few more steps. Create a style sheet in /usr/TivTSM/personal/content/css with the same name that you specified as the theme name in the AgregatorComponent.properties. For example, if you specify a theme name as verde, then you will have in the /usr/TivTSM/personal/content/css a style sheet file called verde.css. The result is the shown in the Figure 134 on page 247 and Figure 135 on page 247. Chapter 9. Subscriber Personalized Service Environment 245
  • 264.
    ###################################################################### # 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.jsp 246 Introducing Tivoli Personalized Services Manager 1.1
  • 265.
    . Figure 134. Theselection of themes Figure 135. An applied theme Logout This TPSM component is for logging out from the personalization server and TPSM. The next screen shows the code for this component. Chapter 9. Subscriber Personalized Service Environment 247
  • 266.
    <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 1 248 Introducing Tivoli Personalized Services Manager 1.1
  • 267.
    Figure 137. Exampleof link selector step 2 Figure 138. Example of link selector step 3 If you want to personalize the layout of the LinkSelector, go to /usr/TivTSM/personal/content/component/linkselector and choose the file that you are using. Calendar This 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 next screen. <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
  • 268.
    Figure 139. Exampleof 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
  • 269.
    Figure 140. Exampleof Agenda component ComponentSelector This TPSM component permits the subscriber to customize the applications that he/she wants to have in his/her homepage. An example of the code to add to a homepage is shown in the next screen. Later on, we are going to explain 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 a homepage. Chapter 9. Subscriber Personalized Service Environment 251
  • 270.
    Figure 141. Exampleof 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
  • 271.
    ###################################################################### # Application SelectorComponent 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 Calendar application.icon.calendar=/images/calendar.gif application.componenturl.calendar=/perso/calendarComponent application.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 Agenda application.icon.agenda=/images/agenda.gif application.componenturl.agenda=/perso/agendaComponent application.iconclickurl.agenda=/perso/home?layout=agenda&agenda=maximize application.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 Links application.icon.links=/images/world.gif application.componenturl.links=/perso/linkSelectorComponent application.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 Book application.icon.addressBook=/images/addrbook.gif application.componenturl.addressBook=/perso/addressBookComponent Chapter 9. Subscriber Personalized Service Environment 253
  • 272.
    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 user's 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 user's 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 JSP's : 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
  • 273.
    # # Page withother 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.jsp page./WAP/nokia7110.delete=/perso/components/componentselector/myappliwml.jsp page./WAP/nokia7110.myappli=/perso/components/componentselector/myappliwml.jsp page./WAP/R320.defaultcmd=/perso/components/componentselector/myappliwml.jsp page./WAP/R320.minimize=/perso/components/componentselector/minappliwml.jsp page./WAP/R320.maximize=/perso/components/componentselector/maxappliwml.jsp page./WAP/R320.add=/perso/components/componentselector/myappliwml.jsp page./WAP/R320.delete=/perso/components/componentselector/myappliwml.jsp page./WAP/R320.myappli=/perso/components/componentselector/myappliwml.jsp # .../... Chapter 9. Subscriber Personalized Service Environment 255
  • 274.
    Figure 142. ComponentSelectorComponentafter 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
  • 275.
    <!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.t ext.*" %> <% 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"><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> Chapter 9. Subscriber Personalized Service Environment 257
  • 276.
    <!----------- 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
  • 277.
    <TR><TD align="left"><font color="black"><A HREF="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
  • 278.
    } %> </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
  • 279.
    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
  • 280.
    This code redirectsthe 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
  • 281.
    Chapter 10. VirtualISP 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 ISP's 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 company's identity. The Internet Signup file (INS file) created at the end of enrollment and downloaded to a subscriber's PC will configure the subscriber's browser to use the virtual ISP's settings (for home page, e-mail and newsgroup settings). Virtual ISPs can configure Tivoli Internet Services Manager's Customer Care component to conform to their company's identity and support their subscriber's 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
  • 282.
    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
  • 283.
    This allows CSRsto 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 ISP's 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 Manager's 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
  • 284.
    Every subscriber enrolledwith 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 Provisioning 10.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 84 266 Introducing Tivoli Personalized Services Manager 1.1
  • 285.
    • Optionally, youcan 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
  • 286.
    268 Introducing Tivoli Personalized Services Manager 1.1
  • 287.
    Chapter 11. IntegrationToolkit 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
  • 288.
    Around the databaseprimary 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
  • 289.
    11.2 iTk usagescenarios 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
  • 290.
    business logic serverwill 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
  • 291.
    Figure 148. iTkcore classes structure The iTk permits the integration of applications without knowing the structure of the database tables. Some examples of what the iTk core classes do are: Chapter 11. Integration Toolkit 273
  • 292.
    • Manage TSMTransactions. 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
  • 293.
    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
  • 294.
    Code Example: toset 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
  • 295.
    Chapter 12. DeviceManager 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
  • 296.
    12.2 Device Manageron TPSM The Device Manager feature on TPSM provides a flexible framework and set of services for managing a subscriber's devices. Device vendors can extend the system's 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 TPSM 12.3 Device Manager Components Device Manager consists of six components: • Device Manager server 278 Introducing Tivoli Personalized Services Manager 1.1
  • 297.
    • 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 provider's 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
  • 298.
    The DMS servletinteracts 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 device 280 Introducing Tivoli Personalized Services Manager 1.1
  • 299.
    configuration). This pieceis 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
  • 300.
    The Device Managerdatabase 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: Developer's 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
  • 301.
    • The SMcomponent 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
  • 302.
    Administrators submit thesejobs 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 the 284 Introducing Tivoli Personalized Services Manager 1.1
  • 303.
    service provider. TivoliPersonalized 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 Supported 12.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
  • 304.
    • Generic supportfor Windows CE devices 12.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 characteristics of the device class itself. Device Manager supplies a device plug-in for the supported PalmOS devices that includes the following Java classes: • The Palm device class • The SW_DIST job class for software distribution • The DEVICE_CFG job class for device configuration For more information about the physical Palm computing devices themselves, see the Palm organizer information on the Palm Computing Web site: http://www.palm.com 12.5.2 Compaq Aero 8000 H/PC Pro devices The Compaq Aero 8000 Handheld PC Professional (Aero 8000) is a handheld PC or subnotebook for sales and service people, mobile business professionals, and other field personnel who need access to their enterprise network or the Internet. This handheld PC includes Microsoft Windows CE for Handheld PC Professional Edition, Version 3.0 operating system. The Aero 8000 is light in weight at only three pounds, and has resources unavailable with many palm-like devices. With the Aero 8000, you can access the Internet or the enterprise network with an Ethernet PC card or internal modem. The Aero 8000 also includes these features: • Instant-on so there is no waiting to boot • Flash memory to store applications in non-volatile memory • A 10-inch SVGA (800 x 600) screen providing a 256-color display • A 95% size keyboard • A touch pad system for a point-and-click Windows environment 286 Introducing Tivoli Personalized Services Manager 1.1
  • 305.
    • A built-insmart card reader • Pocket e-mail The Aero 8000 can be pre-configured for Device Manager by a service provider. The consumer has quick access to the Internet through the Pocket Internet Explorer browser. For more about the Aero 8000, see the Compaq Web site. See http://www5.compaq.com/products/handhelds/8000/ The Device Manager software includes a device plug-in for the Aero 8000 and its agent program. The Aero 8000 plug-in installs with the Device Manager software. The communication protocol between the Aero 8000 plug-in and its agent program is based on the HTTP protocol. The device agent program works only as an HTTP client. 12.5.3 NetVista Internet Appliance devices The NetVista Internet Appliance is a device for Internet access, e-mail, voice mail, Personal Information Management (PIM), and other pervasive computing tasks. This device uses the PvC (pervasive computing) client stack as the base architecture, and then places a shell and applications within that architecture. The PvC client stack is a set of software components for a wide range of non-traditional devices, such as Service Gateway or Networked Vehicle. The stack consists of a real time operating system, native programs, a JVM, the Service Management Framework, and other services. To manage the NetVista Internet Appliance efficiently, the plug-in software for Device Manager server and the device agent program are needed. The plug-in software and the device agent program communicate with each other using a protocol based on the HTTP or HTTPS protocol, and perform system management tasks. The plug-in software functions as the servlet on the HTTP server, and the device agent program is implemented as a Service Management Framework bundle written in Java and functions as the client. When disconnected from the service provider's network, the display on the NetVista Internet Appliance presents a rest page, which is a Web page customized by the service provider to display advertising and other information. The NetVista Internet Appliance can be pre-configured for Device Manager by a telephone company or service provider. Chapter 12. Device Manager 287
  • 306.
    The NetVista InternetAppliance also includes: • A unique ID, such as serial number or NIC ID • The PvC client stack • The ability to handle special HTTP messages from the enrollment program for starting the system management agent after the enrollment is complete • Support for HTTP redirection • Support for SSL For more information about the NetVista Internet Appliance, see the NetVista Web site: http://www.pc.ibm.com/us/netvista/index.html 12.5.4 Generic Windows CE devices A Windows CE device is a handheld PC, Palm-type device, pocket-type device, or subnotebook for sales and service people, mobile business professionals, and other field personnel who need access to their enterprise network or the Internet. This handheld PC includes Microsoft Windows CE for Handheld PC Professional Edition, Version 3.0 operating system. Windows CE devices have resources unavailable with many Palm-type devices. With Windows CE devices, you can access the Internet or the enterprise network with an Ethernet PC card or internal modem. Windows CE devices also include these features: • Instant-on so there is no waiting to boot • Flash memory to store applications in non-volatile memory • Typical screen sizes are 240x320, 640x240, 640x480, 800x480, and 800x600 • Typical CPUs include SH-3, SH-4, MIPS, and StrongARM • Pocket Internet Explorer browser Because screen size and resolution varies among the Windows CE devices, the Device Manager user interface may change for different types of Windows CE devices. In addition, the CPU type and file structure can differ among the various Windows CE devices. A Windows CE device can be pre-configured for Device Manager by a service provider. The consumer has quick access to the Internet through the Pocket Internet Explorer browser. The Device Manager software includes a device plug-in for Windows CE devices and the Windows CE agent program. The Windows CE plug-in 288 Introducing Tivoli Personalized Services Manager 1.1
  • 307.
    installs with theDevice Manager software. The communication protocol between the Windows CE plug-in and the Windows CE agent program is based on the HTTP protocol. The device agent program works only as an HTTP client. 12.6 Features of Device Manager This section describes the features of Device Manager. 12.6.1 Extensibility for managing various devices In order to provide extensibility to manage a variety of devices, the Device Manager server supports a “plug-in” architecture. Device Manager provides some basic device modules that can be easily extended to support various device types. And Device Manager can support more than one device type at the same time. TPSM Device Manager provides Device plug-ins that support Palm Pilot, Aero8000, general WindowsCE, and NetVista Internet Appliance by default. Other device venders, service providors, and ISPs can develop their own plug-ins with specialized functions to meet their needs. Generic functions are handled by other components of the Device Manager (that is Device Management Server servlets), while functions specific to a class of devices are localized to the plug-in for that device class. Along with the Device plug-ins, device agents are provided. Device agents reside on the device, and communicate with the server side plug-in to perform actual installation or parameter settings. The communication between a device plug-in and the device agent is device-class-dependent and is determined by the integrator who writes the plug-in code. For example, the WAP device vender can develop “WAP device plug-in” and the agent that uses WAP as its communication protocol between the plug-in and the agent. TPSM Device Manager plug-ins, which support Palm Pilot, Aero8000, general WindowsCE devices, and NetVista Internet Appliance, use HTTP (and HTTP-S) as their transport mechanism between the plug-in and the device agent. This allows device management traffic to pass through various kinds of network elements such as fire walls. However, it imposes some restrictions on the interaction between devices and the Device Manager, primarily that interactions take the form of request/response pairs initiated by the device. The Device Management server API defines programming interface between a Device plug-in and Device Management Dispatcher or Device Management Server servlet. The device management server API is designed to be generic and protocol-independent to support many kinds of devices and jobs. Chapter 12. Device Manager 289
  • 308.
    Plug-ins developers usethis API to write plug-in code. 12.6.2 Centralized management Device Manager console is used to manage all Device Manager functions. Business administrators and system administrators use this console to perform management tasks. 12.6.3 Provisioning to other system The Device Management API provides the programming interface for managing the device, jobs, and related resources in the device Manager database. All Device Manager components and other applications that access the Device Manager database should use this API. The interfaces between the DM feature and the subscription manager are well-defined and highly localized. Consequently, DM can be used as a facility through which other applications can perform device management. Essentially, the DM system is a repository of device data and an engine for processing “jobs” on devices when they are connected to the network. DM relieves the applications that use it from the need to store detailed device information (such as operating system, installed software, and configuration settings), and shields them from the protocols used to communicate with each type of device. 12.6.4 Scalability and availability Scalability is achieved horizontally with many DM servers identically configured. Requests are routed to these servers by a front-end such as an IBM e-Network Dispatcher. The e-Network Dispatcher allows you to add extra Device Manager servers without stopping the service. For the back-ended database system, you can use the IBM AIX HACMP solution for high availability. 290 Introducing Tivoli Personalized Services Manager 1.1
  • 309.
    Appendix A. Specialnotices This publication is intended to help people to understand the concepts and implementations of Tivoli Personalized Services Manager. The information in this publication is not intended as the specification of any programming interfaces that are provided by Tivoli Personalized Services Manager V1.1 or Tivoli Internet Services Manager V1.1. See the PUBLICATIONS section of the IBM Programming Announcement for ?Tivoli Personalized Services Manager V1.1 or Tivoli Internet Services Manager V1.1for more information about what publications are considered to be product documentation. References in this publication to IBM products, programs or services do not imply that IBM intends to make these available in all countries in which IBM operates. Any reference to an IBM product, program, or service is not intended to state or imply that only IBM's product, program, or service may be used. Any functionally equivalent program that does not infringe any of IBM's intellectual property rights may be used instead of the IBM product, program or service. Information in this book was developed in conjunction with use of the equipment specified, and is limited in application to those specific hardware and software products and levels. IBM may have patents or pending patent applications covering subject matter in this document. The furnishing of this document does not give you any license to these patents. You can send license inquiries, in writing, to the IBM Director of Licensing, IBM Corporation, North Castle Drive, Armonk, NY 10504-1785. Licensees of this program who wish to have information about it for the purpose of enabling: (i) the exchange of information between independently created programs and other programs (including this one) and (ii) the mutual use of the information which has been exchanged, should contact IBM Corporation, Dept. 600A, Mail Drop 1329, Somers, NY 10589 USA. Such information may be available, subject to appropriate terms and conditions, including in some cases, payment of a fee. The information contained in this document has not been submitted to any formal IBM test and is distributed AS IS. The use of this information or the implementation of any of these techniques is a customer responsibility and depends on the customer's ability to evaluate and integrate them into the customer's operational environment. While each item may have been reviewed by IBM for accuracy in a specific situation, there is no guarantee © Copyright IBM Corp. 2001 291
  • 310.
    that the sameor similar results will be obtained elsewhere. Customers attempting to adapt these techniques to their own environments do so at their own risk. Any pointers in this publication to external Web sites are provided for convenience only and do not in any manner serve as an endorsement of these Web sites. The following terms are trademarks of the International Business Machines Corporation in the United States and/or other countries: e (logo)® IBM ® Netfinity NetVista Redbooks Redbooks Logo RS/6000 SecureWay System/390 WebSphere WorkPad The following terms are trademarks of other companies: Tivoli, Manage. Anything. Anywhere.,The Power To Manage., Anything. Anywhere.,TME, NetView, Cross-Site, Tivoli Ready, Tivoli Certified, Planet Tivoli, and Tivoli Enterprise are trademarks or registered trademarks of Tivoli Systems Inc., an IBM company, in the United States, other countries, or both. In Denmark, Tivoli is a trademark licensed from Kjøbenhavns Sommer - Tivoli A/S. C-bus is a trademark of Corollary, Inc. in the United States and/or other countries. Java and all Java-based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and/or other countries. Microsoft, Windows, Windows NT, and the Windows logo are trademarks of Microsoft Corporation in the United States and/or other countries. PC Direct is a trademark of Ziff Communications Company in the United States and/or other countries and is used by IBM Corporation under license. ActionMedia, LANDesk, MMX, Pentium and ProShare are trademarks of Intel Corporation in the United States and/or other countries. UNIX is a registered trademark in the United States and other countries licensed exclusively through The Open Group. 292 Introducing Tivoli Personalized Services Manager 1.1
  • 311.
    SET, SET SecureElectronic Transaction, and the SET Logo are trademarks owned by SET Secure Electronic Transaction LLC. Other company, product, and service names may be trademarks or service marks of others. Appendix A. Special notices 293
  • 312.
    294 Introducing Tivoli Personalized Services Manager 1.1
  • 313.
    Appendix B. Relatedpublications The publications listed in this section are considered particularly suitable for a more detailed discussion of the topics covered in this redbook. B.1 IBM Redbooks For information on ordering these publications see “How to get IBM Redbooks” on page 297. • Tivoli Personalized Services Manager Device Manager 1.1: Pervasive Device Management, SG24-6027 • An Introduction to IBM WebSphere Everyplace Suite Version 1.1, SG24-5995 • Database Performance on AIX in DB2 UDB and Oracle Environments, SG24-5511 • IBM HTTP Server Powered by Apache on RS/6000, SG24-5132 • WebSphere Application Servers: Standard and Advanced Editions, SG24-5460 • IBM WebSphere Performance Pack: Load Balancing·with IBM SecureWay Network Dispatcher, SG24-5858 • IBM Network Dispatcher User's Guide (Version 3.0 for Multiplatforms), GC31-8496 B.2 IBM Redbooks collections Redbooks are also available on the following CD-ROMs. Click the CD-ROMs button at ibm.com/redbooks for information about all the CD-ROMs offered, updates and formats. CD-ROM Title Collection Kit Number IBM System/390 Redbooks Collection SK2T-2177 IBM Networking Redbooks Collection SK2T-6022 IBM Transaction Processing and Data Management Redbooks Collection SK2T-8038 IBM Lotus Redbooks Collection SK2T-8039 Tivoli Redbooks Collection SK2T-8044 IBM AS/400 Redbooks Collection SK2T-2849 IBM Netfinity Hardware and Software Redbooks Collection SK2T-8046 IBM RS/6000 Redbooks Collection SK2T-8043 IBM Application Development Redbooks Collection SK2T-8037 IBM Enterprise Storage and Systems Management Solutions SK3T-3694 © Copyright IBM Corp. 2001 295
  • 314.
    B.3 Other resources These publications are also relevant as further information sources: • HACMP for AIX 4.4 Planning Guide, SC23-4277 The following publications mentioned in this redbook are Product Documentation, which can be obtained in Tivoli product CD-ROMs or IBM WebSphere Everyplace Suite product CD-ROMs: • WebSphere Everyplace Suite Getting Started v1.1 • Tivoli Internet and Personalized Services Manager Documentation: TPSM Overview • Tivoli Internet and Personalized Services Manager Documentation: Planning and Installation • Tivoli Internet and Personalized Services Manager Documentation: Administration • Tivoli Internet and Personalized Services Manager Documentation: Director Guide • Tivoli Internet and Personalized Services Manager Documentation: Programmer’s Guide • Tivoli Personalized Services Manager Device Manager: Planning and Installation • Tivoli Personalized Services Manager Device Manager: Administration • Tivoli Personalized Services Manager Device Manager: Developer's Guide • Tivoli Personalized Services Manager Device Manager: PalmOS Plug-in Notes • Tivoli Personalized Services Manager Device Manager: NetVista Internet Appliance Plug-in Notes • Tivoli Personalized Services Manager Device Manager: Aero 8000 Plug-in Notes • Tivoli Personalized Services Manager Device Manager: Windows CE Plug-in Notes 296 Introducing Tivoli Personalized Services Manager 1.1
  • 315.
    How to getIBM Redbooks This section explains how both customers and IBM employees can find out about IBM Redbooks, redpieces, and CD-ROMs. A form for ordering books and CD-ROMs by fax or e-mail is also provided. • Redbooks Web Site ibm.com/redbooks Search for, view, download, or order hardcopy/CD-ROM Redbooks from the Redbooks Web site. Also read redpieces and download additional materials (code samples or diskette/CD-ROM images) from this Redbooks site. Redpieces are Redbooks in progress; not all Redbooks become redpieces and sometimes just a few chapters will be published this way. The intent is to get the information out much quicker than the formal publishing process allows. • E-mail Orders Send orders by e-mail including information from the IBM Redbooks fax order form to: e-mail address In United States or Canada pubscan@us.ibm.com Outside North America Contact information is in the “How to Order” section at this site: http://www.elink.ibmlink.ibm.com/pbl/pbl • Telephone Orders United States (toll free) 1-800-879-2755 Canada (toll free) 1-800-IBM-4YOU Outside North America Country coordinator phone number is in the “How to Order” section at this site: http://www.elink.ibmlink.ibm.com/pbl/pbl • Fax Orders United States (toll free) 1-800-445-9269 Canada 1-403-267-4455 Outside North America Fax phone number is in the “How to Order” section at this site: http://www.elink.ibmlink.ibm.com/pbl/pbl This information was current at the time of publication, but is continually subject to change. The latest information may be found at the Redbooks Web site. IBM Intranet for Employees IBM employees may register for information on workshops, residencies, and Redbooks by accessing the IBM Intranet Web site at http://w3.itso.ibm.com/ and clicking the ITSO Mailing List button. Look in the Materials repository for workshops, presentations, papers, and Web pages developed and written by the ITSO technical professionals; click the Additional Materials button. Employees may access MyNews at http://w3.ibm.com/ for redbook, residency, and workshop announcements. © Copyright IBM Corp. 2001 297
  • 316.
    IBM Redbooks faxorder form Please send me the following: Title Order Number Quantity First name Last name Company Address City Postal code Country Telephone number Telefax number VAT number Invoice to customer number Credit card number Credit card expiration date Card issued to Signature We accept American Express, Diners, Eurocard, Master Card, and Visa. Payment by credit card not available in all countries. Signature mandatory for credit card payment. 298 Introducing Tivoli Personalized Services Manager 1.1
  • 317.
    Glossary Aero 8000 TheCompaq Aero 8000 Handheld programming interface for manipulating the PC, which is a kind of Windows CE machine. It device- and job-related data resources stored in uses Hitachi SH4 processor and has a 10-inch the Device Manager database. color SVGA screen with 800 x 600 resolution, Device management server API An API 256 colors, and a 0.24 pixel pitch. (package com.tivoli.dms.dmserver) that defines AIX Advanced Interactive eXecutive. An IBM the programming interface between the device industrial-strength version of UNIX. management server servlet and the device plug-ins. API Application program interface. Device Manager console A graphical user ASP Application Service Provider. An Internet interface, written by Java, for administering service provider that offers application services. device management operations. business object An object containing DHCP See Dynamic Host Configuration business methods (logic) and state that is Protocol. intended for use within business applications. Business objects are Managed Objects. In some DM Device Manager. contexts, the term “business object” in this book DM console see Device Manager console. is used to refer to a business object class. It may also be used to refer to a composition of DMD Device Management Dispatcher. business object classes. DMS servlet Device management server Challenge Handshake Authentication servlet. Protocol (CHAP) A type of authentication in DNS See Domain Name System. which the authentication agent (typically a Domain Name System (DNS) A function to network server) sends the client program a key associate names and addresses on Internet to be used to encrypt the username and domain servers. password. Dynamic Host Configuration Protocol CHAP See Challenge Handshake (DHCP) A protocol for assigning dynamic IP Authentication Protocol. addresses to devices on a network. conduit A component of Palm Desktop e-business A term used by IBM to describe software. A conduit specifies how to transfer the use of Internet technologies to transform and translate data between your handheld and business processes. In practice, this means your computer for a specific handheld using Internet clients, such as Web browsers, as application or database during a Hot Sync front ends for applications that access back-end operation. legacy systems to allow greater access. See cradle The docking station for PDA devices to http://www.software.ibm.com/ebusiness for connect to the desktop PC. Generally, they also more information. have the function to charge the device. eXtensible Markup Language (XML) This DBCS Double byte character set. markup language, a streamlined version of DDL Data Definition Language. SGML, is regulated by WC3 (the World Wide Web Consortium). Can create more advanced deal Deals represent the service plan that is links than HTML. being subscribed to. Device management API An API (package com.tivoli.dms.dmapi) that defines the © Copyright IBM Corp. 2001 299
  • 318.
    file package Describeswhich files and iTk Tivoli Internet Services Manager Integration directories to distribute and how to distribute Toolkits. them. Java A high-level programming language file package definition file An ASCII file that developed in 1991 by Sun Microsystems that identifies the contents and characteristics of a file works on virtually any computer. Unlike HTML, package. which is a document display format that is continually improved to make it do more, Java is a File Transfer Protocol (FTP) The protocol used full-blown programming language like C and C++. for sending files over the network. It allows for the creation of sophisticated FTP See File Transfer Protocol. client/server applications to be developed for the GUI Graphical User Interface. Web and for intranets. HACMP High Availability Cluster Java Database Connectivity (JDBC) A Java Multi-Processing. API that allows Java programs to communicate with different database management systems in a HotSync A Palm function to do two-way platform-independent manner. Database vendors synchronization of records between your provide JDBC drivers for their platforms that handheld and your computer. Changes that you implement the API for their database, allowing make on your handheld or your computer are the Java developer to write applications to a updated on both platforms after a HotSync consistent API no matter which database is used. operation. The HotSync operation only synchronizes the changed portions of data, Java Development Kit (JDK) A software reducing HotSync time. development kit (SDK) for producing Java programs. HTTP See Hyper Text Transmission Protocol. JDBC See Java Database Connectivity. Hyper Text Transmission Protocol (HTTP) The communications protocol used to connect to JDK See Java Development Kit. servers on the World Wide Web. Its primary kiosk services Solutions for business center function is to establish a connection with a Web service providers such as hotel chains, airports, server and transmit HTML pages to the client and office service franchises that offer document browser. services (storing, reproduction, and distribution) IBM International Business Machines. through shared access devices in public spaces. IMAP See Internet Message Access Protocol. LAN See Local Area Network. Integrated Services Digital Network (ISDN) LDAP See Lightweight Directory Access An international communications standard for Protocol. sending voice, video, and data over digital Lightweight Directory Access Protocol telephone lines and normal telephone wires. (LDAP) A set of protocols for accessing Internet Message Access Protocol (IMAP) A information directories. LDAP is based on the protocol for retrieving e-mail messages. X.500 protocol, but supports TCP/IP, which is necessary for Internet access. Because it's a Internet screenphone A telephone-like simpler version of X.500, LDAP is sometimes appliance with a built-in display screen that may called X.500-lite. be used to call up Internet sites quickly. Local Area Network (LAN) A computer network Internet Service Provider (ISP) Offers services that spans a relatively small area, such as a on the Internet, such as connection services. building or a group of buildings. ISDN See Integrated Services Digital Network. meta file definition file An ASCII file that ISP See Internet Service Provider. provides software distribution properties for the 300 Introducing Tivoli Personalized Services Manager 1.1
  • 319.
    job. It alsohas a numbered application stanza, Portal Toolkit (pTk) A toolkit that features a [Applicationn], for each application package in Multi-device portal engine thata supports web the software distribution job. devices such as Win CE based PDAs, screenphones, and WAP devices as well as PCs. NetVista The IBM NetVista™ system includes It also features a User Preference API, which all-in-one, legacy-free, traditional desktops and allows user and user group profiling. thin clients to provide a full range of computing solutions for your business or home. Post Office Protocol (POP) A protocol used to retrieve e-mail from a mail server. Palm OS platform A popular operating system for Palm and other handheld devices, designed PPP See Point-to-Point Protocol. by Palm specifically for information management. PRC Palm Resource. See Palm OS resource Palm Pilot One of the most popular brands of database. PDAs, which uses Palm OS provided by Palm, proxy A proxy server is configured to manage Inc. Nowadays, 3Com, IBM, Sony, and some network traffic and to protect your network. other vendors sell original Palm Pilot devices. PSTN See Public Switched Telephone Network. Palm OS resource database Commonly referred to as a PRC (Palm Resource). A PRC PTF Problem temporary fix. can exist as a file on the host computer (that is, a pTk See Portal Toolkit. PC or a Macintosh) and is commonly referred to as a PRC file. A PRC contains database header Public Switched Telephone Network (PSTN) information as well as individual resource records The international telephone system based on in the database itself. copper wires carrying analog voice data. This is in contrast to newer telephone networks based on Palmscape Palmscape is a Web browser for digital technologies such as ISDN and FDDI. PDA. Palm version of Palmscape works on the Palm OS 3.0 and above. RADIUS Remote Access Dial-In User Service. PAP See Password Authentication Protocol. RAM disk Refers to RAM that has been configured to simulate a disk drive. You can Password Authentication Protocol (PAP) The access files on a RAM disk as you would access most basic form of authentication in which a files on a real disk. user's name and password are transmitted over a network and compared to a table of RAS Short for Reliability, Availability, name-password pairs. Serviceability. See Remote Access Services. PDA See Personal Digital Assistant. Realm Realms are a division of the subscriber name-space that allow the ISP to divide its PDB PDB files contain database records that Internet provisioning services, effectively creating are used by Palm OS to store the application a set of “Virtual ISPs.” data. They have features unique to the Palm OS. Remote Access Services (RAS) A feature built Personal Digital Assistant (PDA) A small into Windows NT that enables users to log into an handheld device that offers functions such as NT-based LAN using a modem, X.25 connection, address storage, calendar, and e-mail. This or WAN link. mobile device can be synchronized with desktop PCs. screenphone See Internet screenphone. Point-to-Point Protocol (PPP) A data link servlets Java classes that run on Web servers protocol that provides dial-up access over several to provide dynamic HTML content to clients. They lines. take as input the HTTP request from the client and output dynamically generated HTML. For POP See Post Office Protocol. more information on servlets, see 301
  • 320.
    http://www.software.ibm.com/ebusiness/ HTML, so that the output will be displayed in a pm.html#Servlets manner appropriate to the device. Simple Mail Transfer Protocol (SMTP) A TSM Tivoli Subscriber Manager. protocol for sending e-mail messages between UDB DB2 Universal Database from IBM. servers. URL Universal Resource Locator. SM See Subscription Manager. WAN Wide Area Network. smart phone Enables connections to the Internet or Lotus Notes network so that users can WAP See Wireless Application Protocol. access e-mail, faxes, voice mail, Web pages, and WAS IBM WebSphere Application Server. other files. It also has the potential to connect to a speech recognition server by phone, which would WE See WebSphere Everyplace Suite. allow a user to dictate notes or responses and WebSphere Everyplace Suite (WES) IBM then see the recognized text as it is returned from WebSphere Everyplace Suite is the solution for the server. pervasive computing that connects any device to SMTP See Simple Mail Transfer Protocol. any data, anywhere, anytime. It supports the following features; Connectivity, Content Solaris A UNIX-based operating environment Adaptation, Optimization, Security, Management developed by Sun Microsystems. Originally Services, and Services. developed to run on Sun's SPARC workstations, it now runs on many workstations from other WebSphere Transcoding Publisher (WTP) vendors. Solaris includes the SunOS operating A network software that modifies content system and a windowing system (either Open presented to users based on the information Windows or CDE). associated with the request, such as device constraints, network constraints, user SQL See Structured Query Language. preferences, and organization policies. SSL Secure Sockets Layer. A protocol for Transforming content can reduce or eliminate the transmitting private documents securely via the need to maintain multiple versions of data or Internet. applications for different device types and network service levels. Structured Query Language (SQL) A standard set of statements used to manage information Windows CE A version of the Windows stored in a database. By using these statements, operating system designed for small devices such users can add, delete, or update information in a as personal digital assistants (PDAs) (or table, request information through a query, and handheld PCs in the Microsoft vernacular). The display the result in a report. Windows CE graphical user interface (GUI) is similar to Windows 95, so devices running Subscription Manager (SM) A feature of the Windows CE should be easy to operate for Tivoli Internet and Personalized Services anyone that is familiar with Windows 95. Manager: Programmer’s Guide, which has functions such as enrollment, access control, and Wireless Application Protocol (WAP) A personalization. protocol to transfer content to and from wireless devices. TCP/IP Transmission Control Protocol/Internet Protocol. Wireless Markup Language (WML) A language to present content on wireless devices. TISM Tivoli Internet Services Manager. WML See Wireless Markup Language. TPSM Tivoli Personalized Services Manager. WTE Web Traffic Express. transcoding The operation of changing data from one format to another, such as XML to WTP See WebSphere Transcoding Publisher. 302 Introducing Tivoli Personalized Services Manager 1.1
  • 321.
    XML See eXtensibleMarkup Language. 303
  • 322.
    304 Introducing Tivoli Personalized Services Manager 1.1
  • 323.
    Index isLastCommandValid 236 AddressBook.class A add method 189 Access Code 75, 76, 94 categories method 189 associating with a deal 92 del method 189 creation 79 elements method 189 DEFAULT 77, 79 elementsByCategory method 190 purpose 80 elementsByCategoryAndLastname method unique billing deals 80 190 AccessBean elementsByCategoryAndName method 189 implementation 186 elementsByLastname method 190 AccessBean.class 185 modify method 190 getBean method 186 Aero 8000 299 getWellKnownName method 186 Agenda 182 read method 185 example 250 update method 186 garbage collector 230 Account Information 156 Agenda portlet Account.class command getParentAccount method 188 addappt 232 read method 188 addapptentry 231 AccountMembers.class defaultcmd 231 getMemberNbr method 188 delappt 232 getUserFirstName method 188 delapptentry 232 getUserName method 188 maximize 231 accounts minimize 231 sub-accounts 149 nextday 232 Additional Services 164 previousday 232 AddressBook 182 resOK 232 AddressBook portlet updateappt 232 command updateapptentry 232 addcommand 235 method addentry 235 elements 233 cancelmanageentry 235 getAgenda 233 defaultcmd 234 getDate 233 delupdatecommand 235 getMaxHour 233 delupdateentry 235 getMaxHourConfig 233 endmanageentry 235 getMinHour 233 maximize 235 getMinHourConfig 233 minimize 235 getPageCommand 234 search 235 getStartDay 233 setfilter 235 getStartMonth 233 method getStartTime 233 elements 236 getStartYear 233 getAddressBook 236 isCommandValid 234 getCategoryFilter 236 setMaxHourConfig 233 getCurrentEntry 236 setMinHourConfig 233 getLastnameFilter 236 Agenda.class getPageCommand 236 © Copyright IBM Corp. 2001 305
  • 324.
    add method 194 Architecture del method 194 JSP Portlet 202 elements method 194 ARPANET 1 getMinHour method 194 ASP 299 getStartHour method 194 Authentication 111 getStarttime method 193 API 184 modify method 194 MS-ISDN 182 Starttime method 193 Multi-domain mode 113 updateMinMaxHours method 195 Single-domain mode 113 Aggregator 182 stages 112 Aggregator portlet WML 182 commands Authentication Checker 113 defaultcmd 221 supports multiple device types 114 maximize 221 wireless 134, 135 minimize 221 Authentication Server 111, 112, 241 normal 221 central 122 oneitem 221 creating 42 method file system 115 getContent 222 structure 114 getContentEnumeration 222 testing 70 AIX 299 wireless 135 AIX filesets 22 authentication.jar 184 installing latest level 23 API 299 Application Servers B billing systems 264 configuration 67 BITNET 1 Appointment.class business accounts 149 Appointment method 192 business case one 138 displayDate method 192 business object 299 displayEnd method 192 displayStart method 192 equals method 192 C getDescription method 192 Calendar 182 getDuration method 192 example 249 getDurationHour method 192 Calendar portlet getDurationMin method 193 command getEnd method 193 currmonth 229 getId method 193 defaultcmd 229 getStart method 192 maximize 229 getStartDay method 193 minimize 229 getStartHour method 193 nextmonth 229 getStartMin method 193 prevmonth 229 getStartMonth method 193 week 229 getStartYear method 193 method isInThePast method 193 getCurrentDate 230 setDescription method 192 getCurrentTime 230 setDuration method 192 getDayOfMonth 230 setId method 193 getRollingMonthWeekNbr 230 setStart method 192 getTime 230 306 Introducing Tivoli Personalized Services Manager 1.1
  • 325.
    challenge handshake authenticationprotocol 299 getCity 217 CHAP 299 getComponents 218 child subscriber getFirstName 217 creating 162 getGender 217 disconnecting 163 getLastName 217 class getMyComponents 218 Component 204, 209 getValue 217 ComponentConfiguration 204, 211 getXxx 217 ComponentSession 204, 210 ComponentSession.class HttpServlet 202, 204 getSession method 211 portletSession 202 href method 210 command init method 210 /etc/rc.txservers 71 service method 210 /etc/rc.webservers 71 conduit 299 /usr/netscape/suitespot/stop-admin 39 console application adminclient.sh 67 downloading 69 chuser 38 Consumer account console.bat 69, 74, 150 managing 155 instfix 28 consumer accounts 149 inutoc 25 cookies 12, 114, 123, 124 lslpp 23 cradle 299 mkgroup 38 CSR 13 mkuser 38 limits by realm 264 smitty 25 see Customer Service Representative 149 StartProvServer.ksh 71 Customer Care 12, 152 tar 25 accessing 150 XMLConfig.sh 67 component 149 Component.class functions 149 include method 209 launching 155 ComponentSelector linking external applications 164 example 251 reports 163 ComponentSelectorComponent security provisions 12 WAP example 262 Customer Care Representative ComponentSelectorComponent portlet enrollment 154 commands Customer Care Server add 218 creating 43 customize 218 test 70 defaultcmd 217 Customer Care Support 13 delete 218 Customer Service maximize 218 security control 13 minimize 218 Customer Service Representative 149 myappli 218 access control profile 154 macro enrolling a consumer 156 *getCity* 217 view and update consumer account 157 *getFirstName* 217 Customizor *getGender* 217 example 242 *getLastName* 217 Customizor portlet *getXxx* 217 commands method defaultcmd 224 307
  • 326.
    maximize 224 Director Tool 16, 225 minimize 224 installing 73 save 224 testing 69 themes 224 directory topics 224 /usr/TivTSM/selfcare/content/jsp 167 CustomizorComponent.class /usr/WebSphere/AppServer/bin 67 exists method 224 DM. See Device Manager getParameterCheckings method 225 DMD 299 DMS servlet 299 DNS 299 D double byte character set 299 DB2 21 DbConnectionMgr 274 DBCS 299 E DDL 299 EARN 1 Deal 9, 75 e-business 299 associate Method of Payment List 98 eND 124 associate with a realm 90 enrollment engine 11 associating an access code 92 Enrollment JSP 108 change the subscriber’s Deal 159 Enrollment metrics 75 creation 82 enrollment process definition 299 managing 99 properties 76, 85 Enrollment Server Deal text 75 creating 48 creation 84 test 70 device distributing software 10 device management API 281, 282, 299 F FavoriteLinks.class device management server API 299 add method 197 Device Manager del method 197 components 278 elements method 197 console 283 field console updates 9 Profile Name 151 DB2 support 9 file functions 278, 284 /db/app/oracle/admin/ispb/create/ispbrun1.ksh Generic Windows CE device 9 33 Iap500 9 /db/creispblv.ksh 33 Internet appliance device 9 /installdir/TivTSM/install/tisminstall.log 65 job distribution 9 /usr/TivTSM/install/db/oracle/./sqlispb.log 37 overview 277 /usr/TivTSM/install/etc/rc.txservers 66 Personal Digital Assistants 10 /usr/WebSphere/AppServer/bin/setupCmd- plug-ins changes 9 Line.sh 67 purpose 277 AddressBookComponent.properties 234 Screenphones 10 AgendaComponent.properties 230 subscription manager 9 AggregatorComponent.properties 219 Wireless Access Protocol 10 AgregatorComponent.properties 244, 245 Device Manager console 299 authentication.jsp 115, 116 device plug-ins 280 Authentication.properties 117, 138 DHCP 299 Authentication.properties.wes 119 308 Introducing Tivoli Personalized Services Manager 1.1
  • 327.
    Authenticator.properties 118, 119 I Calendar Component. properties 227 IBM 300 ComponentSelectorComponent.properties IBM HTTP Server 21, 22 214, 252 IMAP 300 CustomizorComponent.properties 222, 242 installation DBPool.properties 117, 121, 122 different volume group 35 DefaultAuthenticator.properties 117, 118, 122, InstantDB 56 126, 138, 239 backup database 67 Device.properties 138, 143 Integration Toolkit device_enroll.properties 110 see iTk 269 enroll.properties 110 Internet Explorer 131 EnrollJspMsg.properties 110 Internet screenphone 300 httpd.conf 55 Internet Service Provider 2, 5 IE.properties 117, 131 Internet Signup file 263 install.ksh 58 Internet2 3 LayoutSelectorComponent.properties 207, 212 ISDN 300 LinkSelectorComponent.properties 225 ISP 300 Nav4.properties 117, 131 ispb 33 ns-setup 38 iTk 300 obj.conf 55 definition 269 selfcare.properties 169 example uses 269 Transaction.properties 69, 74, 110 form based browser 271 Validator.properties 110 Java Applets 272 WAPAuthentication.properties 138, 139 method WapAuthentication.properties 138 count 276 WAPAuthenticator.properties 138, 144 create 276 file package 300 delete 276 definition file 300 read 276 file transfer protocol 300 setSelectAllField 275 filter API 236 setSelectField 275 Filter.class update 276 sample 236 third party applications 272 FTP 300 usage scenarios 271 IY12075 28 G garbage collector J agenda 230 jar files 117 properties 231 Java 19, 300 GUI 300 Java Bean 116 auth 137 personalization API 181 H Java Developer Toolkit HACMP 300 home page download 25 customization 14 installation 25 HotSync 300 PTF 7 27 HTTP 300 Java Server Pages 19 JavaBeans session 114 JavaScript 19 309
  • 328.
    JDBC 121, 269,270, 300 customapplihtml.jsp 218 JDBC Connection pool debug 110 tuning 121 delAppthtml.jsp 232 JDK 22, 300 displayaddressbookhml.jsp 235 JDK 1.2.2 with PTF 7 21 displayaddressbookhtml.js 235 JSP displayaddressbookhtml.jsp 235 accessCode 109 displayaddressbookwml.jsp 235 accountCode 109 displayaddressbookwtml.jsp 235 addaddressbookentrywml.jsp 235 displayAppthtml.jsp 231, 232 addAppthtml.jsp 231, 232 displayApptwml.jsp 231, 232 addApptwml.jsp 231 DisplayDeviceAuthError 169 AddMemberAuthError 167 DisplayDeviceInfo 169 AddMemberCommit 168 DisplayDeviceList 169 AddMemberInput 168 DisplayDeviceMain 169 AddMemberMain 168 DisplayDevicenotFound 169 AddMemberMemberCancel 168 DisplayDeviceRefused 169 AddMemberRefused 168 dontGo 110 AddMemberSubmit 168 English 136 addrbookhtml.jsp 213 enroll 110 agendahtml.jsp 213 example 241 agreement 110 favlink7110.jsp 226 areYou18 109 favlinkhtml.jsp 226 cancelByUser 109 findaddrbookentrieshtml.jsp 234, 235 ChangePasswordAuthError 168 findaddrbookentrieswml.jsp 235 ChangePasswordCancel 168 homehtml.jsp 212 ChangePasswordCommit 168 homewml.jsp 212 ChangePasswordInput 168 Japanese 136 ChangePasswordMain 168 Layout 183 ChangePasswordRefused 168 logouthtml.jsp 213 ChangePasswordSubmit 168 manageaddrbookentrieshtml.jsp 235 ChangePaymentAuthError 168 manageaddrbookentrieswml.jsp 235 ChangePaymentCancel 168 maxappliwml.jsp 218 ChangePaymentCommit 168 maxcustomhtml.jsp 224 ChangePaymentInput 168 minaddressbookwml.jsp 234, 235 ChangePaymentMain 168 minAgendahtml.jsp 231 ChangePaymentRefused 168 minAgendawml.jsp 231 ChangePaymentSubmit 168 minapplihtml.jsp 218 ChangePersonalInfoAuthError 168 minappliwml.jsp 218 ChangePersonalInfoCancel 168 mincalendar7110.jsp 229 ChangePersonalInfoCommit 169 mincalendarhtml.jsp 229 ChangePersonalInfoInput 169 mincustomhtml.jsp 224 ChangePersonalInfoMain 169 minlink7110.jsp 226 ChangePersonalInfoRefused 169 minlinkhtml.jsp 226 ChangePersonalInfoSubmit 169 minnewswml.jsp 221 configure 109 monthhtml.jsp 229 confirm 109 monthwml7110.jsp 229 congrats 109 mopCombined 110 createfavlinkhtml.jsp 226 myapplihtml.jsp 217, 218 createlink7110.jsp 226 myappliwml.jsp 217, 218 310 Introducing Tivoli Personalized Services Manager 1.1
  • 329.
    newsabstract.jsp 221 creproplink 226 newsfull.jsp 221 defaultcmd 226 newshtml.jsp 213 dellink 226 newswml.jsp 221 favlink 226 onenews.jsp 221 minimize 226 onenewswml.jsp 221 reflink 226 paymentPlan 110 method personalCombined 110 getCatEnum 226 Portlet 183 getCatIxEnum 227 Portlets Framework 201 getCurrentCategory 227 reflink7110.jsp 226 getFavCategories 227 reflinkhtml.jsp 226 getFavLinkEnum 227 resultAgendahtml.jsp 232 getFavLinks 227 themehtml.jsp 224 getLinkEnum 227 topicshtml.jsp 224 List of Method of Payment updateDelApptwml7110.jsp 232 creation 96 userNameInvalid 110 load balancing 124 wapauthentication.jsp 136 log wapauthenticator.jsp 136 /usr/WebSphere/AppServer/logs/authentica- weekwml7110.jsp 229 tion.log 136 JSP Portlet locations 38 architecture 202 Login creating 152 lvispbdata 34 K lvispbdrsys 34 Kiosk services 300 lvispbindex 34 lvispboem 35 L lvispbsys 34 LAN 300 lvispbtemp 34 LayoutSelector 182 lvispbuser 35 LayoutSelectorComponent portlet command addrbook 213 M macros agenda 213 links 225 defaultcmd 212 meta file definition file 300 home 212 method logout 213 Checker.getSSOPassword 185 news 213 Checker.getSSOUserName 185 LDAP 16, 300 Checker.isNotAuthenticated 184 see Lightweight Directory Access Protocol 10 Method of Payment Lightweight Directory Access Protocol 10 creation 95 LinkSelector 182 method of payment example 248 changing 159 LinkSelectorComponent portlet Method of Payment Information 156 command Method of Payment List addlink 226 associate deal 98 back 226 Mosaic 2 copylink 226 multi-domain mode 122, 123 createlink 226 311
  • 330.
    N creating 46 NameValuePairs.class port 207 add method 198 test 70 del class 198 Personalized Service Environment 181 elements method 199 PFTPD 6 NAS 138 plug-in National Science Foundation 1 Authenticator.properties 118 NcFTPd 6 DefaultAuthenticator.properties 118 Netscape Enterprise Server 18, 21 plug-ins installing 38 Generic Windows CE 9 Netscape server administration console Internet appliance device 9 starting 39 lap500 9 Netscape server instances POP 301 creating 39 portal software architecture 183 ports 41 Portal Toolkit 14 primary directories 41 address book 7 server identifier 41 agenda 7 Netscape servers Authentication Services 7, 16 starting 67 calendar 7 stopping 67 JSP Components Framework 15 NetVista 301 JSP Portlet Framework 7 Network Access Server 73, 134 Multi-device Portal Engine 7, 15 Nokia Gateway 1.1.1 144 Referenced Links Management 7, 15 NSFNET 2 see pTk 181 Targeted Ads 8, 16 User Preferences API 7, 15 O Vertical Services Integrated 15 Oracle 21 portlet API 8i Version 8.1.5 9 Component API 208 starting 71 ComponentSession API 208 portlet framework P design 203 Palm OS 301 portlet JSP Palm pilot 301 definition 204 Palmscape 301 portlets 201 PAP 301 classes 204 password authentication protocol 301 command addressing mechanism 208 payment methods 75 Desktop 202 PDA 135, 277, 301 features 202 PDB 301 Layout 202 Perl 19 LayoutSelector 206, 207 Personal Information 156 service 182, 211 Personal Information Management AddressBook 222 , 234 address book 15 Agenda 222, 230 agenda 15 Calendar 222, 227 calendar 15 Customizor 222 personalization 14 LinkSelector 222, 225 example 241 structural 182, 211 Personalization Server Aggregator 211, 219 312 Introducing Tivoli Personalized Services Manager 1.1
  • 331.
    ComponentSelectorComponent 211, 213 R CustomizorComponent 211 RADIUS 112, 123, 135, 182, 183, 301 LayoutSelectorComponent 211, 212 RADIUS authentication server 19 portletSelector 182 RADIUS server PPP 301 enhancements 8 PRC 301 RAM disk 301 Premium Server RAS 301 creating 47 Realm 9, 11, 74, 91, 99, 150 parameters 126 associating with deals 90 test 70 creation 76 Profile 150 default 124 profile default domain 76 creating 151 definition 264, 301 Profiler.class description 76 sample 239 name 76 property wireless 137 creating 87 Registration Name 73, 92, 99 definition 87 creation 77 Provisioning FTP Daemon 6 Registration name 75 Provisioning server generic 77 starting 71 Multiple Access 77 proxy 301 reporting PSTN 301 sales 93 PTF 301 reports pTk 132, 135, 301 available reports 163 access Bean 185 restpages 10 Account.class 187 rlvispbdata 36 AccountFavoriteLinks.class 188 rlvispbindex 36 AccountMembers.class 188 rlvispbtemp 36 AccountNameValuePairs.class 188 AddressBook.class 189 Agenda.class 193 S Sales Channel 94 Appointment.class 191 creation 93 banner ads 182 definition 93 database of links 182 sample pages FamilyMembers.class 195 for HTML devices 205 FavoriteLinks.class 188, 196 screenphone 301 filter API 236 SDP Servlet Server functions 181 creating 50 JSP portlets 202 SelfCare 16 NameValuePairs.class 198 adding members 178 Profiler API 238 administration home page 172 ReferencedLinks.class 200 change password 172 sample JSP for HTML 183 changing payment information 176 sample JSP for WML 183 changing personal information 174 see Portal Toolkit 7 configuration file 169 User.class 201 Server creating 44 313
  • 332.
    test 70 start sequence 70 Service Provisioning 265 what’s new 6 servlet 301 Tivoli Single Sign On 124 SecureWay Policy Director 12 SM 302 TPSM 302 SMTP 302 installation 57 Solaris 302 overview 5 Solaris support 19 start sequence 70 SQL 302 Trace 274 SqlGenerator 274 traceLevel 67 SSL 302 TraceResources 274 SSO Cookie 123 Transaction Servers style sheet 245 verifying 71 wireless 136 TSM 302 sub-accounts 149 TxObject 274 subscriber TxSqlContext 274 bulk transfer 17 TxValue 274 creating child subscriber 162 TxValues 275 disconnecting 160 reconnecting 161 removing 160 U UDB 302 searching 165 URL 302 subscriber bases USENET 1 bulk transfer 263 User Groups subscriber number 33 definition 265 Subscriber Selfcare User Preference functions 167 API 185 Subscriber Update panel 158 User Preferences subscribers API 181 child 149 primary 149 System Management Tools Server V creating 45 Validator 275 Virtual ISP 264 creation 266 T enrolling subscribers 267 TCP/IP 302 overview 263 Telenet 1 test environment hardware 21 W software 22 WAN 302 TISM 302 WAP 135, 277, 302 Administration Console 74, 150 authentication 182 DB2 support 8 welcome homepage 261 installation 57 WAP device 113 installation verification 69 WAP Gateway 134 localization 8 WAS 302 overview 5 Web Content Hosting 6 post-installation steps 66 File delete 7 314 Introducing Tivoli Personalized Services Manager 1.1
  • 333.
    File download 7 File upload and automatic publishing 7 Perl scripts access counters statistics 6 guestbook 6 mail-to function 6 page access counter 6 Personal Web space display 7 provisioning 6 upload facility 6 Web Hosting Content Server creating 51 Web server configuration file 55 WebMail 234 WebSphere starting 67 Websphere create application servers 67 WebSphere Application Server 21 installation 52 root directory 57 WebSphere Every Place Suite see WES 183 WebSphere Everyplace Suite 9 WebSphere Everyplace suite TPSM integration 10 WES 119, 302 Authentication Proxy 183 WES authentication proxy 113 Windows CE 302 wireless access 134 Wireless Gateway 135 WML 135, 137, 138, 139, 302 WML Script 135 WTE 302 WTP 302 X XML 135, 183, 303 315
  • 334.
    316 Introducing Tivoli Personalized Services Manager 1.1
  • 335.
    IBM Redbooks review Yourfeedback is valued by the Redbook authors. In particular we are interested in situations where a Redbook "made the difference" in a task or problem you encountered. Using one of the following methods, please review the Redbook, addressing value, subject matter, structure, depth and quality as appropriate. • Use the online Contact us review redbook form found at ibm.com/redbooks • Fax this form to: USA International Access Code + 1 845 432 8264 • Send your comments in an Internet note to redbook@us.ibm.com Document Number SG24-6031-00 Redbook Title Introducing Tivoli Personalized Services Manager 1.1 Review What other subjects would you like to see IBM Redbooks address? Please rate your overall O Very Good O Good O Average O Poor satisfaction: Please identify yourself as O Customer O Business Partner O Solution Developer belonging to one of the O IBM, Lotus or Tivoli Employee following groups: O None of the above Your email address: The data you provide here may be used to provide you with O Please do not use the information collected here for future information from IBM or our marketing or promotional contacts or other communications beyond business partners about our the scope of this transaction. products, services or activities. Questions about IBM’s privacy The following link explains how we protect your personal information. policy? ibm.com/privacy/yourprivacy/ © Copyright IBM Corp. 2001 317
  • 337.
    250 <-> 459pages 0.475”<->0.875” (0.5” spine) Introducing Tivoli Personalized Services Manager 1.1
  • 340.
    ® Introducing Tivoli Personalized Services Manager1.1 Supports pervasive Tivoli Personalized Service Manager is a new product that devices helps the Internet Services Providers to manage and provide INTERNATIONAL services to their clients. Tivoli Personalized Service Manager TECHNICAL Creates personalized manages the different domains and provides services for SUPPORT service them; selfcare, customer care, premium services, ORGANIZATION personalization, and web content hosting. TPSM permits the environments creation of a portal for any type of device very quickly. All of these features have the flexibility to be personalized very easy Provides self care via standard languages, such as JavaBeans, JSP, HTML, BUILDING TECHNICAL WML, and XML. INFORMATION BASED ON PRACTICAL EXPERIENCE This redbook will show you how to install the Tivoli Personalized Service Manager and create a Portal for Internet IBM Redbooks are developed by and Wireless Devices with all the necessary services to the IBM International Technical manage it. The homepage can be personalized with Support Organization. Experts from IBM, Customers and applications provided via TPSM or the ISP. Some samples of Partners from around the world applications provided by TPSM are Agenda, Calendar, News. create timely technical Tivoli Personalized Service Manager provides tools that information based on realistic manage all these applications in the homepages, allowing you scenarios. Specific to set up a professional portal with a lot of services in a few recommendations are provided to help you implement IT hours. solutions more effectively in your environment. This book is valuable when planning a TPSM architecture and development. The discussions of design, installation and customization issues gives valuable information for Administrators, Architects, and Developers. For more information: ibm.com/redbooks SG24-6031-00 ISBN 0738419788