Download Firefox: WindowsMac OS X
logo       
Google Custom Search
    AddThis Social Bookmark Button

Re: user promotion: msg#00000

Subject: Re: user promotion
Wolfgang Pichler wrote:
Łukasz Wilke wrote:

W liście z wto, 26-10-2004, godz. 20:09, Wolfgang Pichler pisze:
---
[[ off topic :

for USERS we will have some sort of activation system with :

- preprinted user-cards showing up code39 -c "card_id"
- preprinted labels with am autogenerated unique activation-barcode
 which links to external data which will be fed into
 emilda's user/group tables every year

mechanism :

- users are deactivated at the end of each (school-) year
- at the beginning of the year all the data of all users (of all classes) will be - fed into some db-space with primary key "activation-id" for every (potential) user
 - labels are printed containing name, year,class,barcode /w activation-id
    and deposited ready for use of the library-administrator
- if an "old" user wants to use the library
- he will pesent his "old" id-card and receive a "new" label affixed on the card - library-administrator will start some little gui, read activation-id and card-id this utility will tweak emilda's databases, voila, user is able to use the library for 1 more year
- same for a new user which will receive his/her "new" id-card
Sounds great !
Some time ago I've written simple library system, it had an option that
my librarian friends find attractive. It's "promoting" users after
school-year end. If before promotion "John Kowalsky" was a member of "1
A" class, after promotion, he was member of "2 A" class. Ofcourse
"promotion" function was available only when all books were returned to
library. I think this functionality would be useful in Emilda, however there are
no classes, but "groups', which can be set quite freely, not necessarily
in "digit letter" style.

clarification on promotions / "activation" :

assumed, one could use table/field users/user-ldap-id also for non ldap related (external) identification of users
assumed, we will promote users/user-ldap-id to "key" to speedup things
assumed we have some additional users/field user-last-seen-card-number as key to speedup things

I principle you could use user_ldap_id for this purpose, as long as you don't enable the LDAP functionality in Emilda. On the other hand it is very easy to manually add custom fields in the database, and with the current database API they shouldn't interfere with Emilda in any way (which ldap_user_id will do). You just have to keep track of and update these fields via your external user handling script (unless you implement something inside Emilda).

0) we will lots of plastic thingies with preprinted card-id's starting from 00000000000001L and some basic data on it like URL of library, etc.

Preprinted cards are certainly more tangible than barcodes on a list =). We have actually planned to produce a simple A4 template for these "cards", see bug 156. As a side note I'm curious to know how you have produced and/or how you will produce these library cards (or do you order them from somewhere)? We could use some ideas in that field.

(Btw I just noted that we probably don't support US letter size printouts. Making a (bug)note of that.)

1) at the end of each period of administration (schoolyear, calendaryear, quartal, whatever ...) :

a) all relevant data for users/user-id is fed freshly from external data via key users/user-ldap-id
b) users/user-card-number is saved to users/user-card-number-last-seen
c) users/user-card-number and users/user-password are set empty to disable any activities
d) users/user-privileges are set to 0

Actually disabling the user account in Emilda is almost equivalent to c) and d). And I wonder if b) is needed at all, since the card number can be overwritten at any time and hence the current number can stay in the database until a rewrite is needed.

Step a) however is more relevant, but I would suggest doing this when adding or re-enabling the user, since the data can be more fresh at that time (by some magical data update process).

2) new group(s) are established reflecting

a) the period of administration
b) the "current" target groups
e.g. 2004-3A, 2004-5-staff, ...

If a new group is needed simply because the group name (and/or description) has changed, I would suggest editing group descriptors in stead of removing/adding groups entirely. But again I might have misunderstood your intentions here.

3) table linkage is populated accordingly from external data to reflect the "new" meberships

4) we print labels containing relevant human-readable data well sorted to aid fast lookup by libraryoperator and an "activation-barcode"

POSSIBLE VALUES (please feel free to to discuss this ; i could not identify an optimal solution yet since the idea is too "fresh" but i think it should be shared anyway :-)

- users/user-id
- users/user-ldap-id
- additionally desired group membership for this period
- ?

SCENARIOS

A) a person will present an "old" id-card with a label containing an "old" group membership on it

1) we scan the "activation-barcode" on the "old" label and the card-id
(data is checked for consistency and possible "mistakes" of the user)
2) we look check relevant personal data (remember we should see the latest)
3) we assure no borrowed books exist, no due charges, etc.
4) we ask the person to type in his/her personal password twice
5) we stick the "new" label on the "old" id-card and scan the "activation-barcode" to commit usage permission for the "next" period
- users/user-card-id will be restored
- users/user-password is inquired and set accordingly
(remember: all other things as privileges, group managment, etc. were fed before)
6) anything left ?

This seems rather complicated to me. Sure, it might be worthwhile to have an activation-barcode in order to make users visit the library for reactivation, but the manual data-moving process could as well be skipped. But perhaps I'm viewing this from another perspective; let me explain:

I presume that you are trying to achieve an active-users-only, fresh database for each semester/period/year. I.e. only those users who really use the library will be active in Emilda, the rest will be stored somewhere else for import if necessary. Re-activation would require a visit to the library, which will ensure some interaction between patrons and librarians. Am I somewhere close to what you intended?

In our test environment (at a school here in Finland) all new students are manually added into Emilda at the beginning of each school year. The names of existing groups are changed when necessary, 4A becomes 5A. A few users who have changed groups are moved accordingly. Some users have left the school and are deleted (with backups in place for emergency restore).

The key question is how the users are added/imported/enabled, and this is exactly why we have introduced LDAP functionality in Emilda. LDAP was asked for in order to enable interaction with an existing ActiveDirectory database that handles usage rights to workstations at the school. I.e. that database contains information on all active students and personnel which Emilda can use as base for user creation and updates. Only names and group (class) information are needed, and now the school secretary can update a student's name in all systems simply by changing the information in AD. New students are imported into Emilda from AD by the head librarian, she simply links an Emilda user account with data from ActiveDirectory. And the scenario works on any central LDAP database, not only AD. This all in theory, we have yet to conduct a live test on this.

But if LDAP is not an option, and you want to "clean" the user database at the end of every year, and re-enable active users at the beginning of the next, we need to consider some automation alternative like the one you have suggested. But I would simplify it somewhat:

Why not move _all_ data to a backup location? In principle the system works the same way even if the entire user row is deleted. A special tool could be created for import of deleted users, and it would simply copy data from a backup database into Emilda. Linkage needs to be taken care of, but that problem remains no matter how you do this.

Patron accounts would be reactivated based on their permanent id/card number. Data validity can be checked during reactivation. No need for separate activation codes or new card numbers, simply re-insert a previously deleted row, check/update linkage and voilá!

B) a person will insist to be a "new" user

1) we browse thru our database to verify this condition
2) in case an "old" id-card was issued before we correct our data silently to reflect a "freshly" issued id-card and give the old one no chance again
3) A)3) - A)6) with the "new" id-card

A new user is a new user is a new user. Use user add for this purpose, and remove the old data from the "deleted" database if necessary. If the same card number is used, simply enter the old number while adding.

C) a person needs a "new" id-card for various reasons : see B) esp. B)2)

Card numbers can be changed dynamically and other user data can be updated. New cards with the same card number can be printed/ordered. A totally new account can be created.

REMARKS

i suppose, that the "ldap"-effort has much of this back in mind and i would not hesitate to use it accordingly.

if i am right, could you please unhide some rationale behind it, an more important clarify the implicitly required administrative tasks and data-structures (e.g. what to put on an id-card and why, how to "rotate" users without pain, etc.)

See above.

i think it is very important for the library staff to contact users as much as possible and some sort of personal "registration" will help

True, but this should be an option for each library to choose. In some cases personal registration is too complicated and time-consuming, which is the case at our (small) test location where there is no actual library personnel and one teacher works a few hours per week at the library desk.

and last but not least it is more cost-effective to print a bunch of unused (waterproof) labels than unused id-cards. we have 1200+ pupils 100+ teachers and only 200-300 active users which direct their steps towards the library ....

Or then we stick with the first id, hence eliminating the need for any new prints at all.

bottom line - if all of this is not a good idea and just a complication let's drop it and i am interested how others think about "rotation" and how to implement it smoothly.
---
sincerely
w.pichler

It _is_ a good idea, and it's also very good that you have brought this up for discussion. Rotation should ideally be an automagical process, and any effort to improve current functions is very welcome!

emilda rules - in near future at least :-)

1.2 will be awesome, not to mention a future 1.3 =)

Regards
--
Erik Berglund
Partner, Marketing
Oy Realnode Ab

lastname@xxxxxxxxxxxx
www.realnode.com



<Prev in Thread] Current Thread [Next in Thread>