OfacSdn

This gem provides the OFAC sdn.xml as an easy to use Ruby hash. This allows you to conduct your own search criteria on your own system.

You can find the OFAC downloads here: OFAC Downloads

Installation

Add this line to your application's Gemfile:

gem 'ofac_sdn'

And then execute:

$ bundle

Or install it yourself as:

$ gem install ofac_sdn

Usage

You should run this in a worker since parsing an XML and converting it to a pretty Hash does take relatively long.

require 'ofac_sdn'

sdn_hash = OfacSdn::Read.call

Check to see if there are any new updates in the date or record count from your last database insertion to avoid pulling the data again:

date  = OfacSdn::Read.publish_date 
count = OfacSdn::Read.record_count
  • How often is the Specially Designated Nationals (SDN) List updated? OFAC FAQ

    • The SDN list is frequently updated. There is no predetermined timetable, but rather names are added or removed as necessary and appropriate.

Sample Conversion

Input: sdn.xml

<sdnList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/sdnList.xsd">
  <publshInformation>
    <Publish_Date>04/30/2018</Publish_Date>
    <Record_Count>6305</Record_Count>
  </publshInformation>
  <sdnEntry>
    <uid>36</uid>
    <lastName>AEROCARIBBEAN AIRLINES</lastName>
    <sdnType>Entity</sdnType>
    <programList>
      <program>CUBA</program>
    </programList>
    <akaList>
      <aka>
        <uid>12</uid>
        <type>a.k.a.</type>
        <category>strong</category>
        <lastName>AERO-CARIBBEAN</lastName>
      </aka>
    </akaList>
    <addressList>
      <address>
        <uid>25</uid>
        <city>Havana</city>
        <country>Cuba</country>
      </address>
    </addressList>
  </sdnEntry>
</sdnList>

Output: sdn_hash


{
  sdnEntry: [
    {<b>id: 36</b>, lastName: "AEROCARIBBEAN AIRLINES", sdnType: "Entity"}
  ],
  programList: [
    {program: "CUBA", <b>sdn_id: 36</b>}
  ],
  akaList: [
    {id: 12, <b>sdn_id: 36</b>, type: "a.k.a.", category: "strong", lastName: "AERO-CARIBBEAN"}
  ],
  addressList: [
    {id: 25, <b>sdn_id: 36</b>, city: "Havana", country: "Cuba"}
  ]
}

Note: Associations for the sdn_entry are done for you. id: 36 shows up as sdn_id: 36 on all related lists.

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake test to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/csebryam/ofac_sdn.

License

The gem is available as open source under the terms of the MIT License.