Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

On this page we, (Paul, Val, Sam) discuss the form of the address change messages.

See example 10 for the The latest proposed revision is "example 11".
This is mostly implemented with a few minor changes proposed (follow links - see TODOs).
Here is a sample xml file.

questions/answers

Q1
From DBI's perspective, we are either going to be inserting addresses or updating addresses with your data. (Addresses are never deleted but retired on our end and yours I believe). How will we tell the difference if it is an address update or a brand new address? via an XML tag?

...

A simple example to get us started.
This example is MAD centric.
I suspect that we'll end up with something a alot different at the end of this discussion.
Here is a single family dwelling with one owner:

Code Block
     <address>
        <number>14</number>
        <street>MAPLE ST</street>
        <unit>
            <base>true</base>
            <number></number>
            <disposition>official</disposition>
            <create_tms>2010-07-02 08:18:50.937000</create_tms>
            <retire_tms>None</retire_tms>
            <apns>
                <apn>1234001</apn>
            </apns>
            <action>insert</action>
        </unit>
    </address>

The "action" tag domain is

Code Block
     insert
    update
    retire

I think this addresses question 1 above.

The "base" tag domain is:

Code Block
     true
    false

This is a MAD artifact - DBI probably won't want it.
But let me explain the purpose.
A MAD "address" is represented using the concept of a base address and a unit address.
A base address always has one corresponding unit address.
There may be additional unit addresses or not.
If the base tag is marked true, then this unit information is directly associated with the base address.
If the base tag is marked false, then this unit information is not directly associated with the base address.

...

Now in the case of an apartment bldg, say
14 MAPLE ST,
apartments a & b
MAD represents the world this way:

Code Block
     <address>
        <number>14</number>
        <street>MAPLE ST</street>
        <unit>
            <base>true</base>
            <number>100</number>
            ...
            <apns>
                <apn>1234001</apn>
            </apns>
            <action>insert</action>
        </unit>
        <unit>
            <base>false</base>
            <number>a</number>
            ...
            <apns></apns>
            <action>insert</action>
        </unit>
        <unit>
            <base>false</base>
            <number>b</number>
            ...
            <apns></apns>
            <action>insert</action>
        </unit>
    </address>

...

What I think we want an instead of the example 2 (apt building) is something like this:

message 1

Code Block

<xml>
    <address_change>
        <key>12873</key>
        <action>insert</action>
        <address>
            <number>14</number>
            <street>MAPLE ST</street>
            <unit_number>100</unit_number>
            <block>1234</block>
            <lot>001</lot>
            <apn>1234001</apn>
        </address>
    </address_change>
</xml>

...

And reworking example 1 (single family) to fit the model shown in example 3, we have this:

Code Block

<xml>
    <address_change>
        <key>12873</key>
        <action>insert</action>
        <address>
            <number>14</number>
            <street>MAPLE ST</street>
            <unit_number></unit_number>
            ...
            <block>1234</block>
            <lot>001</lot>
            <apn>1234001</apn>
        </address>
    </address_change>
</xml>

...

Let's move on to a time share, which can be seen at 2655 Hyde St.
In a time share we have a single unit with multiple owners.

message 1

Code Block

<xml>
    <address_change>
        <key>12873</key>
        <action>insert</action>
        <address>
            <number>2655</number>
            <street>HYDE ST</street>
            <unit_number>1</unit_number>
            <disposition>provisional</disposition>
            <create_tms>2010-07-02 14:11:22.843000</create_tms>
            <retire_tms>None</retire_tms>
            <block>0026T</block>
            <lot>065A</lot>
            <apn>0026T065A</apn>
        </address>
    </address_change>
</xml>

message 2

Code Block

<xml>
    <address_change>
        <key>12873</key>
        <action>insert</action>
        <address>
            <number>2655</number>
            <street>HYDE ST</street>
            <unit_number>1</unit_number>
            <disposition>provisional</disposition>
            <create_tms>2010-07-02 14:11:22.843000</create_tms>
            <retire_tms>None</retire_tms>
            <block>0026T</block>
            <lot>066A</lot>
            <apn>0026T066A</apn>
        </address>
    </address_change>
</xml>

...

message 1 (base unit or common area, APN is assigned)

Code Block

<xml>
    <address_change>
        <key>12873</key>
        <action>insert</action>
        <address>
            <number>100</number>
            <street>MAIN ST</street>
            <unit_number></unit_number>
            <disposition>provisional</disposition>
            <create_tms>2010-07-02 14:11:22.843000</create_tms>
            <retire_tms>None</retire_tms>
            <block>1234</block>
            <lot>001</lot>
            <apn>1234001</apn>
        </address>
    </address_change>
</xml>

message 2 (condo unit)

Code Block

<xml>
    <address_change>
        <key>12873</key>
        <action>insert</action>
        <address>
            <number>100</number>
            <street>MAIN ST</street>
            <unit_number>1</unit_number>
            <disposition>provisional</disposition>
            <create_tms>2010-07-02 14:11:22.843000</create_tms>
            <retire_tms>None</retire_tms>
            <block>1234</block>
            <lot>002</lot>
            <apn>1234002</apn>
        </address>
    </address_change>
</xml>

message 3 (condo unit)

Code Block

<xml>
    <address_change>
        <key>12873</key>
        <action>insert</action>
        <address>
            <number>100</number>
            <street>MAIN ST</street>
            <unit_number>2</unit_number>
            <disposition>provisional</disposition>
            <create_tms>2010-07-02 14:11:22.843000</create_tms>
            <retire_tms>None</retire_tms>
            <block>1234</block>
            <lot>003</lot>
            <apn>1234003</apn>
        </address>
    </address_change>
<xml>

Example 7
Anchor
example7
example7

Code Block
     <address>
        <key>419692</key>
        <base_number_prefix></base_number_prefix>
        <base_number>1</base_number>
        <base_number_suffix></base_number_suffix>
        <street_name>S VAN NESS</street_name>
        <street_name_suffix>AVE</street_name_suffix>
        <unit_number_prefix></unit_number_prefix>
        <unit_number>600</unit_number>
        <unit_number_suffix></unit_number_suffix>
        <create_tms>2010-08-03 12:05:54.578000</create_tms>
        <retire_tms>2010-08-03 12:38:33</retire_tms>
        <disposition>provisional</disposition>
        <mailing>True</mailing>
        <longitude>-122.418862841</longitude>
        <latitude>37.7747051425</latitude>
        <change_tms>2010-08-03 14:38:33.467492</change_tms>
        <action>retire</action>
        <block>3506</block>
        <lot>001</lot>
        <apn>3506001</apn>
    </address>

Example 8
Anchor
example8
example8

Code Block

<addresses>
    <address>
        <key>419623</key>
        <base_number_prefix></base_number_prefix>
        <base_number>2655</base_number>
        <base_number_suffix></base_number_suffix>
        <street_name>HYDE</street_name>
        <street_name_suffix>ST</street_name_suffix>
        <unit_number_prefix></unit_number_prefix>
        <unit_number>308</unit_number>
        <unit_number_suffix></unit_number_suffix>
        <disposition>provisional</disposition>
        <create_tms>2010-07-02 14:11:22.843000</create_tms>
        <retire_tms></retire_tms>
        <block>0026</block>
        <lot>028</lot>
        <apn>0026028</apn>
    </address>
    ...
</addresses>

...

This separates the "history" information,

Code Block

<addressChangeNotification>
    <address>
        <key>419709</key>
        <base_number_prefix></base_number_prefix>
        <base_number>1</base_number>
        <base_number_suffix></base_number_suffix>
        <longitude>-122.418876252</longitude>
        <latitude>37.774694542</latitude>
        <street_name>S VAN NESS</street_name>
        <street_name_suffix>AVE</street_name_suffix>
        <unit_number_prefix>XXX</unit_number_prefix>
        <unit_number>300</unit_number>
        <unit_number_suffix>YYY</unit_number_suffix>
        <create_tms>2010-08-13 12:15:43.828000</create_tms>
        <retire_tms>2010-08-13 18:41:16.149255</retire_tms>
        <disposition>provisional</disposition>
        <mailing>True</mailing>
        <block>3506</block>
        <lot>001</lot>
        <apn>3506001</apn>
    </address>
    <timestamp>2010-08-13 18:41:16.149255</timestamp>
    <action>retire</action>
</addressChangeNotification>

Example 10
Anchor

...

example10xml

...

example10xml

DBI may use different street names and street suffixes.
This version accommodates these variations.

Code Block

<addressChangeNotification>
    <address>
        <key>419709</key>
        <base_number_prefix></base_number_prefix>
        <base_number>1</base_number>
        <base_number_suffix></base_number_suffix>
        <jurisdiction>PRESIDIO</jurisdiction>
        <longitude>-122.418876252</longitude>
        <latitude>37.774694542</latitude>
        <street_name>SOUTH VAN NESS</street_name>
        <street_name_suffix>
            <abbreviated>AVE</abbreviated>
            <unabbreviated>AVENUE</unabbreviated>
        </street_name_suffix>
        <unit_number_prefix>XXX</unit_number_prefix>
        <unit_number>300</unit_number>
        <unit_number_suffix>YYY</unit_number_suffix>
        <create_tms>2010-08-13 12:15:43.828000</create_tms>
        <retire_tms>2010-08-13 18:41:16.149255</retire_tms>
        <disposition>provisional</disposition>
        <mailing>True</mailing>
        <block>3506</block>
        <lot>001</lot>
        <apn>3506001</apn>
    </address>
    <timestamp>2010-08-13 18:41:16.149255</timestamp>
    <action>retire</action>
</addressChangeNotification>

Here is the mapping between AVS and EAS.  To help clarify the purpose of each field, I use the FGDC Street Address Data Standard. Here is the latest and most complete reference or you can just take a look at draft 2 which is usually adequate. By the way, I used a real editor to edit this table.

...

EAS Field

...

XML Field

...

FGDC Field

...

AVS Field

...

Example

...

Comment

...

addresses.address_id int

...

key

...

na

...

 

...

 

...

 

...

address_base.base_address_prefix char(10)

...

base_number_prefix

...

address number prefix text

...

 

...

 

...

 

...

address_base.base_address_num int

...

base_number

...

address number int

...

AVS_ADDRESSES.STREET_NUMBER NUMBER(6)

...

 

...

 

...

address_base.base_address_suffix char(10)

...

base_number_suffix

...

address number suffix text

...

 

...

 

...

 

...

?

...

?

...

?

...

AVS_ADDRESSES.STREET_NUMBER_SFX VARCHAR2(1)

...

V, A, C, P

...

todo - how do we map this?

...

address_base.zone_id int

...

jurisdiction

...

community place name text

...

 

...

SFMAIN, TI, PRESIDIO

...

FGDC field is approx

...

address_base.geoemtry.longitude double

...

longitude

...

address longitude double

...

 

...

 

...

 

...

address_base.geoemtry.latitude double

...

latitude

...

address latitude double

...

 

...

 

...

 

...

address_base.street_segment.st_name char(29)

...

street_name

...

street name text

...

AVS_STREETS.STREET_NAME VARCHAR2(28)

...

 

...

todo - problem with field width

...

address_base.street_segment.st_type char(6)

...

street_name_suffix

...

street name post type text

...

AVS_STREET_SUFFIXES.STREET_SFX VARCHAR2(2)

...

 

...

data type mismatch is accomodated in xml

...

addresses.unit_num_prefix char(5)

...

unit_number_prefix

...

na

...

 

...

 

...

 

...

addresses.unit_num char(20)

...

unit_number

...

unit identifier text

...

AVS_ADDRESSES.UNIT NUMBER(6)

...

 

...

todo - is data type mismatch

...

addresses.unit_num_suffix char(10)

...

unit_number_suffix

...

na

...

AVS_ADDRESSES.UNIT_SFX VARCHAR2(10)

...

 

...

 

...

addresses.unit_type_id int

...

na

...

unit type text

...

na

...

suite, apartment

...

 

...

na

...

na

...

na

...

AVS_ADDRESSES.ADDRESS_TYPE VARCHAR2(10)

...

PRIMARY, ALTERNATE, ALIAS

...

 

...

addresses.create_tms datetime

...

create_tms

...

na

...

 

...

 

...

 

...

addresses.retire_tms datetime

...

retire_tms

...

na

...

AVS_ADDRESSES.END_DATE DATE

...

 

...

 

...

addresses.disposition_code int

...

disposition

...

address lifecycle status text

...

 

...

provisional, offical

...

FGDC field is approx

...

na

...

na

...

address official status text

...

AVS_ADDRESSES.VALID VARCHAR2(1)

...

 

...

EAS combines this with address life cycle status

...

addresses.mailable_flg boolean

...

mailing

...

na

...

 

...

 

...

 

...

parcel.block_num char(5)

...

block

...

na

...

AVS_STRUCTURES.BLOCK VARCHAR2(5)

...

 

...

 

...

parcel.lot_num char(5)

...

lot

...

na

...

AVS_STRUCTURES.LOT VARCHAR2(4)

...

 

...

todo - field with mismatch

...

parcel.blk_lot char(9)

...

apn

...

na

...

 

...

 

...

 

...

na

...

na

...

building identifer text

...

AVS_STRUCTURES.STRUCTURE_NUMBER VARCHAR2(2)

...

 

...

 

...

addresses_history.last_change_tms datetime

...

timestamp

...

na

...

 

...

 

...

 

...

addresses_history.history_action char(10)

...

action

...

na

...

 

...

 

...

 

...

addresses.unq_adds_id int

...

na

...

na

...

AVS_ADDRESSES.ADDRESS_KIND VARCHAR2(10)

...

DBI, ASSESSOR

...

 

...

 

...

 

...

 

...

 

...

 

...

Example 11
Anchor
example11xml
example11xml

The purpose of this version is to support the rework of the model precipitated by MAD-156.

Code Block
<?xml version="1.0" encoding="utf-8"?>
<addressChangeNotification>
    <base_address_part>
        <base_address>
            <base_address_id>483699</base_address_id>
            <base_number_prefix></base_number_prefix>
            <base_number>2569</base_number>
            <base_number_suffix></base_number_suffix>
            <jurisdiction>SF MAIN</jurisdiction>
            <longitude>-122.387658226</longitude>
            <latitude>37.756713011</latitude>
            <street_name>03RD</street_name>
            <street_name_suffix>
                <abbreviated>ST</abbreviated>
                <unabbreviated>STREET</unabbreviated>
            </street_name_suffix>
        </base_address>
        <action>insert</action>
    </base_address_part>
    <unit_address_part>
        <unit_address>
            <address_id>725579</address_id>
            <unit_number></unit_number>
            <base_unit_address_flag>True</base_unit_address_flag>
            <disposition>official</disposition>
            <mailing>False</mailing>
            <create_tms>10-16-2012 11:10:35</create_tms>
            <last_change_tms>10-16-2012 11:10:35</last_change_tms>
            <retire_tms></retire_tms>
        </unit_address>
        <action>insert</action>
    </unit_address_part>
    <address_parcel_link_part>
        <address_parcel_link>
            <id>563590</id>
            <create_tms>10-16-2012 11:10:35</create_tms>
            <last_change_tms>10-16-2012 11:10:35</last_change_tms>
            <retire_tms></retire_tms>
            <parcel>
                <block>4173</block>
                <lot>001</lot>
                <apn>4173001</apn>
            </parcel>
        </address_parcel_link>
        <action>insert</action>
    </address_parcel_link_part>
</addressChangeNotification>