管理訴訟保留

為遵循法規或履行保存義務,訴訟保留能無限期保留資料。一般而言,系統會對一或多名使用者套用訴訟保留,以免與案件相關的資料在案件停止運作前遭到刪除。

如果處於訴訟保留狀態的使用者刪除訴訟保留資料,該項資料會從使用者的檢視畫面中移除,但仍會保存在保管箱中。只要訴訟保留仍然有效,保管箱管理員就能搜尋及匯出這些資料。

訴訟保留包含下列元件:

  • 服務:負責保留資料的應用程式。服務可設為郵件、雲端硬碟或網路論壇。
  • 範圍 - 訴訟保留涵蓋的實體。範圍可設為一或多個使用者帳戶或機構單位 (OU)。
  • 其他選項 (選用):用於縮小定義範圍內資料範圍的特定詳細資料 (搜尋查詢或設定選項)。選項包括:
    • 郵件, 網路論壇:搜尋查詢以縮小訴訟保留範圍
    • 雲端硬碟:將共用雲端硬碟納入訴訟保留狀態

如要使用保管箱資源,帳戶必須具備必要的保管箱權限和案件存取權。如要存取案件,帳戶必須建立案件、與案件共用案件,或是擁有「查看所有案件」權限。

透過搜尋查詢為特定使用者帳戶中的郵件建立訴訟保留

以下範例說明為「我的第一筆郵件帳戶訴訟保留」建立訴訟保留的方式:

  • 服務:郵件
  • 實體:使用者帳戶「user1」和「user2」
  • 其他選項:搜尋查詢「to:ceo@company.com」

AdminSdk 擷取使用者帳戶 ID。請注意,HeldAccount 可加入帳戶 ID 或電子郵件。如果兩者皆指定,系統會使用電子郵件,忽略帳戶 ID。

Java

HeldMailQuery mailQuery = new HeldMailQuery().setTerms("to:ceo@company.com");
List accounts = Lists.newArrayList();
accounts.add(new HeldAccount().setAccountId(user1accountId));
accounts.add(new HeldAccount().setEmail(user2Email));
Hold hold = new Hold()
    .setName("My First mail Accounts Hold")
    .setCorpus("MAIL");
    .setQuery(new CorpusQuery().setMailQuery(mailQuery))
    .setAccounts(accounts);
Hold createdHold = client.matters().holds().create(matterId, hold).execute();
  

Python

def create_hold_mail_accounts(service, matter_id, account_id):
    mail_query = {'terms': 'to:ceo@company.com'}
    accounts = [
        {'accountId': user1_account_id},
        {'email': user2_email}
    ]
    wanted_hold = {
        'name': 'My First mail Accounts Hold',
        'corpus': 'MAIL',
        'query': {
            'mailQuery': mail_query
        },
        'accounts': accounts
    }
    return service.matters().holds().create(
        matterId=matter_id, body=wanted_hold).execute()

建立機構單位的雲端硬碟訴訟保留作業,並在其中加入共用雲端硬碟內容

以下範例說明為「我的第一個雲端硬碟機構單位訴訟保留」建立訴訟保留:

  • 服務:雲端硬碟
  • 實體:機構單位「財經」(機構單位 ID 已擷取機構單位 ID)
  • 其他選項:包括這個機構單位中的使用者所屬的共用雲端硬碟

AdminSdk 擷取機構單位 ID。

Java

HeldOrgUnit orgUnit = new HeldOrgUnit().setOrgUnitId(orgUnitId);
// Include shared drives content.
HeldDriveQuery driveQuery = new HeldDriveQuery().setIncludeSharedDriveFiles(true);
// Create the hold.
Hold hold = new Hold()
    .setName("My First Drive OU Hold")
    .setCorpus("DRIVE")
    .setQuery(new CorpusQuery().setDriveQuery(driveQuery))
    .setOrgUnit(orgUnit);
Hold createdHold = client.matters().holds().create(matterId, hold).execute();
return createdHold;

Python

def create_hold_drive_org(service, matter_id, org_unit_id):
    drive_query = {'includeSharedDriveFiles': True}
    org_unit = {'orgUnitId': org_unit_id}
    wanted_hold = {
        'name': 'My First Drive OU Hold',
        'corpus': 'DRIVE',
        'orgUnit': org_unit,
        'query': {
            'driveQuery': drive_query
        }
    }
    return service.matters().holds().create(
        matterId=matter_id, body=wanted_hold).execute()

為特定群組帳戶的群組建立訴訟保留,並設定日期範圍

以下範例說明為「我的第一個群組訴訟保留」建立訴訟保留的方式:

  • 服務:網路論壇
  • 實體:群組帳戶「group1」和「group2」
  • 其他選項:僅保留傳送日期介於「startTime」和「endTime」之間的訊息

AdminSdk 擷取群組帳戶 ID。

Java

String APRIL_2_2017_GMT = "2017-04-02T00:00:00Z"; // See below for format*.
 
List accounts = Lists.newArrayList();
accounts.add(new HeldAccount().setAccountId(accountId));
accounts.add(new HeldAccount().setAccountId(accountId2));
HeldGroupsQuery groupQuery = new HeldGroupsQuery();
// Restrict by sent date.
groupQuery.setStartTime(APRIL_2_2017_GMT);
groupQuery.setEndTime(APRIL_2_2017_GMT);
// create the hold
Hold hold = new Hold()
    .setName("My First Group Hold")
    .setCorpus("GROUPS")
    .setQuery(new CorpusQuery().setGroupsQuery(groupQuery));
    hold.setAccounts(accounts);
Hold createdHold = client.matters().holds().create(matterId, hold).execute();
 

Python

def create_hold_groups_date_range(service, matter_id, group_account_id):
    groups_query = {
        'startTime': '2017-04-02T00:00:00Z', # See below for format*
        'endTime': '2017-04-02T00:00:00Z'
    }
    accounts = [{'accountId': group_account_id}]
    wanted_hold = {
        'name': 'My First Group Hold',
        'corpus': 'GROUPS',
        'query': {
            'groupsQuery': groups_query
        },
        'accounts': accounts
    }
    return service.matters().holds().create(
        matterId=matter_id, body=wanted_hold).execute()
 
  • 時間戳記格式。此外,開始/結束時間會轉換為格林威治標準時間 (GMT),並四捨五入至指定日期的開始時間。

查詢及修改現有的訴訟保留

以下範例說明如何列出現有訴訟保留中的所有帳戶:

Java

client.matters().holds().accounts().list(matterId, holdId).execute().getAccounts();

Python

# If no accounts are on hold, ['accounts'] will raise an error.
def list_held_accounts(service, matter_id, hold_id):
    return service.matters().holds().accounts().list(
        matterId=matter_id, holdId=hold_id).execute()['accounts'] 

以下範例說明如何在現有訴訟保留中新增及移除帳戶:

Java

// Add an account by id.
client
        .matters()
        .holds()
        .accounts()
        .create(matterId, holdId, new HeldAccount().setAccountId(accountId))
        .execute();
// Remove an account by id.
client.matters().holds().accounts().delete(matterId, holdId, accountId).execute();

String email = "email@email.com";
// Add an account by email.
client
        .matters()
        .holds()
        .accounts()
        .create(matterId, holdId, new HeldAccount().setEmail(email))
        .execute();

Python

 
def add_held_account(service, matter_id, hold_id, account_id):
    held_account = {'accountId': account_id}
    return service.matters().holds().accounts().create(
        matterId=matter_id, holdId=hold_id, body=held_account).execute()

def remove_held_account(service, matter_id, hold_id, account_id):
    return service.matters().holds().accounts().delete(
        matterId=matter_id, holdId=hold_id, accountId=account_id).execute()

def add_held_account(service, matter_id, hold_id, email):
    held_account = {'email': email}
    return service.matters().holds().accounts().create(
        matterId=matter_id, holdId=hold_id, body=held_account).execute()
 

以下範例說明如何在現有機構單位訴訟保留中修改機構單位:

Java

Hold hold = client.matters().holds().get(matterId, holdId).execute();
hold.getOrgUnit().setOrgUnitId(newOrgUnitId);
Hold modifiedHold = client.matters().holds().update(matterId, holdId, hold).execute();
return modifiedHold;
 

Python

def update_hold_ou(service, matter_id, hold_id, org_unit_id):
    current_hold = get_hold(matter_id, hold_id)
    current_hold['orgUnit'] = {'orgUnitId': org_unit_id}
    return service.matters().holds().update(
        matterId=matter_id, holdId=hold_id, body=current_hold).execute() 

以下範例說明如何列出案件的所有訴訟保留:

Java

 
String matterId = "Matter Id";

// List all holds. List holdsList = client.matters().holds().list(matterId).execute().getHolds();

// Paginate on holds. ListHoldsResponse response = client .matters() .holds() .list(matterId) .setPageSize(10) .execute();

String nextPageToken = response.getNextPageToken(); if (nextPageToken != null) { client .matters() .holds() .list(matterId) .setPageSize(10) .setPageToken(nextPageToken) .execute(); }

Python

# This can paginate in the same manner as with matters.
def list_holds(service, matter_id):
    return service.matters().holds().list(matterId=matter_id).execute()