# Group DNA cloning
###### tags: `Kizuna-architecture`
<style> .ui-infobar, #doc.markdown-body { max-width: 1000px; } </style>
### Cliff notes
- currently, `createCloneCell` is not yet available in the Holochain conductor Admin interface. This forces us to instantiate the DNA through a fresh Happ. The architecture below has attempted to minimize the migration to `createCloneCell` once it is available.
## Entry Relationship Diagram
```mermaid
graph TD
subgraph group_meta_zome
subgraph meta
group_dna_meta
group_dna_meta==>group_dna_meta_v2
group_dna_meta==>group_dna_meta_v3
end
subgraph group_members
member1
member2
member3
end
subgraph path
meta_path-->group_dna_meta
members_path-->member1
members_path-->member2
members_path-->member3
end
end
```
## Data Structures
```rust=
struct GroupDnaMeta {
creator: AgentPubKey,
created: Timestamp,
name: String,
passphrase: String,
avatar: Option<EntryHash>
}
struct Member {
address: AgentPubKey
}
struct groupAvatar(SerializedBytes)
```
## Validations
### Entries
* `groupDnaMeta`
* create is valid if creator pubkey matches the creator field (change this to role based validation when role is implemented)
* update is valid if creator pubkey matches the cretor field (refactor once role lands)
* update is valid only if the passphrase field did not change from the originally created GroupDnaMeta
* update is valid only if the creator feild did not change from the original entry
* update is valid only if the name of the group is more than 1 character but less than 50
* update is valid only if the avatar entry can be retrieved
* delete is invalid
* `Member`
* `groupAvatar`
### Links
`meta_path->groupDnaMeta`
`members_path->Member`
## Clone Group DNA
```mermaid
sequenceDiagram
participant AUI as Alice_UI
participant AC as Alice_Conductor
participant ALC as Alice_Lobby_Cell
participant AGDNA as Alice_Group_Cell
AUI-->>AUI: generate random passphrase
AUI-->>AC: registerDna with passphrase as uID
Note over AUI: Probably better for the passphrase to be used as membrane proof as well
AUI-->>AC: install Happ with the newly registered DNA
AC-->>AGDNA: install
AUI-->>AC: enableApp
AUI-->>AGDNA: create_group_meta
AGDNA-->>AUI: groupDnaMeta
```
## create_group_meta
```mermaid
sequenceDiagram
participant AUI as Alice_UI
participant AGDNA as Alice_Group_Cell
AUI-->>AGDNA: call create_group_meta
AGDNA-->>AGDNA: create meta_path
AGDNA-->>AGDNA: create group_dna_meta
AGDNA-->>AGDNA: create link from meta_path to group_dna_meta
AGDNA-->>AUI: return groupDnaMeta
```
## get_group_meta
## join_group_dna
## leave_group_dna
## remove_member
## update_group_name
## update_group_picture