<?xml version="1.0" encoding="UTF-8"?><metadata xml:lang="en">
<Esri>
<CreaDate>20260910</CreaDate>
<CreaTime>10243100</CreaTime>
<ArcGISFormat>1.0</ArcGISFormat>
<SyncOnce>TRUE</SyncOnce>
<ModDate>20260914</ModDate>
<ModTime>093156</ModTime>
<scaleRange>
<minScale>150000000</minScale>
<maxScale>5000</maxScale>
</scaleRange>
<ArcGISProfile>ItemDescription</ArcGISProfile>
</Esri>
<tool displayname="NRIP Controller" name="NripController" toolboxalias="NRIP_BOT_GP">
<arcToolboxHelpPath>withheld</arcToolboxHelpPath>
<parameters/>
<summary>&lt;DIV STYLE="text-align:Left;"&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;P&gt;&lt;SPAN&gt;NRIPController&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Version: 1.0.1&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;NRIPController executes the NRIP data refresh workflow by orchestrating a series of automated extraction, validation, transformation, and loading (ETL) processes. The tool invokes an external Salesforce extraction console application to retrieve the latest NRIP submission data, validates and stages the resulting data extract, performs GIS data normalization, applies metadata from template XML files, and refreshes the NRIP geodatabase snapshot used by downstream applications and services.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;The controller manages workflow execution, error handling, and process coordination between the Salesforce extraction component and ArcGIS geoprocessing tools. Execution details and processing results are recorded through system logs to support monitoring, troubleshooting, and operational auditing.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;The NRIPController workflow is implemented through supporting Python package modules:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;controller.py&lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;&lt;SPAN&gt;Coordinates the end-to-end NRIP refresh process&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;&lt;SPAN&gt;Launches the Salesforce extraction console application&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;&lt;SPAN&gt;Validates and stages the generated data extract&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;&lt;SPAN&gt;Creates required workspace resources&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;&lt;SPAN&gt;Invokes the GIS normalization process&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;&lt;SPAN&gt;Loads metadata templates for normalized geodatabase and datasets&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;&lt;SPAN&gt;Handles workflow status reporting, error handling, and logging&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;SPAN&gt;data_normalization.py&lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;&lt;SPAN&gt;Transforms the staged Salesforce extract into the NRIP normalized GIS data model&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;&lt;SPAN&gt;Creates and refreshes the following datasets:&lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;&lt;SPAN&gt;SUBMISSIONS&lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;&lt;SPAN&gt;Non-spatial table&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;&lt;SPAN&gt;One record per unique Submission_Record_ID&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;&lt;SPAN&gt;SITES&lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;&lt;SPAN&gt;Spatial point feature class&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;&lt;SPAN&gt;One record per unique Site_Record_ID&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;&lt;SPAN&gt;Geometry stored in Web Mercator&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;&lt;SPAN&gt;SUBMISSION_SITE&lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;&lt;SPAN&gt;Junction table&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;&lt;SPAN&gt;Links submissions to sites&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;&lt;SPAN&gt;Supports many-to-many relationships&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;SPAN&gt;metadata.py&lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;&lt;SPAN&gt;Since NRIP_Data.gdb is re-created during each execution of NRIPController, metadata must be reapplied.&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;&lt;SPAN&gt;Grabs XML templates from reference directory and applies matching metadata to dataset&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;</summary>
<usage>&lt;DIV STYLE="text-align:Left;"&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;P&gt;&lt;SPAN&gt;Run this tool to refresh the NRIP_BOT GIS datasets (i.e. NRIP_Data.gd) from the latest Salesforce source data. The tool is executed on a scheduled nightly basis, or on-demand through the Geocortex viewer application (NRIP Back Office Tool).&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;</usage>
</tool>
<dataIdInfo>
<idCitation>
<resTitle>NRIP Controller</resTitle>
</idCitation>
<searchKeys>
<keyword>NRIP</keyword>
<keyword>NRIP_BOT</keyword>
<keyword>Back Office Tool</keyword>
<keyword>Salesforce</keyword>
<keyword>ETL</keyword>
</searchKeys>
</dataIdInfo>
<distInfo>
<distributor>
<distorFormat>
<formatName>ArcToolbox Tool</formatName>
</distorFormat>
</distributor>
</distInfo>
<mdHrLv>
<ScopeCd value="005"/>
</mdHrLv>
<mdDateSt Sync="TRUE">20260910</mdDateSt>
</metadata>
