T.R | Title | User | Personal Name | Date | Lines |
---|
1632.2 | SUBSCRIBER writes PROFILE | IOSG::TALLETT | Gimmee an Alpha colour notebook... | Wed Oct 21 1992 09:38 | 13 |
|
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.3 | WRITE ADD Doesn't seem to work either. | WAYOUT::CLARKE | The Cat in the Hat comes back. | Wed Oct 21 1992 18:34 | 20 |
| 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.4 | Old memories fading | AIMTEC::WICKS_A | Braves Win, Braves Win, Braves Win! | Wed Oct 21 1992 19:38 | 9 |
| 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.5 | depends on the profile record being there? | IOSG::TYLDESLEY | | Thu Oct 22 1992 14:14 | 15 |
| 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.6 | SUBSCRIBER is Innocent! | AIMTEC::WICKS_A | Braves Win, Braves Win, Braves Win! | Thu Oct 22 1992 14:33 | 15 |
|
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.9 | More News. | WAYOUT::CLARKE | The Cat in the Hat comes back. | Fri Oct 23 1992 19:10 | 20 |
| 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.10 | Not so easy | IOSG::TALLETT | Gimmee an Alpha colour notebook... | Mon Oct 26 1992 09:30 | 29 |
| 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.11 | Retreat... | WAYOUT::CLARKE | The Cat in the Hat comes back. | Mon Oct 26 1992 16:58 | 35 |
| 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.13 | | KERNEL::OTHENJ | | Tue Nov 03 1992 09:05 | 62 |
| 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
|