Re @Cyril Grosjean 

Pour exporter la configuration ça doit être se faire via les lignes de commandes que je vous ai communiqué dans le premier message.  Pour le exporter le code, en effetça peut être effectué depuis le portail.

Allez dans "Explorateur système -> classes".

L'interface vous permettra de sélectionner les classes (également les routines et globals) et les exporter\importer:

A ma connaissance, le portail d'administration ne permet pas d'exporter les pages CSP.  Si vous en avez, il faut les copier directement à partir du disque.

Bonjour @Cyril Grosjean 

En ce qui concerne la configuration de l'application Web, vous pouvez exporter la configuration dans un fichier xml avec la classe Security.Applications:

zn "%SYS"
Set sc = ##class(Security.Applications).Export("c:\export\webapp.xml",,"/votreweb/application")

Pour l'import, sur l'autre serveur, il suffira d'utiliser la méthode Import

zn "%SYS"
Set sc = ##class(Security.Applications).Import("c:\export\webapp.xml")

Pour le code, c'est autre chose.  Une solution serait de créer un projet à partir du Studio (fichier -> nouveau projet), faites ensuite clique droit "ajouter au projet" pour tous les fichiers sources (CSP ou classes) que vous devez récupérer. 

Sauvegarder le projet et aller ensuite dans "Outils -> Export".  Vous aurez la possibilité d'exporter tout le projet en un seul XML.  Il suffira de faire "Outils -> Import local" depuis le studio de l'autre serveur.

Il y a d'autres possibilités en utilisant la classe $SYSTEM.OBJ.

Lorenzo.

Bonjour,

ISC devrait conserver une copie du repository lors d'une nouvelle release sur OEX (peut être que c'est déjà le cas).
Si un package devient orphelin, il me parait difficile de remettre le package entre les mains d'un autre membre de communauté si nous n'avons pas cette copie.  

Le compte GitHub pourrait être fermé, le repository supprimé, ce qui rendrait les choses compliquées.
Bien sûr, nous pourrions toujours tenter de le reconstruire à partir du package ZPM, mais ça demanderait du temps en reverse engineering.

Au sujet de la suppression de package.  
Je ne suis pas contre cette idée si elle est motivée.  
Il m'est déjà arrivé de supprimer un package, car une nouvelle fonctionalité de IRIS le rendait obsolète.  
Toutefois, j'ai laissé le repository GitHub public pour éviter la perte de connaissance.  

Pour ces cas là, peut être devrions-nous disposer d'une notion "archived package".  
Tout le monde ne travaille pas sur les dernières versions de IRIS, il pourrait donc y avoir un intérêt.

Merci pour le partage de cette astuce @Sylvain Guilbaud ,

Il y a quelques années j'ai du écrire un script pour faire la même chose et j'ai effectué un select sur INFORMATION_SCHEMA et des insert dans Security.SQLPrivileges.  C'était assez fastidieux.  J'utiliserai cette technique si je dois mettre le script à jour.

Voilà @Franck Hanotin ,

Vous pouvez créer une custom class query comme ceci : 

Class dc.Frank
{

Query QueryAFO() As %Query(ROWSPEC = "key1:%String,key2:%String,key3:%String,key4:%String,key5:%String,key6:%String,datavalue:%String") [ SqlProc ]
{
}

ClassMethod QueryAFOExecute(ByRef qHandle As %Binary) As %Status
{
    Set qHandle("node") = $Name(^AFO)
    Quit $$$OK
}

ClassMethod QueryAFOFetch(
	ByRef qHandle As %Binary,
	ByRef Row As %List,
	ByRef AtEnd As %Boolean) As %Status [ PlaceAfter = QueryAFOExecute ]
{
    Set sc = $$$OK
    Set qHandle("node") = $Query(@qHandle("node"), 1, data)

    If qHandle("node") = "" Set Row = "", AtEnd = $$$YES Quit $$$OK
    ; alimente les champs key x sur base des subscripts de la global
    For i=1:1:$QLength(qHandle("node")) Set $List(Row, i) = $QSubscript(qHandle("node"), i)

    If i < 6 {  ; si nous n'avons pas 6 subscripts, on alimente le reste avec une chaine vide
        For j = i+1:1:6 Set $List(Row, j) = ""
    }

    Set $List(Row, 7) = data, AtEnd = $$$NO
    Quit sc
}

ClassMethod QueryAFOClose(ByRef qHandle As %Binary) As %Status [ PlaceAfter = QueryAFOExecute ]
{
	Kill qHandle Quit $$$OK
}

/// juste pour quelques data de tests
ClassMethod set()
{
    s ^AFO("Site","Ville")="66722,3743"
    s ^AFO("Site","Ville","111BB","OBT")=",MMM,XXX,"
    s ^AFO("Site","Ville","111OW","OBT")=",XXX,MMM,"
    s ^AFO("Site","Ville","AANVRBIBS","zzz")    =    "1^^1"
    s ^AFO("Site","Ville","AANVRBIBS","zzz","*","dut")    =    "*afhalen waar gevonden"
    s ^AFO("Site","Ville","AANVRBIBS","zzz","*","eng")    =    "*Pickup where found"
    s ^AFO("Site","Ville","AANVRBIBS","zzz","*","fre")    =    "*Lieu où trouvé"
}

}

Vous pourrez ensuite facilement l'exploiter avec la requête suivante : 

select *
from dc.Frank_QueryAFO()



En mode terminal, vous pouvez aussi simplement utiliser cette ligne pour afficher les résultats : 

Do ##class(dc.Frank).QueryAFOFunc().%Display()

De mon coté, j'ai effectué le test sur IRIS 2023.2, il ne devrait  pas y avoir d'incompatibilité, mais si toutefois vous constatez un problème n'hésitez pas à répondre avec le message d'erreur.

Bonjour @lilian taroua, 

Quel type de documentation cherchez-vous?

La documentation technique officiel est effectivement en anglais et disponible en ligne ici.  Elle peut aussi être téléchargée en version PDF via ce lien.  Sur le site officiel FR, vous pourrez trouver des informations relatives aux différents produits.  Des formations sur IRIS en français sont également possible à ma connaissance.

Une belle dernière journée, l'après-midi a été rythmée par une présentation CI/CD par l'équipe Benelux, des discussions avec des intervenants de différents pays sur des sujets techniques ainsi que UCR. Aussi c'était l'occasion d'avoir un premier contact avec Intersystems Italia.

Nous avons finalement passé cette dernière soirée dans la ville.

Au plaisir de vous revoir lors d'un prochain événement !