Migration << >>

Installing the Memo Source Extractor

This section guides you through the process of installing the MEMO Source Extractor. You will need to perform each of the following steps, which are explained in the sections that follow.

Prepare for Installation

The MEMO Source Extractor will only operate with MEMO/MVS, not MEMO for other operating systems. The MEMO Source Extractor requires MEMO V3.2.1 (or later version), MEMO/API V1.4.0 (or later version), and VS/COBOL II Run Time Library Release 3.0 (or later version).

Before installing the MEMO Source Extractor, you must install Microsoft Exchange Server and a PC-TSO file transfer program, which will transfer mail between MEMO and Microsoft Exchange Server. This file transfer program must convert the text of mail messages from EBCDIC to ASCII.

You may decide to migrate all MEMO users at one time (single-phase migration) or in multiple steps (multi-phase migration). If you choose multi-phase migration, you also need to install a connection between MEMO and Microsoft Exchange Server.

The MEMO Source Extractor migrates only mail messages, not binary files. The following maximums are also imposed on the migrated data:

If you need to migrate more than 10,000 items in a user's maillog, you can re-run the migration process for that user, as explained in the "Troubleshooting the MEMO Source Extractor" section.

Unload the MEMO Source Extractor

The MEMO Source Extractor is supplied in a PC-readable format, which consists of two sequential files:

File Dataset Name (DSN) Descriptions
1 MEMOJCL.PDS JCL library for MEMO Source Extractor
2 MEMOLOAD.PDS Load library for MEMO Source Extractor

   To unload the MEMO Source Extractor, follow these steps for both of the sequential files

  1. Use the PC-TSO file transfer program to copy the file from the MEMO Source Extractor PC format to a sequential dataset on the host. If the PC-TSO file transfer program allows you to specify the LRECL value of the dataset, use 80 bytes.
  2. Expand the sequential dataset to create a partitioned dataset, by using the TSO RECEIVE command. For example, enter RECEIVE INDSNAME(MEMOJCL) where MEMOJCL is the name of the sequential dataset that you created on the host.
  3. When prompted, enter the name of the partitioned dataset that you want to create. For example, to create the MEMO Source Extractor JCL partitioned dataset, type DATASET(MEMOMIG.JCL).

Run the MEMO Source Extractor Set-Up Job

The MEMO Source Extractor set-up job creates the dataset MIGACCT and copies a sample record into it. The sample record will help you understand the format of MIGACCT records. The set-up job also creates generation data group indexes required by MIGUSERL, MIGPRIM1, MIGPRIM2, MIGPACK, MIGPACK2, and MIGSEC.

Start set-up by submitting the JCL job MIGSET in the MEMO Source Extractor JCL library.

   To run the JCL job MIGSET

  1. Edit MIGSET by changing the job card information to conform to your installation standards.
  2. Change the library name to the library where you have installed the MEMO Source Extractor. All MEMO Source Extractor datasets in the sample JCL are prefixed by MEMOMIG.
  3. Save.
  4. Submit.

Create the Error Message File

Error messages from the MEMO Source Extractor are held in the VSAM file MIGCUST. To create MIGCUST, you need to run the JCL job MIGCUST in the MEMO Source Extractor library.

   To run the JCL job MIGCUST

  1. Edit MIGCUST by changing the job card information to conform to your installation standards.
  2. Change the library name to the library where you have installed the MEMO Source Extractor. All MEMO Source Extractor datasets in the sample JCL are prefixed by MEMOMIG.
  3. Specify your installation's COBOL II runtime library in Step 30.
  4. Save.
  5. Submit.

Note   The error messages produced by the MEMO Source Extractor can be customized. Refer to the "Customize the Error Messages" section, later in this chapter.

Update the Sample JCL Jobs

To install the MEMO Source Extractor, you submit two JCL jobs: MIGGENU (UserList) and MIGMIGU (Migrate Users). Sample JCL for these jobs can be found in the MEMO Source Extractor JCL library.

Both jobs are supplied with dummy job card and library definitions. You must update the sample JCL before running the jobs. For information about running these functions, see the "Performing the Migration" section, later in this chapter.

Start the UserList function by submitting the MVS batch job MIGGENU from the MEMO Source Extractor JCL library. Refer to Figure 2.4 and follow these steps:

   To update the UserList sample JCL job MIGGENU

  1. Run Step 10, which runs the MEMO HLPERUD1 program that produces MIGUSRL, a list of all users currently defined in MEMO. The HLPERUD1 program operation is described in the MEMO Reference Manual.


  2. Note   CATSEQI must be defined as a dummy dataset to ensure that MIGUSRL contains all users currently defined in MEMO.
  3. Run Step 20, which runs the MEMO Source Extractor MIGGENU program that generates messages to send to the Microsoft Exchange Server Migration Assistant.
  4. Update the Job Control information.
  5. Update all MEMO Source Extractor dataset names, all of which are prefixed MEMOMIG. Replace MEMOMIG with the name of the library where you installed the MEMO Source Extractor.
  6. Update all MEMO dataset names, which are prefixed MEMO. Replace MEMO with the name of the library for your installation.
  7. Specify the COBOL II runtime library for your installation in Step 20.
  8. Update Step 20 as follows:
  9. MODE
    Specify M to create mailboxes, or specify R to create remote addresses. You create mailboxes for all users to be migrated to Microsoft Exchange Server. You create remote addresses for users who will continue to use MEMO but want to communicate with Microsoft Exchange Server users.

    PRIMARY
    Specify the PC file name for MIGPRIM1, the extracted information file produced by the MEMO Source Extractor. This name must correspond to the name to be used during PC-TSO file transfer. For example: primary.pri.

    GCID
    Specify the Graphic Character Identification (GCID) code-page that will hold the extracted information on the PC. Its standard value will be 850, which is the multilingual code-page. This value should correspond to the code-page to which your PC-TSO file transfer program will convert when converting from EBCDIC to ASCII. For example: gcidcodepage.

//JOBNAME  JOB (ACCOUNT),'PROGNAME',                                    
//         CLASS=0,MSGCLASS=A,NOTIFY=XXXXXXX,COND=(0,NE)                
//*ROUTE PRINT RMT188                                                   
//********************************************************************* 
//*                                                                   * 
//* MEMO SOURCE EXTRACTOR                                             *
//*                                                                   * 
//* This process can be run in two modes:                             * 
//*                                                                   * 
//* a) Generate list of Memo users to be created as Microsoft Exchange Server users.        * 
//*                                                                   * 
//* b) Generate list of Memo users to be created as Microsoft Exchange Server mailboxes.    * 
//*                                                                   * 
//*                                                                   * 
//* Held in library  - MEMOMIG.JCL(MIGGENU)                           * 
//* Created          - 19/09/95 by IMI                                * 
//* Last Updated     -                                                * 
//*                                                                   * 
//* Steps - STEP010  PGM HLPERUD1   Generate a file of all current    *
//*                                 Memo users.                       * 
//*         STEP020  PGM MIGGENU    Generate a file containing a list * 
//*                                 of users to be downloaded and a   * 
//*                                 packing list containing the file  * 
//*                                 names used.                       * 
//********************************************************************* 
//****************************************************                  
//****     Create file of ALL MEMO users          ****                  
//****************************************************                  
//*                                                                     
//STEP010  EXEC PGM=HLPERUD1,PARM='GMT+0'                               
//*                                                                     
//STEPLIB  DD  DSN=MEMO.MEMO32.LOAD,DISP=SHR                            
//CATBASE  DD  DSN=MEMO.MEMO32.CATBASEP,DISP=SHR                        
//CATCHG   DD  DSN=MEMO.MEMO32.CATCHGP,DISP=SHR                         
//CHKPT    DD  DSN=MEMO.MEMO32.CHKPT,DISP=SHR                           
//CATSEQI  DD  DUMMY                                                    
//CATSEQO  DD  DUMMY                                                    
//CATSEQU  DD  DSN=&&CATSEQU,DISP=(NEW,PASS,DELETE),                    
//             UNIT=DASD,SPACE=(TRK,(5,5),RLSE),                        
//             DCB=(RECFM=VB,LRECL=467,BLKSIZE=23000)                   
//WTOLOG   DD  DSN=MEMO.MEMO32.DIRUPD.WTOLOG,DISP=SHR
//*                                                                     
//SORT     EXEC PGM=SORT,REGION=512K                                    
//SORTIN   DD  DSN=&&CATSEQU,DISP=(OLD,PASS)                            
//SORTOUT  DD  DSN=MEMOMIG.MIGUSRL(+1),                                 
//             DISP=(NEW,CATLG,DELETE),                                 
//             UNIT=DASD,SPACE=(TRK,(5,5),RLSE),                        
//             DCB=(MODEL.DSCB,RECFM=VB,LRECL=467,BLKSIZE=23000)        
//SORTWK01 DD  DSN=&UT1,UNIT=3380,SPACE=(CYL,(9),,CONTIG)               
//SORTWK02 DD  DSN=&UT2,UNIT=3380,SPACE=(CYL,(9),,CONTIG)               
//SORTWK03 DD  DSN=&UT3,UNIT=3380,SPACE=(CYL,(9),,CONTIG)               
//SYSIN    DD  DSN=MEMO.MEMO32.MAINT(RDIRSORT),DISP=SHR                 
//SYSOUT   DD  SYSOUT=*                                                 
//*                                                                     
//****************************************************                  
//****     Generate UserList                      ****                  
//****************************************************                  
//*                                                                     
//STEP020  EXEC PGM=MIGGENU                                             
//*                                                                     
//STEPLIB  DD  DISP=SHR,DSN=MEMOMIG.LOAD                                
//*                     COBOL 2 LIBRARY                                 
//         DD  DISP=SHR,DSN=SYS1.COB2LIB
//MIGUSRL  DD  DISP=SHR,DSN=MEMOMIG.MIGUSRL(+1)                         
//MIGACCT  DD  DISP=SHR,DSN=MEMOMIG.MIGACCT                             
//MIGCUST  DD  DISP=SHR,DSN=MEMOMIG.VSAM.MIGCUST                        
//MIGPRIM1 DD  DSN=MEMOMIG.MIGPRIM1(+1),                                
//             DISP=(NEW,CATLG,CATLG),                                  
//             UNIT=DASD,SPACE=(TRK,(5,5),RLSE),                        
//             DCB=(MODEL.DSCB,RECFM=FB,LRECL=255,BLKSIZE=22950)        
//MIGPACK  DD  DSN=MEMOMIG.MIGPACK(+1),                                 
//             DISP=(NEW,CATLG,CATLG),                                  
//             UNIT=DASD,SPACE(TRK,(5,5),RLSE),                         
//             DCB=(RECFM=FB,LRECL=255,BLKSIZE=22950)                   
//MIGPARM1 DD *                                                         
MODE        R                                                           
PRIMARY     PRIM1.PRI                                                   
GCID        850                                                         
/*                                                                      
//SYSOUT   DD  SYSOUT=*                                                 
//SYSPRINT DD  SYSOUT=*                                                 
//SYSABOUT DD  SYSOUT=*                                                 
//SYSUDUMP DD  SYSOUT=*              
//*

Figure 2.4 Supplied JCL to run UserList MIGGENU

Update the Migrate Users Sample JCL Job

This process will migrate all mail items for a specified list of MEMO users to Microsoft Exchange Server. Start the process by submitting the MVS batch job MIGMIGU from the MEMO Source Extractor JCL library. Refer to the sample JCL in Figure 2.5 and follow these steps.

   To update the Migrate Users sample JCL job MIGMIGU

  1. Run Step 10, which runs the MEMO HLPERUD1 program that produces MIGUSRL, a list of all users currently defined in MEMO. (The HLPERUD1 program operation is described in the MEMO Reference Manual.)
  2. Note   CATSEQI must be defined as a dummy dataset to ensure that MIGUSRL contains all users currently defined to MEMO.

  3. Run Step 20, which runs the IBM utility IDCAMS that creates a VSAM dataset MIGUSRV.
  4. Run Step 30, which copies MIGUSRL to the VSAM dataset MIGUSRV that was created in Step 20.
  5. Run Step 40, which runs the MEMO Source Extractor MIGMIGU program that generates MIGDOC2, a file with all items in the maillogs of a specified list of users.
  6. Update the job control information.
  7. Update all MEMO Source Extractor dataset names (prefixed MEMOMIG). Replace MEMOMIG with the name of the library where you have installed the MEMO Source Extractor.
  8. Update all MEMO dataset names (prefixed MEMO). Replace MEMO with the name of the MEMO library for your installation.
  9. Specify the COBOL II runtime library for your installation in Step 10.
  10. Update Step 40 as follows:
  11. PRIMARY
    Specify the PC file name for MIGPRIM2, the file with the extracted memo header information produced by the MEMO Source Extractor. This name must correspond to the name to be used during PC-TSO file transfer. For example: primary.pri.

    SECONDARY
    Specify the PC file name for MIGSEC, the file with the extracted memo text produced by the MEMO Source Extractor. This name must correspond to the name to be used during PC-TSO file transfer. For example: secondary.sec.

    GCID
    Specify the Graphic Character Identification (GCID) code-page that will hold the extracted information on the PC. Its standard value will be 850, which is the multilingual code-page. This value should correspond to the code-page to which your PC-TSO file transfer program will convert when converting from EBCDIC to ASCII. For example: gcidcodepage.

//JOBNAME  JOB (ACCOUNT),'PROGNAME',                                    
//         CLASS=0,MSGCLASS=A,NOTIFY=XXXXXXX                            
//********************************************************************* 
//*                                                                   * 
//* MEMO SOURCE EXTRACTOR                                             * 
//*                                                                   * 
//* Held in library  - MEMOMIG.JCL(MIGMIGU)                           * 
//* Created          - 25/09/95 by IMI                                * 
//* Last Updated     -                                                * 
//*                                                                   * 
//* Steps - STEP010  PGM HLPERUD1   Generate a file of all current    * 
//*                                 Memo users.                       * 
//* Steps - STEP020  PGM IDCAMS     Create a VSAM user file           * 
//*         STEP030  PGM IDCAMS     Copy file of all current Memo     * 
//*                                 users onto the VSAM file          * 
//*         STEP040  PGM MIGMIGU    Generate a file containing all    * 
//*                                 mail items from the mail logs of  * 
//*                                 all the specified users.          * 
//*                                                                   * 
//********************************************************************* 
//****************************************************
//****     Create file of ALL MEMO users          ****                  
//****************************************************                  
//*                                                                     
//STEP010  EXEC PGM=HLPERUD1,PARM='GMT+0'                               
//*                                                                     
//STEPLIB  DD  DSN=MEMO.MEMO32.LOAD,DISP=SHR                            
//CATBASE  DD  DSN=MEMO.MEMO32.CATBASEP,DISP=SHR                        
//CATCHG   DD  DSN=MEMO.MEMO32.CATCHGP,DISP=SHR                         
//CHKPT    DD  DSN=MEMO.MEMO32.CHKPT,DISP=SHR                           
//CATSEQI  DD  DUMMY                                                    
//CATSEQO  DD  DUMMY                                                    
//CATSEQU  DD  DSN=&&CATSEQU,DISP=(NEW,PASS,DELETE),                    
//             UNIT=DASD,SPACE=(TRK,(5,5),RLSE),                        
//             DCB=(RECFM=VB,LRECL=467,BLKSIZE=23000)                   
//WTOLOG   DD  DSN=MEMO.MEMO32.DIRUPD.WTOLOG,DISP=SHR                   
//*                                                                     
//SORT     EXEC PGM=SORT,REGION=512K                                    
//SORTIN   DD  DSN=&&CATSEQU,DISP=(OLD,PASS)                            
//SORTOUT  DD  DSN=MEMOMIG.MIGUSRL(+1),                                 
//             DISP=(NEW,CATLG,DELETE),                                 
//             UNIT=DASD,SPACE=(TRK,(5,5),RLSE),                        
//             DCB=(MODEL.DSCB,RECFM=VB,LRECL=467,BLKSIZE=23000)
//SORTWK01 DD  DSN=&UT1,UNIT=3380,SPACE=(CYL,(9),,CONTIG)               
//SORTWK02 DD  DSN=&UT2,UNIT=3380,SPACE=(CYL,(9),,CONTIG)               
//SORTWK03 DD  DSN=&UT3,UNIT=3380,SPACE=(CYL,(9),,CONTIG)               
//SYSIN    DD  DSN=MEMO.MEMO32.MAINT(RDIRSORT),DISP=SHR                 
//SYSOUT   DD  SYSOUT=*                                                 
//*                                                                     
//STEP20    EXEC PGM=IDCAMS                                             
//SYSPRINT  DD   SYSOUT=*                                               
//DD1       DD   UNIT=DASD,                                             
//          VOL=SER=PRM001,DISP=SHR                                     
//SYSIN     DD   *                                                      
    DELETE MEMOMIG.MIGUSRV                                              
    DEFINE CLUSTER  (NAME(MEMOMIG.MIGUSRV)    -                         
                     VOL(PRM001)              -                         
                     FILE(DD1)                -                         
                     UNIQUE                   -                         
                     CYL(1 1)                 -                         
                     SHAREOPTIONS(2 3))       -                         
           DATA  (NAME(MEMOMIG.MIGUSRV.DATA)  -                         
                     RECORDSIZE(463 463)      -                         
                     KEYS(20 12))             -                         
           INDEX (NAME(MEMOMIG.MIGUSRV.INDEX) -
	IMBED                 -                         
                      REPLICATE)                                         
 /*                                                                      
 //****************************************************************      
 //* COPY DATA OVER FROM THE ORIGINAL MIGUSRL TO THE COPY         *      
 //****************************************************************      
 //*                                                                     
 //STEP30   EXEC PGM=IDCAMS                                              
 //SYSPRINT DD  SYSOUT=*                                                 
 //INPUT    DD  DISP=SHR,DSN=MEMOMIG.MIGUSRL(0)                          
 //OUTPUT   DD  DISP=SHR,DSN=MEMOMIG.MIGUSRV                             
 //SYSIN    DD  *                                                        
   REPRO INFILE(INPUT) OUTFILE(OUTPUT)                                   
 //********************************************************************* 
 //*                                                                   * 
 //* STEP40: GENERATE FILE CONTAINING LIST OF MAIL ITEMS FOR ALL       * 
 //*         SUPPLIED USERS.                                           * 
 //*                                                                   * 
 //********************************************************************* 
 //*                       
 //STEP40    EXEC PGM=MIGMIGU                                            
 //STEPLIB   DD DSN=MEMOMIG.LOAD,DISP=SHR
//*                     COBOL 2 LIBRARY                                 
//          DD DSN=SYS1.COB2LIB,DISP=SHR                                
//          DD DSN=MEMO.MEMO32.API14.LOAD,DISP=SHR                      
//SYSOUT    DD SYSOUT=*                                                 
//SYSABOUT  DD SYSOUT=*                                                 
//APIPARM   DD DSN=MEMO.MEMO32.API14.PARMLIB,DISP=SHR                   
//MIGCUST   DD DSN=MEMOMIG.VSAM.MIGCUST,DISP=SHR                        
//MIGPRIM2  DD DSN=MEMOMIG.MIGPRIM2(+1),                                
//             DISP=(NEW,CATLG,DELETE),                                 
//             UNIT=DASD,SPACE=(TRK,(5,5),RLSE),                        
//             DCB=(MODEL.DSCB,RECFM=FB,LRECL=255,BLKSIZE=22950)        
//MIGSEC    DD DSN=MEMOMIG.MIGSEC(+1),                                  
//             DISP=(NEW,CATLG,DELETE),                                 
//             UNIT=DASD,SPACE=(CYL,(1,5),RLSE),                        
//             DCB=(MODEL.DSCB,RECFM=FB,LRECL=255,BLKSIZE=25500)        
//MIGPACK2  DD DSN=MEMOMIG.MIGPACK2(+1),                                
//             DISP=(NEW,CATLG,DELETE),                                 
//             UNIT=DASD,SPACE=(TRK,(5,5),RLSE),                        
//             DCB=(MODEL.DSCB,RECFM=FB,LRECL=255,BLKSIZE=25500)        
//MIGUSER   DD *                                                        
USER    PASSWORDDISTGRP                                                 
/*
//*                                                                     
//MIGPARM2  DD *                                                        
PRIMARY     PRIM.PRI                                                    
SECONDARY   SECOND.SEC                                                  
GCID        850                                                         
/*

Figure 2.5 Supplied JCL to run Migrate Users MIGMIGU

Modify the MEMO User Profiles

The MEMO Source Extractor uses the Call Type (L2) Interface to access the data in MEMO. To extract the mail items of a MEMO user to be migrated, the MEMO Source Extractor will log on to MEMO by using the memo-ID of the user.

To use the L2 Interface, you must define each user to be migrated as a MEMO/API user and specify their password in the MEMO Source Extractor migration file. The user must not be logged on to MEMO during the migration of their account.

Note   The MEMO API PARMLIB contains the SPLITSIZ field, which holds the value of the maximum memo size. You should set SPLITSIZ to at least the maximum size supported by your MEMO system. A larger document is split into separate documents and remains split after migration.

   To prepare to migrate each group of users

  1. Modify each user's profile to specify a MEMO/API user.
  2. Reset each user's password to match that specified in the MIGUSER migration file. This will ensure that the user cannot log on during the migration.
  3. Set the SPLITSIZ parameter in MEMO/API PARMLIB to the maximum text size supported by MEMO.

Customize the Error Messages

The MEMO Source Extractor lets you customize error messages. The text of all the error messages produced by the MEMO Source Extractor is held on a TSO dataset to allow customization.

After the error messages are customized, you must copy them onto the control file MIGCUST. You start by submitting the MVS batch job MIGCUST, as follows:

Input files    
MIGDCUS1 Low values header Sequential (fixed length)
MIGDCUS2 Control source file Sequential (fixed length)
Output files    
MIGCUST Control file VSAM

The dataset MIGDCUS2 in the MEMO Source Extractor JCL library contains a sample set of control records that generate the VSAM error message file MIGCUST. MIGDCUS2 contains groups of three records. Each group defines one error message, formatted as follows :

/M
ID           =nnnn
TEXT01 =Text for message code nnnn   

Only the message text can be customized. The error message definition and number records must not be changed.

   To customize an error message

  1. Edit MIGDCUS2 and change the text of a particular TEXT01 record.
  2. Save MIGDCUS2.
  3. Submit the JCL job MIGCUST.

The following table lists the error messages that you may write to the job output with the MEMO Source Extractor.

Number Message
0100 MIGGENU0100E Invalid mode type
0101 MIGGENU0101E No records on MIGACCT
0102 MIGGENU0102E Not all required fields specified in MIGACCT
0103 MIGGENU0103E Mode field missing from MIGPARM1
0104 MIGGENU0104E Mode field blank in MIGPARM1
0105 MIGGENU0105E Primary field missing from MIGPARM1
0106 MIGGENU0106E Primary field blank in MIGPARM1
0107 MIGGENU0107E Container field blank in MIGPARM1
0108 MIGGENU0108E No records on MIGPARM1
0109 MIGGENU0109W No users found to migrate
0200 MIGMIGU0200E No records on MIGPARM2
0201 MIGMIGU0201E Primary field missing from MIGPARM2
0202 MIGMIGU0202E Primary field blank in MIGPARM2
0203 MIGMIGU0203E Secondary field missing from MIGPARM2
0204 MIGMIGU0204E Secondary field blank in MIGPARM2
0205 MIGMIGU0205E No users on MIGUSER
0206 MIGMIGU0206E Error calling MEMO/API
0207 MIGMIGU0207E Error signing user onto MEMO--processing continues onto next user
0208 MIGMIGU0208W User has more than 10,000 mail items in maillog
0209 MIGMIGU0209W Mail item has more than 70 recipients
0210 MIGGENU0210W Mail item is too large

Figure 2.6 MEMO Source Extractor Error Messages

Transfer Formatted Messages

You transfer the formatted files produced by the UserList and Migrate Users functions to Microsoft Exchange Server. UserList will create MIGPRIM1 and MIGPACK. Migrate Users will create MIGPRIM2, MIGSEC, and MIGPACK2. Transfer these datasets to a PC on your Microsoft Exchange LAN by using a PC-TSO file transfer program and the Migration Wizard.

Note   The PC-TSO file transfer program must be able to convert message text from EBCDIC to ASCII.

Test the Installation

To test the installation, run both the MIGGENU and MIGMIGU sample JCL jobs. Because you are only testing the installation, not performing migration, the files created should not be downloaded to Microsoft Exchange Server. Check the formatted files produced by the MEMO Source Extractor and make sure that they're not forwarded to the Microsoft Exchange Server Migration Assistant.

   To test the UserList function MIGGENU

  1. Submit the job.
  2. Browse MIGPRIM1 and MIGPACK.

   To test the Migrate Users function MIGMIGU

  1. Submit the job.
  2. Browse MIGPRIM2, MIGSEC, and MIGPACK2.