The BA Participant interface defines an unknown() method with the following description
If the participant enquires as to the status of the transaction it was
registered with and that transaction is no longer available (has rolled
back) then this operation will be invoked by the coordination service.
Status enquiries only occur between participant completion and subsequent close or compensate. If the response to this enquiry is an InvalidState fault then this indicates that the coordinator host has lost all record of the transaction because of a crash, in which case the correct response is to call the participant's compensate() method (this is a correct step in the presumed abort protocol). InvalidState can only be sent if the participant does not exist.
If GetStatus results in a Status message notifying an unexpected coordinator state (i.e. neither Active nor Compensating nor Compensated) or leads to some other soap fault being sent in reply then the correct response is to call the participant error() method since this represents an unrecoverable protocol error. This type of error is orthogonal to the recovery status of the participant or the coordinator since it can happen before or after a crash on either side (or both sides) and, where there has been a crash, before or after the participant's status is re-established. Consequently, there is no circumstance in which it would be appropriate for unknown() to be called in place of error().