Emmanuel Dreyfus wrote:
> 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.
Sounds like you're doing this backwards, I would've stored all the elementary
attributes
and dynamically created the composite attribute from them.
Do entries get created with both the composite and elementary attributes
present?
Are modifications done to the composite, or to the elementary attributes?
> 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
>
--
-- Howard Chu
CTO, Symas Corp. http://www.symas.com
Director, Highland Sun http://highlandsun.com/hyc/
Chief Architect, OpenLDAP http://www.openldap.org/project/