---
title: Resolve a manual class key (rate lookup)
summary: `clsManualClassBase.GetManualClassBaseKey(inDataportal, inPeriodRatingInfo, inClassEffectiveDate, ByRef inoutManualClassNumberAndUsageCode, ByRef outRateFileSeqNum)` (`clsManualClassBase.vb:1225-1268`)
status: draft
owner: Technical Writer
last_reviewed: 2026-07-31
library: SAIF.Business.Policy.Rating
reference_type: package
operation_id: OP-004
trigger: A class number must be resolved to the rate file and (possibly replaced) class number that actually applies
---

# Resolve a manual class key (rate lookup)

`clsManualClassBase.GetManualClassBaseKey(inDataportal, inPeriodRatingInfo, inClassEffectiveDate, ByRef inoutManualClassNumberAndUsageCode, ByRef outRateFileSeqNum)` (`clsManualClassBase.vb:1225-1268`)

| Field | Value |
| --- | --- |
| **Operation ID** | OP-004 |
| **Trigger** | A class number must be resolved to the rate file and (possibly replaced) class number that actually applies |
| **Inputs** | Class number/usage code (in-out), class effective date, period rating info |
| **Outputs** | Updated class number/usage code and rate file sequence number (both `ByRef`) |
| **Primary components** | ``clsManualClassBase.GetManualClassBaseKey(inDataportal, inPeriodRatingInfo, inClassEffectiveDate, ByRef inoutManualClassNumberAndUsageCode, ByRef outRateFileSeqNum)` (`clsManualClassBase.vb:1225-1268`)` |
| **Entry point** | `Business\SAIF.Business.Policy.Rating\clsManualClassBase.vb` |

## Steps

1. Create a new portal request and data request; set
2. Convert `inPeriodRatingInfo.IsARDExtended` to a `"Y"`/`"N"` string via `.ToY_N_String`.
3. Add the parameters: `io_class_num` (6, InputOutput), `in_class_eff_date`, `in_ard`
4. `inDataportal.ProcessPortalRequest(PortalRequest)`.
5. If `io_rate_file_seq` is not `DBNull`, assign it to `outRateFileSeqNum` ([BR-013](../business-rules.md#br-013-the-rate-file-sequence-number-returned-by-the-rate-retrieval-procedure-is-applied-only-when-it-is-not-dbnull)).
6. If `io_class_num` is not `DBNull`, assign it back to `inoutManualClassNumberAndUsageCode` — this
7. Use the related data-access statements and tables for this operation: [SQL-019](../sql/SQL-019-saif-business-policy-rating.md), [RATE_FILE_MASTER](../database-tables.md#rate_file_master), [MANUAL_CLASS_BASE](../database-tables.md#manual_class_base).

## Process flow

The following diagram visualizes this operation's control flow.

```mermaid
flowchart TD
  Start([Trigger: resolve rate file and class number that applies]) --> S1[Create portal request and data request]
  S1 --> S2[Convert IsARDExtended to Y/N string via ToY_N_String]
  S2 --> S3[Add parameters: io_class_num InputOutput, in_class_eff_date, in_ard]
  S3 --> S4[ProcessPortalRequest]
  S4 --> D1{io_rate_file_seq not DBNull?}
  D1 -->|Yes| S5[Assign to outRateFileSeqNum - BR-013]
  D1 -->|No| S6[Leave outRateFileSeqNum unset]
  S5 --> D2{io_class_num not DBNull?}
  S6 --> D2
  D2 -->|Yes| S7[Assign back to inoutManualClassNumberAndUsageCode - class substituted]
  D2 -->|No| S8[Leave class number unchanged]
  S7 --> Done([Resolved rate file and class number])
  S8 --> Done
```

## Failure and edge-case behavior
- Review the linked business rules and SQL documents for the validation or data-access conditions that can block this operation.

## Related documentation
- [Operations and processes](../operations-processes.md)
- [Business rules](../business-rules.md)
- [SQL catalog](../sql/index.md)
- [Database tables](../database-tables.md)

> **Note:** Statements marked with * were inferred from code structure, naming conventions, or
> contextual evidence where direct confirmation was not available in source artifacts. Statements
> marked with ** could not be confirmed; treat as unknown until verified.

## Sources
- `Business\SAIF.Business.Policy.Rating\clsManualClassBase.vb`
