# Migration Mapping

> Create a mapping from source language files to target language files for code migrations.

Create a mapping from source language files to target language files for code migrations. Use when evaluating or documenting a migration project.

- Page: https://ss33.ai/skills/openhands/migration-mapping-91555259290
- Publisher: openhands
- Category: [Software Development](https://ss33.ai/skills/category/software-development-t44z8z) › [Languages & frameworks](https://ss33.ai/skills/category/software-development-t44z8z/languages-and-frameworks-rgvrso)
- License: MIT
- Source: https://github.com/openhands/extensions/blob/cc7d059f3b0cdb1f1d83e41d25f06e76887e905b/plugins/migration-scoring/skills/migration-mapping/SKILL.md

## Skill

SKILL.md: https://ss33.ai/api/v1/ss33/download/openhands/migration-mapping-91555259290

Create a mapping from source language files (e.g., COBOL) to target language files (e.g., Java) to document which target files implement the functionality of each source file.

## Task

Examine all source language files and identify the corresponding target language files that implement the same functionality. This mapping is essential for:
- Migration quality evaluation
- Traceability documentation
- Gap analysis

## Output Format

Save the mapping as a JSON file with this structure:

```json
{
  "source_file_1.cbl": ["target_file_a.java", "target_file_b.java"],
  "source_file_2.cbl": ["target_file_c.java"],
  "source_file_3.cbl": []
}
```

## Rules

1. **Many-to-many mapping**: A source file may map to multiple target files, and a target file may implement logic from multiple source files
2. **Complete coverage**: EVERY source file must appear as a key in the mapping
3. **Complete target coverage**: EVERY target file should appear as a value at least once
4. **Empty arrays**: If a source file has no corresponding target implementation, use an empty array `[]`
5. **Incremental**: If a mapping file already exists, update it rather than replacing it

## How to Identify Mappings

Look for:
- Matching class/program names
- Similar function/paragraph names
- Matching business logic patterns
- Comments referencing source files
- Import/include statements
- Data structure similarities

## Example

For a COBOL-to-Java migration:

```json
{
  "CALC001.cbl": ["InvoiceCalculator.java", "TaxCalculator.java"],
  "CUST002.cbl": ["CustomerService.java", "CustomerRepository.java"],
  "UTIL003.cbl": ["StringUtils.java"],
  "SCREEN001.cbl": []
}
```

Note: `SCREEN001.cbl` maps to nothing because UI code was not migrated.

## Verification

After creating the mapping:
- [ ] Every source file is a key
- [ ] No duplicate keys
- [ ] Target files are relative paths from project root
- [ ] JSON is valid and well-formatted
