> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devmob.app.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Organization Onboarding

> Fluxo de criação de organização: extensão por tipo, role admin de ambiente e Invite do owner.

## Overview

A criação de uma organização prepara a estrutura inicial da operação. Dependendo do `OrganizationType`, o resultado inclui a extensão necessária, uma role admin de ambiente compatível com o tipo da organização e o Invite do owner.

<Info>
  O onboarding **não cadastra o User do owner**. O owner só passa a existir na conta quando aceita o Invite — veja [Invitation Flow](/domain/tenant/invitation-flow).
</Info>

## Cascade Flow

```mermaid theme={null}
flowchart TD
    START[BackOffice cria Organization] --> DOC[Documento único]
    DOC --> LOGO[Logo confirmado<br/>se informado]
    LOGO --> ORG[Organization pronta]
    ORG --> EXT{OrganizationType?}
    EXT -->|COOPERATIVE| COOP[Cooperative vinculada]
    EXT -->|COMPANY| SELECT_COOP[Cooperative ativa selecionada]
    SELECT_COOP --> C[Company vinculada<br/>com cooperativeId]
    COOP --> ADDR[Endereço vinculado<br/>se informado]
    C --> ADDR[Endereço vinculado<br/>se informado]
    ADDR --> ROLE[Role Admin ENVIRONMENT disponível]
    ROLE --> INVITE[Invite MEMBER do owner]
    INVITE --> EVENT[invite.created]
```

## Habilitações por tipo

A Organization habilita **Cooperative** ou **Company** conforme o `type`:

| Tipo          | Cooperative | Company | Requisito adicional                      |
| ------------- | :---------: | :-----: | ---------------------------------------- |
| `COOPERATIVE` |     Sim     |    —    | Nenhum                                   |
| `COMPANY`     |      —      |   Sim   | `cooperativeId` de uma Cooperative ativa |

O `address` é opcional na criação e gera um `OrganizationAddress` quando informado.

Para `type=COMPANY`, a criação também define a afiliação administrativa da empresa. O `cooperativeId` informado deve apontar para uma [Cooperative](/data-modelling/tenant/cooperative) existente, ativa e não removida.

## Admin Setup

Após a Organization e suas habilitações:

1. **Role Admin** — Uma Role `ENVIRONMENT` com o conjunto de permissions padrão compatível com o tipo da organização.
2. **Invite do owner** — Um Invite `type=MEMBER` é emitido para o telefone/email do owner, com a Role Admin. No aceite, o owner define sua senha e recebe a Membership `ACTIVE` na nova organização; o Profile passa a derivar `access:ops`.

<Info>
  O owner é o primeiro membro e recebe a Role Admin no escopo da nova organização. Ele pode então convidar outros membros com roles `ENVIRONMENT` ou roles customizadas da própria organização.
</Info>

## Validações

| Validação                                        | Erro                                   |
| ------------------------------------------------ | -------------------------------------- |
| Documento (CNPJ) único                           | `organization.document_already_exists` |
| `cooperativeId` obrigatório para `type=COMPANY`  | `organization.cooperative_required`    |
| `cooperativeId` inexistente, inativo ou removido | `organization.cooperative_not_found`   |
