# ReactivateContactPerson

## Permission Scope

contactPerson

## Overview

reactivateContactPerson transitions a contact person from INACTIVE back to ACTIVE status, restoring the contact person as a valid point of contact for the organization. Only contact persons in INACTIVE status can be reactivated. Reactivation does not restore a previous primary designation.

## Business Rules

- Contact person must exist in the system
- Contact person must be in INACTIVE status
- Reactivation does not automatically restore primary designation

## Process Flow

```mermaid
flowchart TD
    A[Receive reactivate request] --> B{Contact person exists?}
    B -->|No| C[Return error: contact person not found]
    B -->|Yes| D{Status is INACTIVE?}
    D -->|No| E[Return error: invalid state transition]
    D -->|Yes| F[Update status to ACTIVE]
    F --> G[Return reactivated contact person]
```

## External Dependencies

- None

## Error Scenarios

- **CONTACT_PERSON_NOT_FOUND**: Specified contact person ID does not exist
- **INVALID_STATE_TRANSITION**: Requested state transition is not allowed from the current status

## Test Cases

- reactivates an inactive contact person
- returns error when contact not found
- returns error when contact is already active
