# Eo / Web / Webview / Kkw00804sf

## Overview

This module handles **My Homepage Information Registration** (`Myホームページ情報登録`) within the K-Opticom contract management system. It allows operators to register a customer's My Homepage (a personalized web page service) by specifying a homepage URL (domain + account), selecting a homepage capacity tier, and choosing an access analysis option. The module orchestrates a multi-step screen flow: initial display with pre-filled data from service contracts, a confirmation screen, and a completion screen — ultimately triggering backend services for option contract registration, SOD (order) issuance, and progress information updates.

This module lives in the `eo.web.webview` package and follows the X31/X33 web framework pattern, using DataBeans for data binding, a Logic class for business orchestration, and a Checker class for GUI validation hooks.

---

## Module Architecture

```mermaid
flowchart TD
    A["KKW00804SFLogic<br/>(Business Logic)"] --> B["KKW00804SFBean<br/>(Main Data Bean)"]
    A --> C["KKW00804SF01DBean<br/>(Pulldown Data Bean)"]
    A --> D["KKW00804SF02DBean<br/>(Contract Sub-bean)"]
    A --> E["KKW00804SFChecker<br/>(GUI Validation)"]
    A --> F["KKW00804SFConst<br/>(Constants)"]
    B --> C
    B --> D
    A --> G["KKSV0005 Mapper<br/>(Initial Display SC)"]
    A --> H["KKSV0006 Mapper<br/>(Registration SC)"]
    G --> I["Option Service Contract SC"]
    G --> J["Homepage Capacity SC"]
    G --> K["Access Analysis SC"]
    H --> L["Application Acceptance SC"]
    H --> M["Option Contract Register SC"]
    H --> N["SOD Issuance CC"]
```

---

## Key Classes and Interfaces

### [KKW00804SFLogic](source/koptWebB/src/eo/web/webview/KKW00804SF/KKW00804SFLogic.java)

**Role:** The central business logic class for My Homepage information registration. It extends `JCCWebBusinessLogic` and orchestrates the entire screen flow — from initial data display through registration confirmation to completion.

**Key Methods:**

- **`actionInit()`** — Entry point for the initial display screen. Retrieves screen info from the inheritance chain, fetches the customer contract list, calls `executeInitSvc()` to populate homepage capacity and access analysis data from the backend, then calls `setInitBean()` to set default values. Returns `true` on success.

- **`actionAddMyHPInfo()`** — Handles the "Register Confirmation" button press. Calls `setHPInfoBean()` to prepare registration data (resolving selected capacity codes, constructing URLs, calculating billing dates), then invokes `executeAddCfmSvc()` with function code `FUNC_CD_2` (registration). Displays a confirmation message and navigates to screen `KKW00805`.

- **`actionFixMyHPInfo()`** — Handles the "Confirm" (確定) button on the confirmation screen. Calls `executeAddCfmSvc()` with function code `FUNC_CD_1` (execution), which performs the actual backend registration. Navigates to screen `KKW00806` (completion screen).

- **`actionBack()`** — Handles the "Back" button, navigating to the option selection screen (`KKW00837`).

- **`actionShusei()`** — Handles the "Edit" button on the confirmation screen, navigating back to the registration screen (`KKW00804`).

- **`actionFin()`** — Handles the "Finish" button on the completion screen, navigating back to the option service contract list (`KKW02301`).

**Private orchestration methods:**

- **`executeInitSvc(X31SDataBeanAccess[] paramBean)`** — The core initialization service. Uses `KKSV0005_KKSV0005OPDBMapper` to call seven sub-service-components:
  1. Option service contract list (`setKKSV000504SC`)
  2. Option service contract <ISP> agreement (`setKKSV000501SC`)
  3. Homepage capacity info (`setKKSV000502SC`)
  4. Access analysis info (`setKKSV000503SC`)
  5. Business parameter management (`setKKSV000505SC`)
  6. Customer agreement (`setKKSV000506SC`)
  7. Service contract agreement (`setKKSV000507SC`)
  8. Service fee code / sub-option service list (`setKKSV000508SC`)
  
  After `invokeService()`, it maps outputs back to DataBeans and initializes pulldown lists for homepage capacity and access analysis using `JKKWebCommon.setPulldownListNoIndex()`.

- **`executeAddCfmSvc(X31SDataBeanAccess[] paramBean, String func_code)`** — The registration confirmation service. Uses `KKSV0006_KKSV0006OPDBMapper` with the usecase ID `KKSV0006`. Invokes 16+ service components including application acceptance registration, option contract change/register/agreement, sub-option contract registration, SOD issuance (`setJKKHakkoSODCC`), progress registration (`setKKSV000610SC`), and progress agreement (`setKKSV000616SC`). When the function code is `FUNC_CD_2` and the divergence division indicates new contract or service addition, it copies the divergence timestamp from progress results.

- **`setInitBean(X31SDataBeanAccess[] paramBean)`** — Sets initial/default values on the main DataBean: initializes pulldown indices for homepage capacity and access analysis lists, sets a default domain from business parameters if not already provided, and pre-fills the start date fields (year/month/day) from the current operation date.

- **`setHPInfoBean(X31SDataBeanAccess[] paramBean)`** — The most complex setup method. Called before the confirmation screen to prepare all registration parameters:
  - Resolves the selected homepage capacity from the pulldown index into a capacity code and name
  - Sets access analysis name (fixed to "0: None")
  - Constructs the My Homepage URL from domain + account
  - Determines submission type (new vs. option) based on `IDO_DIV` divergence code
  - Sets progress state: `5102` (option setting complete) if start date equals operation date; otherwise `5101` (option application pending)
  - Sets the progress special item to "My Homepage Information Registration"
  - Calculates additional capacity when a non-minimum tier is selected (selected capacity minus minimum capacity)
  - Sets billing codes, order types, and service fee codes for both main and sub-option services
  - Configures the service charge start date as the first day of the month after the start date
  - Sets divergence timestamp using system date

- **`setHktgiBean(X31SDataBeanAccess[] paramBean)`** — Extracts data from the customer contract inheritance list: SYSID, service contract number, and divergence division code. Sets the sub-option service code to `SBOP_SVC_CD_HP` (homepage capacity).

**Constants defined:**

The Logic class embeds numerous domain constants as `private static final` fields, including option service codes (`OP_SVC_CD_MYHP = "0020"`), submission types (new: `"00001"`, option: `"00026"`), divergence codes, progress states, pricing codes, order codes, and service codes. These are imported from `JKKCommonConst` where defined centrally.

---

### [KKW00804SFBean](source/koptWebB/src/eo/web/webview/KKW00804SF/KKW00804SFBean.java)

**Role:** The main DataBean for the My Homepage registration screen. It extends `X33VViewBaseBean` and implements both `X33VListedBeanInterface` and `X31CBaseBean`, providing data binding for all form fields on the registration screen.

**Property groups (each with `_update`, `_value`, `_enabled`, `_state` pattern):**

The bean organizes properties into logical groups using a naming convention where each field has:
- `<field>_value` — The displayed/data value
- `<field>_update` — Change flag
- `<field>_enabled` — Whether the field is editable
- `<field>_state` — Display/edit state code

**Homepage information fields:**

| Property | Description |
|---|---|
| `hpad_domain` | Homepage URL domain |
| `hpad_account` | Homepage URL account path |
| `hp_capa_value` | Selected homepage capacity code |
| `hp_capa_nm` | Selected capacity name |
| `hp_capa_info_list` | Pulldown list of available capacity options |
| `web_id` | WEB ID |
| `accss_bnsk_value` | Access analysis code |
| `accss_bnsk_nm` | Access analysis name |
| `accss_bnsk_info_list` | Pulldown list for access analysis |
| `use_staymd_year` / `use_staymd_mon` / `use_staymd_day` | Service start date (broken into year, month, day) |
| `use_staymd` | Combined start date string |

**Contract/processing fields:**

| Property | Description |
|---|---|
| `sysid` | Customer SYSID |
| `svc_kei_no` | Service contract number |
| `ido_div` | Divergence division code |
| `cust_stat` | Customer status |
| `svc_kei_stat_uke` | Service contract status (received) |
| `svc_kei_stat` | Service contract status |
| `mskm_dtl_no` | Application detail number |
| `op_svc_kei_stat` | Option service contract status |
| `op_svc_kei_no` | Option service contract number |

**Derived/computed fields:**

| Property | Description |
|---|---|
| `aging_url` | Full URL (domain + account) |
| `aging_sbt_cd` | Engineering type code (URL) |
| `unyo_ymd` | Operation date |
| `unyo_dtm` | Operation date with timestamp |
| `add_capa` | Additional capacity (selected - minimum) |
| `prg_stat` | Progress state code |
| `prg_tkjk_1` | Progress special item 1 |
| `svc_chrg_staymd` | Service charge start date |
| `ido_dtm` | Divergence timestamp |
| `rule0059_auto_aply` | Automatic service charge application flag |

**List-type properties:**

- `hp_capa_info_list` / `accss_bnsk_info_list` — `X33VDataTypeList` for pulldown menus, populated during initialization
- `jsflist_typelist_hp_capa_info` / `jsflist_typelist_accss_bnsk_info` — `ArrayList<SelectItem>` for JSF dropdown rendering

The bean's constructor (around line 229) initializes these list types. Getter/setter methods follow the standard `_update` / `_value` / `_enabled` / `_state` four-field pattern for each field.

---

### [KKW00804SF01DBean](source/koptWebB/src/eo/web/webview/KKW00804SF/KKW00804SF01DBean.java)

**Role:** A DataBean for list items in pulldown menus on the registration screen (used for homepage capacity and access analysis selections). It implements `X33VDataTypeBeanInterface` and `X33VListedBeanInterface`, meaning it is used as an element within DataBean arrays/lists that drive JSF table or select components.

**Properties:**

| Property | Type | Description |
|---|---|---|
| `index` | `String` / `int` | Row index within the list |
| `cd_div_list_list` | `X33VDataTypeList` | Code list values |
| `cd_div_nm_list_list` | `X33VDataTypeList` | Code list labels |
| `nm_list_list` | `X33VDataTypeList` | Name list values |

**Key methods:**

- **`loadModelData(String key, String subkey)`** — Retrieves data from the model by field name and sub-key. Used to populate this bean instance from the data layer.
- **`storeModelData(...)`** — Multiple overloads for setting data in the model. The most complex overload (`storeModelData(key, subkey, value, isSetAsString)`) handles type coercion between String and typed values.
- **`listKoumokuIds()`** — Returns the list of field names defined on this bean, for serialization/model introspection.
- **`typeModelData(String key, String subkey)`** — Returns the Java `Class<?>` for a given field, enabling type-safe data access.
- **`addListDataInstance(String key)`** — Creates a new element in a list data structure. Returns the index of the newly added element.
- **`removeElementFromListData(String key, int index)`** / **`clearListDataInstance(String key)`** — List manipulation methods.

---

### [KKW00804SF02DBean](source/koptWebB/src/eo/web/webview/KKW00804SF/KKW00804SF02DBean.java)

**Role:** A DataBean for customer contract inheritance list items. It stores the SYSID, service contract number, divergence division, divergence reason, and divergence memo for each contract in the customer's contract history.

**Properties:**

| Property | Type | Description |
|---|---|---|
| `sysid` | `String` | Customer SYSID |
| `svc_kei_no` | `String` | Service contract number |
| `ido_div` | `String` | Divergence division code |
| `ido_rsn_cd_list` | `X33VDataTypeList` | Divergence reason code list |
| `ido_rsn_memo` | `String` | Divergence reason memo |
| `index` | `int` | Row index |

This bean follows the same `X33VDataTypeBeanInterface` pattern as `KKW00804SF01DBean`, with `loadModelData`, `storeModelData`, `typeModelData`, `listKoumokuIds`, and list manipulation methods.

---

### [KKW00804SFChecker](source/koptWebB/src/eo/web/webview/KKW00804SF/KKW00804SFChecker.java)

**Role:** A GUI validation class implementing `X31SGuiCheckBase`. It receives a reference to the `KKW00804SFLogic` class and is invoked by the X31 framework during GUI validation phases.

**Implementation:** The `checkMethod(X31SGuiCheckParam param, X31GUtilStockMessage errMsgStock)` method currently receives the pattern ID from the framework but always returns `true`, indicating all checks pass. This suggests that field-level validation is handled either by the X31 framework's built-in validators (declared in XML configuration) or by the business logic in `executeAddCfmSvc()` rather than by custom GUI-level checks.

**Constructor:** Takes an `X31BBusinessLogic` reference (which will be the `KKW00804SFLogic` instance) and stores it for potential use during validation.

---

### [KKW00804SFConst](source/koptWebB/src/eo/web/webview/KKW00804SF/KKW00804SFConst.java)

**Role:** A constants class containing all field name strings used for DataBean communication. Instead of using magic strings scattered through the Logic class, this class centralizes field identifiers like `HPAD_DOMAIN`, `HP_CAPA_VALUE`, `USE_STAYMD`, `PRG_STAT`, `IDO_DIV`, etc.

**Important constants:**

| Constant | Value | Purpose |
|---|---|---|
| `HPAD_DOMAIN` | "homepage domain" | Homepage URL domain field |
| `HPAD_ACCOUNT` | "homepage account" | Homepage URL account path |
| `HP_CAPA_VALUE` | "homepage capacity code" | Selected capacity code |
| `HP_CAPA_NM` | "homepage capacity name" | Selected capacity display name |
| `HP_CAPA_INFO` | "homepage capacity info" | Pulldown info list |
| `WEB_ID` | "WEB ID" | WEB identifier |
| `ACCSS_BNSK_VALUE` | "access analysis code" | Access analysis selection code |
| `ACCSS_BNSK_NM` | "access analysis name" | Access analysis display name |
| `ACCSS_BNSK_INFO` | "access analysis info" | Pulldown info list |
| `USE_STAYMD` | "service start date" | Combined start date |
| `SYSID` | "SYSID" | Customer SYSID |
| `SVC_KEI_NO` | "service contract number" | Contract number |
| `IDO_DIV` | "diversion division" | New vs. option divergence |
| `PRG_STAT` | "progress status" | Processing state code |
| `PRG_TKJK_1` | "progress special item 1" | Special progress flag |
| `ORDER_SBT_CD` | "order type code" | Order classification |
| `YOKYU_SBT_CD_URL` | "request type code (URL)" | URL request type |
| `ODR_NAIYO_CD_URL` | "order content code (URL)" | Order content for URL |
| `ODR_NAIYO_CD_CAPA` | "order content code (capacity)" | Order content for capacity |
| `ADD_CAPA` | "additional capacity" | Extra capacity beyond minimum |
| `CUST_KEI_HKTGI_LIST` | "customer contract inheritance list" | Contract history list |

---

## How It Works

### Screen Flow

The module drives a 3-screen user flow:

1. **Registration Screen (KKW00804)** — `actionInit()` is called to display the My Homepage registration form.
2. **Confirmation Screen (KKW00805)** — Triggered by `actionAddMyHPInfo()` after the user enters data and clicks "Register Confirmation."
3. **Completion Screen (KKW00806)** — Triggered by `actionFixMyHPInfo()` after the user clicks "Confirm" on the confirmation screen.

Navigation back from the confirmation screen returns to the option selection screen (KKW00837), and the completion screen returns to the option service contract list (KKW02301).

### Detailed Flow: Initial Display

1. `actionInit()` is called by the X31 framework as the screen entry point.
2. Screen info is retrieved from the inheritance chain via `JCCWebCommon.getScreenInfo()`.
3. The service form bean is obtained and passed to `setHktgiBean()` to extract the customer's SYSID, service contract number, and divergence division from the contract inheritance list.
4. `executeInitSvc()` is invoked:
   - The option service code is set to `0020` (My Homepage).
   - The usecase ID `KKSV0005` is set for the service invocation.
   - Seven service components are mapped to input parameters via `KKSV0005_KKSV0005OPDBMapper`:
     - `setKKSV000504SC` — Option service contract list
     - `setKKSV000501SC` — Option service contract <ISP> agreement
     - `setKKSV000502SC` — Homepage capacity info
     - `setKKSV000503SC` — Access analysis info
     - `setKKSV000505SC` — Business parameter management
     - `setKKSV000506SC` — Customer agreement
     - `setKKSV000507SC` — Service contract agreement
     - `setKKSV000508SC` — Service fee code / sub-option list
   - `invokeService()` sends all data to the EJB tier.
   - Results are unmapped back to DataBeans via corresponding `getKKSV0005xxSC()` calls.
   - Pulldown lists for homepage capacity and access analysis are built using `JKKWebCommon.setPulldownListNoIndex()`, incorporating min/max/zougen (increase) capacity values.
5. `setInitBean()` sets default values: pulldown indices, default domain, and initial start date from the current operation date.

### Detailed Flow: Registration Confirmation

1. `actionAddMyHPInfo()` is called when the user clicks "Register Confirmation."
2. `setHPInfoBean()` prepares all registration data:
   - Resolves the pulldown index to an actual capacity code and name.
   - Sets access analysis name to "0: None" (fixed).
   - Combines domain + account into the full URL (`aging_url`).
   - Determines submission type based on `IDO_DIV`: if the divergence code is `00031` (option setting), sets submission type to `00026` (option application); otherwise sets to `00001` (new application).
   - Sets progress state: `5102` (complete) if start date equals operation date, or `5101` (application pending) if they differ.
   - Sets the progress special item to "My Homepage Information Registration".
   - Calculates additional capacity when a tier above the minimum is selected.
   - Sets billing codes, pricing plan codes, order types, and request type codes.
3. The bean data is sent back to the Logic layer (for validation).
4. `executeAddCfmSvc()` is called with `func_code = FUNC_CD_2` (confirmation mode):
   - Uses usecase ID `KKSV0006`.
   - 16+ service components handle the registration: application acceptance, option contract changes/registration, sub-option registration, agreement, opening, engineering registration, progress registration, application detail agreement, and inquiry.
   - SOD (Service Order Document) issuance is triggered via `setJKKHakkoSODCC()`.
   - If divergence division is "new contract" or "service addition", the divergence timestamp is copied from progress results.
5. A confirmation message is displayed and navigation to screen `KKW00805` (confirmation screen) occurs.

### Detailed Flow: Final Registration

1. `actionFixMyHPInfo()` is called when the user clicks "Confirm" on the confirmation screen.
2. `executeAddCfmSvc()` is called again with `func_code = FUNC_CD_1` (execution mode), performing the actual backend registration.
3. A completion message is displayed and navigation to screen `KKW00806` (completion screen) occurs.

---

## Data Model

### Main Bean (`KKW00804SFBean`)

The main DataBean holds all screen-level data. Each field follows a four-property pattern:

- `<field>_value` — The current value displayed/set by the user
- `<field>_update` — A flag indicating whether the field was modified
- `<field>_enabled` — Whether the field is currently editable (Boolean)
- `<field>_state` — A string code controlling the field's visual state (e.g., edit vs. display)

The bean also holds two `X33VDataTypeList` properties (`hp_capa_info_list` and `accss_bnsk_info_list`) which are used as backing data for JSF dropdown/select components.

### Pulldown Bean (`KKW00804SF01DBean`)

Each row in a pulldown list is represented by a `KKW00804SF01DBean` instance. It contains:
- `index` — The row number
- `cd_div_list_list` — Code values for the pulldown
- `cd_div_nm_list_list` — Code display names
- `nm_list_list` — Associated name values

### Contract List Bean (`KKW00804SF02DBean`)

Each row in the customer contract inheritance list is a `KKW00804SF02DBean` instance containing:
- `sysid` — Customer identifier
- `svc_kei_no` — Service contract number
- `ido_div` — Divergence division code
- `ido_rsn_cd_list` — Divergence reason code list
- `ido_rsn_memo` — Divergence reason memo

---

## Dependencies and Integration

### Outbound Dependencies

This module depends on the following packages and classes:

| Dependency | Purpose |
|---|---|
| `eo.ejb.common.edit` | EJB editing interfaces |
| `eo.ejb.common` | Common EJB components |
| `eo.business.common` | Business logic utilities |
| `eo.business.service` | Service layer |
| `eo.common.util.JPCDateUtil` | Date manipulation utilities |
| `eo.common.constant.JPCModelConstant` | Model code constants (e.g., `FUNC_CD_1`, `FUNC_CD_2`) |
| `eo.common.constant.JPCOnlineMessageConstant` | Message code constants (e.g., `EKB0370__I`, `EKB4390__I`) |
| `eo.web.webview.JCCWebBusinessLogic` | Base business logic class |
| `eo.web.webview.common.JKKWebCommon` | Web utilities (e.g., `setPulldownListNoIndex()`) |
| `eo.web.webview.common.JKKCommonConst` | Shared constants (service codes, pricing codes, etc.) |
| `eo.web.webview.common.JKKScreenConst` | Screen ID/name constants |
| `eo.web.webview.CommonInfoCF.CommonInfoCFConst` | Cross-screen communication constants |
| `eo.web.webview.KKSV0005_KKSV0005OPDBMapper` | DB mapper for initial display service components |
| `eo.web.webview.KKSV0006_KKSV0006OPDBDBMapper` | DB mapper for registration service components |

### Cross-Module Relationships

- **`KKW00804SFBean`** is referenced by 3 XML configuration files:
  - `WEBGAMEN_KKW008040PJP.xml` — Initial display screen
  - `WEBGAMEN_KKW008050PJP.xml` — Confirmation screen
  - `WEBGAMEN_KKW008060PJP.xml` — Completion screen

- **`KKW00804SFLogic`** is referenced by 4 XML configuration files:
  - All 3 screen XML files above
  - `x31business_logic_KKW00804SF.xml` — Business logic configuration

### Inbound Dependencies

No other modules depend on `KKW00804SF` as a called service; this module is driven by screen-level XML configurations and called directly as part of the user's screen navigation flow.

---

## Notes for Developers

### Framework Conventions

- **Four-property field pattern**: Every field on the registration screen uses `_update`, `_value`, `_enabled`, and `_state` properties. This is the X33 view bean convention for managing field state and editability.
- **Function codes**: `FUNC_CD_1` means "execute" (actual processing), while `FUNC_CD_2` means "confirm" (validation/read-only mode). This pattern is used consistently across `executeAddCfmSvc()`.
- **Mapper pattern**: Service components are mapped via `KKSV0005` (initial display) and `KKSV0006` (registration) mapper classes. Input mapping uses `setKKSV0005xxSC()` / `setKKSV0006xxSC()` methods, and output mapping uses `getKKSV0005xxSC()` / `getKKSV0006xxSC()` methods.

### Screen Navigation

| Button | Target Screen | Method |
|---|---|---|
| Initial load | KKW00804 (registration) | `actionInit()` |
| Register Confirmation | KKW00805 (confirmation) | `actionAddMyHPInfo()` |
| Confirm | KKW00806 (completion) | `actionFixMyHPInfo()` |
| Back | KKW00837 (option selection) | `actionBack()` |
| Edit | KKW00804 (registration) | `actionShusei()` |
| Finish | KKW02301 (option list) | `actionFin()` |

### Divergence Division Codes

The `IDO_DIV` field determines whether this is a new contract or an option setting:
- `00001` — New contract (新規契約)
- `00002` — Service addition (サービス追加)
- `00031` — Option setting (オプション設定)

The divergence division affects submission type (`MSKM_SBT_CD`), progress state (`PRG_STAT`), and whether a divergence timestamp is populated.

### Capacity Calculation

When the user selects a homepage capacity tier:
- If the selected capacity exceeds the minimum (`SVCTK_BUT_MRYO_VALUE`), `ADD_CAPA` is calculated as `selected - minimum`.
- If the minimum tier (index 0) is selected, `ADD_CAPA` is set to "0".
- The min/max/zougen (increase) values from the backend are used to build the pulldown list via `JKKWebCommon.setPulldownListNoIndex()`.

### Date Handling

- The service start date is entered as three separate fields (year, month, day) and combined into a single string (`USE_STAYMD`) for submission.
- The service charge start date (`SVC_CHRG_STAYMD`) is calculated as the first day of the month following the start date, using `JPCDateUtil.addMonth()`.
- The divergence timestamp (`IDO_DTM`) is set using `JCCWebCommon.getSysDateTimeStamp()`.

### Validation

The `KKW00804SFChecker` class currently has a pass-through implementation (always returns `true`), meaning all GUI-level validation is handled by the X31 framework's declarative validators (configured in XML) and the backend service components invoked via the mappers. Do not assume custom validation logic exists in this class.

### Logging

All entry/exit points in `KKW00804SFLogic` include `JSYwebLog.println(JSYwebLog.DataBean_Dump, ...)` calls for debugging. These dump the full DataBean state and should be retained when modifying this module.

### Historical Changes

- **v1.00** (2011/03/30): Initial creation.
- **v3.00** (2012/03/15): Added initial display handling for date fields.
- **v4.00** (2012/10/16): Added support for progress supplement item compilation.
- **v4.01** (2013/01/11): Added system date settings for divergence year/month/day.
- **v4.02** (2013/01/28): Added SOD issuance support.
- **v5.00** (2013/06/18): Added support for divergence skew timestamp.
