[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference iosg::all-in-1_v30

Title:*OLD* ALL-IN-1 (tm) Support Conference
Notice:Closed - See Note 4331.l to move to IOSG::ALL-IN-1
Moderator:IOSG::PYE
Created:Thu Jan 30 1992
Last Modified:Tue Jan 23 1996
Last Successful Update:Fri Jun 06 1997
Number of topics:4343
Total number of notes:18308

1632.0. "DDSID not being updated when using MUA C UP" by WAYOUT::CLARKE (The Cat in the Hat comes back.) Tue Oct 20 1992 13:06

This note is similar to 171.

ALL-IN-1 V3.0, VMS 5.4-3, OA$DDS_PRIME = 1. MR V3.2

When you create a user profile using SM MUA C UP and specify 'Mail Directory' to
Y in the template used. A mail subscriber entry is created in DDS but a DDSID is
not written back into the new profile record (DDS updates are NOT deferred).

The DDS update is done using OA$LIB:SUBSCRIBER_ADD_INTERACTIVE.SCP, the comments
in this include;

"On a Profiles Prime or DDS Prime ALL-IN-1 system
this script will create a DDS Subscriber entry
for the ALL-IN-1 user from details stored in their
ALL-IN-1 Profile entry using their ALL-IN-1 username
as the "theoretical" primary key.

 As a side affect of this the DDSID of the created
Subscriber is written back to their ALL-IN-1 Profile."

This does not seem to be happening in ALL-IN-1 V3.0. When I create full ALL-IN-1
accounts the DDSID is written into the profile ok.

Am I doing something wrong or is this a problem?

Aston
T.RTitleUserPersonal
Name
DateLines
1632.2SUBSCRIBER writes PROFILEIOSG::TALLETTGimmee an Alpha colour notebook...Wed Oct 21 1992 09:3813
    
    	I remember digging into where the DDSID update gets done one time,
    	and I found that a WRITE ADD SUBSCRIBER updates the PROFILE entry
    	automatically but a WRITE CHANGE doesn't. The script you quoted
    	does do a WRITE ADD so I can't see why it wouldn't update the
    	PROFILE entry. Maybe you could look at the value of #dds_account
    	in the script and check that it is correct.
    
    	Judging by the comments in the script, you already have the
    	definitive answer in .1 ! :-)
    
    Regards,
    Paul
1632.3WRITE ADD Doesn't seem to work either.WAYOUT::CLARKEThe Cat in the Hat comes back.Wed Oct 21 1992 18:3420
If i use the WRITE ADD interactively this doesn't write back the DDSID into the
profile. eg

<WRITE ADD subscriber useridi="NEW", surname="NEW", useridi="NEW"

This definitely writes a new subscriber entry into DDS however 
PROFIL.DDSID["NEW"] is still empty.

I assume #DDS_ACCOUNT is loaded correctly as after a user profile creation
SUBSCRIBER.USERIDI["surname"] returns the correct ALL-IN-1 username.

I think the problem is that if a WRITE ADD SUBSCRIBER is supposed to write a 
DDSID back into profile auto-magicaly - it doesnt !

Does anybody know how the full account creation performs this, I don't think 
that it uses subscriber_add_interactive.scp.

Regards

Aston
1632.4Old memories fadingAIMTEC::WICKS_ABraves Win, Braves Win, Braves Win!Wed Oct 21 1992 19:389
    Aston,        
    
    the full creation (Create user) used to use SUBSCRIBER_ADD. The
    _INTERACTIVE version is only supposed to be used when you have the
    PROFIL form current e.g <FORM PROFIL
    
    regards,
    
    Andrew.D.Wicks
1632.5depends on the profile record being there?IOSG::TYLDESLEYThu Oct 22 1992 14:1415
    Re. .4 Correct. Sm_cr_user_details still uses subscriber_add.
    
    Like Paul (.2), I have tried to track down where the Profile gets updated
    with the DDSID, and I can only see that it must happen in the 
    subscriber dsab (nothing visible in subscriber_add, subscriber_add_
    interactive, or subscriber_change). 

    The difference between what happens in CU to that in UP, seems to be
    whether or not the profile record is in existence at the time that 
    the WRITE ADD is done. In CU the record has already been created; in 
    UP, it hasn't (form SM$CREATE$PROFILE does the add of the profile 
    data after the run of the subscriber_add_interactive).
    
    DaveT[who_knows_little_about_DDS]
               
1632.6SUBSCRIBER is Innocent!AIMTEC::WICKS_ABraves Win, Braves Win, Braves Win!Thu Oct 22 1992 14:3315
    
    
    DaveT,
    
    If the _interactive script is run before the profile record is created
    then how can any DSAB (particularly one as special as SUBSCRIBER!)
    possibly be expected to write something to it?? I believe there's a
    rectriction in RMS that the record has to exist before you can modify
    data in it (:==:)
    
    did this ever work? SPR against SM methinks
    
    Regards,
    
    Andrew.D.Wicks
1632.9More News.WAYOUT::CLARKEThe Cat in the Hat comes back.Fri Oct 23 1992 19:1020
I have traced a User Profile Creation and during SUBSCRIBER_ADD_INTERACTIVE
script it does try to write back the DDSID into the profile as follows;

![SYMBOL] Symbol: #dds_account, Value: BLACK6
![IO]     Getting record from PROFIL, Key: , Key-of-ref: USER/0
![IO]     Status: record not found
![IO]     Putting field DDSID in PROFIL, Value: 21280A800096288525A17CA0A8A50000
![IO]     Status: record not found
![IO]     Updating current record in PROFIL
![IO]     Status: no current record (operation not preceded by $GET/$FIND)
![IO]     Deaccessing PROFIL, File: OA$DATA_SHARE:PROFILE.DAT
![IO]     Status: record not locked

I am thinking that the DDS subscriber entry is created before the Profile entry	
is saved and hence the 'record not found' errors above.

Has anybody any idea for a workaround, worse comes to the worse I will just 
stick in a WRITE CHANGE PROFILE myself somewhere to put the DDSID into profile.

Thanks  Aston
1632.10Not so easyIOSG::TALLETTGimmee an Alpha colour notebook...Mon Oct 26 1992 09:3029
    Hi there!
    
>I am thinking that the DDS subscriber entry is created before the Profile entry	
>is saved and hence the 'record not found' errors above.
>
    	One day, when I have the courage, I'll take a look at that line
    	of code!
    
>Has anybody any idea for a workaround, worse comes to the worse I will just 
>stick in a WRITE CHANGE PROFILE myself somewhere to put the DDSID into profile.
    
    	No you won't. At least not reliably. I looked into something
    	similar a while back, and the problem is that you don't know the
    	DDSID until you have added the entry, and once you've added it,
    	the entry is no longer unique so you can't get it back. I suspect
    	that is why the SUBSCRIBER DSAB writes the PROFILE in the first place.
    
    	Could you not work around the problem closer to source by arranging
    	that the PROFILE entry is available for the SUBSCRIBER DSAB in
    	the first place? Actually, looking at the trace, the GET on PROFILE
    	has a null key value which looks wrong. If I get chance I'll look
    	at the code. Looking further at the trace, it seems that it steams
    	ahead with the update even if it fails to get the record, so it
    	will probably just update whatever PROFIL record is current (yuk).
    	Maybe you could exploit both bugs and arrange for the right PROFIL
    	record to be current.
    
    Regards,
    Paul
1632.11Retreat...WAYOUT::CLARKEThe Cat in the Hat comes back.Mon Oct 26 1992 16:5835
Can anybody see any problems with this as a temporary workaround.
I have tested it here and it seems to work but the customer involved is one of
our large account customers and I want to make sure it is right before making it
the 'official' workaround in Stars.

I will still SPR it for engineering fix, but a decent workaround will make this
lower priority.

Ta Aston

1. Remove DO SUBSCRIBER_ADD_INTERACTIVE from ~~POST_PROC~~ XOP branch on form
   SM$CREATE$PROFILE.

2. Change Named Data of form SM$CREATE$MENU to call script SUBSCRIBER_ADD after
   form SM$CREATE$PROFILE has been called as follows;

change

;;~~NEW_PROFILE~~;;

GET $SM_ACCOUNT = #SM_NEW_PROFILE \
.IF #SM_APP_CHANGE THEN
 WRITE CHANGE PROFIL USER = #SM_NEW_PROFILE, CREATE$FAIL = "3" \\
 OA$FAO SM$_CREATE_NOW,"OA$DISPLAY",#SM_NEW_PROFILE

to

;;~~NEW_PROFILE~~;;

GET $SM_ACCOUNT = #SM_NEW_PROFILE \
DO SUBSCRIBER_ADD\
.IF #SM_APP_CHANGE THEN
 WRITE CHANGE PROFIL USER = #SM_NEW_PROFILE, CREATE$FAIL = "3" \\
 OA$FAO SM$_CREATE_NOW,"OA$DISPLAY",#SM_NEW_PROFILE
  
1632.13KERNEL::OTHENJTue Nov 03 1992 09:0562
    Similarly,
    
    	To delete a user profile within ALL-IN-1 v3.0 also fails to delete
    the DDS entry from MBMAN. The code deletes the record from profile, and
    does not check up to see if it has been included in the mail directory.
    
    	The customer has included the following code changes which he feels
    would correct the situation (and yes, you guessed it - this is the same
    customer as the original note).
    
A) in SM$DELETE$PROFILE

change :                                                                                                                            
                                                                                                                                    
 ;;~~DELETE_PROFILE~~;;                                                                                                             
                                                                                                                                    
 WRITE DELETE PROFIL USER=$SM_ACCOUNT\                                                                                              
 .IF OA$STATUS                                                                                                                      
                                                                                                                                    
to:                                                                                                                                 
                                                                                                                                    
 ;;~~DELETE_PROFILE~~;;                                                                                                             
                                                                                                                                    
 GET #DDS_ACCOUNT = $SM_ACCOUNT\                                                                                                    
 DO SUBSCRIBER_DELETE\                                                                                                              
 WRITE DELETE PROFIL USER=$SM_ACCOUNT\                                                                                              
 .IF OA$STATUS                                                                                                                      
                                                                                                                                    
                                                                                                                                    
b) In the named data of SM$DELETE$PROFILE, when deleting a profile where a file                                                     
cabinet also exists, the test on the prompt response is incorrect.  The code                                                        
should be changed as follows:                                                                                                       
                                                                                                                                    
change:                                                                                                                             
                                                                                                                                    
 ;;~~FC_EXISTS~~;;                                                                                                                  
                                                                                                                                    
 PROMPT SM$_MUA_DEL_PROFILE_PROMPT\                                                                                                 
 OA$FLD_STAY\                                                                                                                       
 .IF OA$PROMPT_DISPOSE EQS OA$Y                                                                                                     
  THEN                                                                                                                              
     XOP "~~DELETE_PROFILE~~"                                                                                                       
  ELSE                                                                                                                              
     GET OA$DISPLAY=SM$_MUA_DEL_PROFILE_QUIT                                                                                        
                                                                                                                                    
to:                                                                                                                                 
                                                                                                                                    
 ;;~~FC_EXISTS~~;;                                                                                                                  
                                                                                                                                    
 PROMPT SM$_MUA_DEL_PROFILE_PROMPT\                                                                                                 
 OA$FLD_STAY\                                                                                                                       
 .IF OA$PROMPT_TEXT EQS OA$Y                                                                                                        
  THEN                                                                                                                              
     XOP "~~DELETE_PROFILE~~"                                                                                                       
  ELSE                                                                                                                              
     GET OA$DISPLAY=SM$_MUA_DEL_PROFILE_QUIT