-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[RCP-45] Legacy and Deprecated Data Elements #104
Draft
paulhethmon
wants to merge
2
commits into
RESOStandards:main
Choose a base branch
from
paulhethmon:rcp-45-legacy-deprecated-fields-lookups
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Changes from 1 commit
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,192 @@ | ||
# Legacy/Deprecated Fields and Lookups | ||
|
||
| **RCP** | 045 | | ||
| :--- | :--- | | ||
| **Version** | **1.0.0** | | ||
| **Authors** | Paul Hethmon ([AMP Systems](mailto:[email protected])) | | ||
| **Specification** | | | ||
| **Status** | IN PROGRESS | | ||
| **Date Ratified** | | | ||
| **Dependencies** | Data Dictionary 1.7+ | | ||
| **Related Links** | | | ||
|
||
<br /><br /> | ||
|
||
# RESO End User License Agreement (EULA) | ||
|
||
This End User License Agreement (the "EULA") is entered into by and between the Real Estate Standards Organization ("RESO") and the person or entity ("End User") that is downloading or otherwise obtaining the product associated with this EULA ("RESO Product"). This EULA governs End Users use of the RESO Product and End User agrees to the terms of this EULA by downloading or otherwise obtaining or using the RESO Product. | ||
<br /><br /> | ||
The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119](https://www.ietf.org/rfc/rfc2119.txt). | ||
|
||
# Table of Contents | ||
- [Summary of Changes](#summary-of-changes) | ||
- [Introduction](#introduction) | ||
- [Section 1: Field](#section-1-field) | ||
- [Section 2: Lookup](#section-2-lookup) | ||
- [Section 3: Examples](#section-3-examples) | ||
- [Section 4: Certification](#section-4-certification) | ||
- [Section 5: Contributors](#section-5-contributors) | ||
- [Section 6: References](#section-6-references) | ||
- [Section 7: License](#section-7-license) | ||
|
||
# Summary of Changes | ||
|
||
This specification extends the Data Dictionary Field and Lookup resource to convey information about new and deprecated fields and lookups. | ||
|
||
# Introduction | ||
|
||
Over time the fields and related lookup values in use by an MLS organization evolve and change. In the 2000's, the field **BusinessType** having a lookup value of **VideoStore** was applicable. In the 2020's, video stores have become an echo of the past. Our data in the MLS world though still contains historical listing data where that lookup choice is correct. In our systems today, we may not allow a new listing to use that lookup choice, but we want to inform the data consumers that it was a valid choice at one time and may appear in older data. | ||
|
||
Fields as well evolve over time. Whether it is a field that has been retired from use or a field that has been renamed to a Data Dictionary compliant name. It is useful for an MLS organization be able to convey to data consumers when these changes happen. This specification introduces additions to the ([Field](https://ddwiki.reso.org/display/DDW17/Field+Resource)) and ([Lookup](https://ddwiki.reso.org/display/DDW17/Lookup+Resource)) resources to allow this information to be conveyed. | ||
|
||
# Section 1: Field | ||
|
||
The Data Dictionary 1.7 specification defines a **Field** resource with the following fields: | ||
|
||
- DisplayName | ||
- FieldKey | ||
- FieldName | ||
- ModificationTimestamp | ||
- ResourceName | ||
|
||
The following fields are proposed as additions: | ||
|
||
- FieldStatus. This is a single value lookup field. The allowed values are **Obsolete**, **Deprecated**, **Active**, **Transition** | ||
- StatusDate. The date that the give **FieldStatus** value is effective. | ||
- ReplacedByFieldKey. References the field that replaced this field, if applicable. | ||
|
||
For the **FieldStatus** lookups, the following definitions apply: | ||
|
||
- Obsolete. A deprecated field indicates that the field is no longer supported. The field will NOT appear in listing data. A data consumer may have older data where this field is present, but requesting that field after the given **StatusDate** will result in an error. An older listing that once contained the given field will no longer contain that field after the **StatusDate** has past. | ||
- Deprecated. This indicates the field is present and may be present in data but that listings after the **StatusDate** will no longer have a value for this field. Listings created prior to the **StatusDate** may have this field with a value. | ||
- Active. An active field is the default case. The field may be present in all listing data. The **StatusDate** may be null when a field is active. If **StatusDate** has a value, it indicates the date on which the field first became available. | ||
- Transition. This value is used to indicate that the given field will have a change on the given **StatusDate**. This can be used to inform data consumers of a **new** field being added or of a field moving to **Deprecated** or **Obsolete** status. | ||
|
||
# Section 2: Lookup | ||
|
||
The Data Dictionary 1.7 specification defines a **Lookup** resource with the following fields: | ||
|
||
- LegacyODataValue | ||
- LookupKey | ||
- LookupName | ||
- LookupValue | ||
- ModificationTimestamp | ||
- StandardLookupValue | ||
|
||
The following fields are proposed as additions: | ||
|
||
-- LookupStatus. This is a single value lookup field. The allowed values are **Obsolete**, **Deprecated**, **Active**, **Transition** | ||
- StatusDate. The date that the give **FieldStatus** value is effective. | ||
- ReplacedByLookupKey. References the lookup that replaced this lookup, if applicable. | ||
|
||
- Obsolete. A deprecated lookup indicates that the lookup value is no longer supported. The lookup value will NOT appear in listing data. A data consumer may have older data where this lookup value is present. An older listing that once contained the given lookup value will no longer contain that value after the **StatusDate** has past. | ||
- Deprecated. This indicates the lookup value is present and may be present in data but that listings after the **StatusDate** will no longer have this lookup value for the field(s) that use the lookup. Listings created prior to the **StatusDate** may have a field with the given lookup value. | ||
- Active. An active lookup is the default case. The lookup may be present in all listing data. The **StatusDate** may be null when a lookup is active. If **StatusDate** has a value, it indicates the date on which the lookup first became available. | ||
- Transition. This value is used to indicate that the given lookup will have a change on the given **StatusDate**. This can be used to inform data consumers of a **new** lookup being added or of a lookup moving to **Deprecated** or **Obsolete** status. | ||
|
||
# Section 3: Examples | ||
|
||
## Field | ||
|
||
#### Example 1 | ||
Given the following field definition: | ||
|
||
- DisplayName -- Distance To Volcano | ||
- FieldKey -- DistanceToVolcano | ||
- FieldName -- DistanceToVolcano | ||
- ModificationTimestamp -- 2023-09-30T21:18:00Z | ||
- ResourceName -- Property | ||
- FieldStatus -- Transition | ||
- StatusDate -- 2023-10-15 | ||
- ReplacedByFieldKey -- (null) | ||
|
||
If today's date is 2023-10-07 a listing with an **OriginalEntryTimestamp** of 2023-08-15T12:12:12Z MUST not have the field **DistanceToVolcano** present in the payload. | ||
|
||
If today's date is 2023-10-25 a listing with an **OriginalEntryTimestamp** of 2023-08-15 MAY have the field **DistanceToVolcano** present and the field MAY have a value in the payload. | ||
|
||
Please note that the field data for **DistanceToVolcano** SHOULD have been updated on 2023-10-15 to have a FieldStatus value of **Active**. This indicates that a new field was introduced to the system and is now in use. | ||
|
||
#### Example 2 | ||
Given the following field definition: | ||
|
||
- DisplayName -- Distance To Video Store | ||
- FieldKey -- DistanceToVideoStore | ||
- FieldName -- DistanceToVideoStore | ||
- ModificationTimestamp -- 2023-09-30T21:18:00Z | ||
- ResourceName -- Property | ||
- FieldStatus -- Deprecated | ||
- StatusDate -- 2023-10-15 | ||
- ReplacedByFieldKey -- (null) | ||
|
||
If today's date is 2023-10-07 a listing with an **OriginalEntryTimestamp** of 2023-07-30T12:30:30Z MAY have the field **DistanceToVideoStore** present and it MAY have a value. | ||
|
||
If today's date is 2023-11-09 a listing with an **OriginalEntryTimestamp** of 2023-10-29T12:30:15Z MAY have the field **DistanceToVideoStore**, but the field MUST NOT have a value present. | ||
|
||
## Lookup | ||
|
||
#### Example 3 | ||
Given the field **BusinessType** and the following lookup definition: | ||
|
||
- LegacyODataValue -- (null) | ||
- LookupKey -- VideoStore | ||
- LookupName -- Video Rental Store | ||
- LookupValue -- VideoStore | ||
- ModificationTimestamp -- 2023-09-30T19:35:30Z | ||
- LookupStatus -- Deprecated | ||
- StatusDate -- 2023-09-30 | ||
- ReplaceByLookupKey -- (null) | ||
|
||
If today's date is 2023-09-15, a listing with an **OriginalEntryTimestamp** of 2023-09-01T10:30:15Z MAY have the lookup **VideoStore** for the field **BusinessType**. | ||
|
||
If today's date is 2023-10-01, a listing with an **OriginalEntryTimestamp** of 2023-10-01:17:30:30Z MUST NOT have the lookup **VideoStore** for the field **BusinessType**. | ||
|
||
#### Example 4 | ||
Given the field **BusinessType** and the following lookup definition: | ||
|
||
- LegacyODataValue -- (null) | ||
- LookupKey -- DiscoClub | ||
- LookupName -- Disco Club | ||
- LookupValue -- DiscoClub | ||
- ModificationTimestamp -- 2023-09-30T19:35:30Z | ||
- LookupStatus -- Obsolete | ||
- StatusDate -- 2023-09-30 | ||
- ReplaceByLookupKey -- NightClub | ||
|
||
If today's date is 2023-09-29, a listing with an **OriginalEntryTimestamp** of 2023-09-15T14:14:14Z MAY have the lookup **DiscoClub** for the field **BusinessType**. | ||
|
||
If today's date is 2023-09-30, a listing with an **OriginalEntryTimestamp** of 2023-09-15T14:14:14Z that previously had the lookup of **DiscoClub** for the field **BusinessType** MUST now have the lookup **NightClub** for the field **BusinessType**. This means the **Obsolete** lookup of **DiscoClub** has been replaced with the lookup **NightClub** for any listing that previously had **DiscoClub** specified. | ||
|
||
# Section 4: Certification | ||
|
||
## Field | ||
|
||
Certification MUST check the following: | ||
|
||
- A field with a **FieldStatus** of **Obsolete** MUST not appear in any payload/listing. | ||
- A field with a **FieldStatus** of **Deprecated** MUST not have a value in a listing with an **OriginalEntryTimestamp** after the **StatusDate**. | ||
|
||
## Lookup | ||
|
||
Certification MUST check the following: | ||
|
||
- A lookup with a **LookupStatus** of **Obsolete** MUST not appear in any payload/listing. | ||
- A lookup with a **LookupStatus** of **Deprecated** MUST not appear in a listing with an **OriginalEntryTimestamp** after the **StatusDate**. | ||
|
||
# Section 5: Contributors | ||
|
||
This document was written by [Paul Hethmon](mailto:[email protected]). | ||
|
||
| Contributor | Company | | ||
| --- | --- | | ||
| Paul Hethmon | AMP Systems | | ||
|
||
# Section 6: References | ||
|
||
* https://ddwiki.reso.org/display/DDW17/Field+Resource | ||
* https://ddwiki.reso.org/display/DDW17/Lookup+Resource | ||
|
||
# Section 7: License | ||
|
||
This document is covered by the [RESO EULA](https://www.reso.org/eula/). | ||
|
||
Please [contact RESO](mailto:[email protected]) if you have any questions. |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One note here, usually Section 2 is for the spec, and 3 for Certification.
So your sections should be 2.1, 2.2, etc.