On Mon, Dec 22, 2025 at 04:58:58PM +0000, Howard Chu wrote:
It's still unclear what you're trying to do in this overlay, so I can't guess at what alternatives might exist.
I did not want to annoy everyone with the details, but here we go.
There is a directory layout specification for french higher education institutes called supann [1]. It defines various attributes, incuding "composite attributes" that fold a lot of data. Here is an example for the attribute that describes student enrollment in a master's degree.
supannEtuInscription: [etab={UAI}0751717J][anneeinsc=2019] [regimeinsc={SISE}10][sectdisc={SISE}38][typedip={SISE}XB] [cursusann={SUPANN}M2][diplome={SISE}2500005] [population={SUPANN}AGEI][datefin=20201130220000Z]
Composite attributes are made of [key=val] components. The specification says that for each component, there must be a plain attribute (named "elementary attribute" in the spec) that holds the value. So if we have the supannEtuInscription above, we must also have: supannEtablissement: {UAI}0751717J supannEtuAnneeInscription: 2019 supannEtuRegimeInscription: {SISE}10 supannEtuSecteurDisciplinaire: {SISE}38 supannEtuTypeDiplome: {SISE}XB supannEtuCursusAnnee: {SUPANN}M2 supannEtuDiplome: {SISE}2500005 supannCodePopulation: {SUPANN}AGEI supannEtuDateFin: 20201130220000Z
My current work is slapo-supann. It automatically produces the elementary attributes from the composite attribute. That part works by adding dynamic attributes in search responses. I also added syntax checks so that the data inserted in composite attribute is sane. That works too.
There are other stuff generated. I use the datefin components to produce an attribute telling when the user account it active (A) or inactive (I) supannRessourceEtatDate: {COMPTE}A:SupannActif::20201130 supannRessourceEtatDate: {COMPTE}I:SupannExpire:20201130:
And, using current date, I generate an attribute telling if the account is active or not: supannRessourceEtat: {COMPTE}I:SupannExpire
Tha ability to filter on this generated attribute would be very nice. A service filter could require: (&(objectClass=supannPerson)(supannRessourceEtat={COMPTE}A:*))
And the question is: how to do it? As I explained, the only alternative I see is (1) to insert the data in the directory instead of adding it as dynamic during searches, or (2) to do a periodic refresh of that attribute by borrowing code from slapo-dds. I wonder if there are other options.
Another question is about inclusion of that stuff in contrib/slapd-modules. Do you think that it makes sense?
[1] https://services.renater.fr/documentation/supann/index