Here's the behavior for sending the Harvester back to the refinery:
<ReturnToDockSpecialPower
id="ModuleTag_ReturnToDock"
SpecialPowerTemplate="SpecialPower_ReturnToDock" />
In the GameObject section of the GDIRefinery.xml you see:
KindOf="STRUCTURE SELECTABLE IMMOBILE CAN_CAST_REFLECTIONS SUPPLY_GATHERING_CENTER FS_MONEY_STORAGE NOT_AUTOACQUIRABLE AUTO_ACQUIRABLE_BY_AI COVER"
and in the behaviors section:
CODE
<DistributedMoney
id="ModuleTag_DistributedMoney"
Capacity="2000"
OnDieSpawnPercentage="25" />
<SupplyCenterCreate />
<SupplyCenterDockUpdate
id="SupplyCenter"
NumberApproachPositions="-1"
AllowsPassthrough="true"
GoToRallyPointAfterDock="true"
ShouldDockInReverse="true"
MinDockTime="9s"
ObjectsInLineWeight="9s"
DistributedDeposit="true">
<ForVoiceRetreatThisIsASafeHarborToObjectFilter
Include="HARVESTER" />
</SupplyCenterDockUpdate>