If it helps, as suggested, we currently do exactly this using the INBOUNDMAILIA2 stored procedure. This is the code we use:
#EXECUTE #SQLSERVER INBOUNDMAILIA2 STORED PROC
CREATE PROCEDURE INBOUNDMAILIA2
@EMAIL_ID VARCHAR(MAX) OUTPUT,
@SUBJECT VARCHAR(MAX) OUTPUT,
@BODY VARCHAR(MAX) OUTPUT,
@SYSTEM VARCHAR(255),
@ITEM_NO INT,
@TABLE_NAME VARCHAR(255),
@MODE VARCHAR(255),
@RETURN_VALUE VARCHAR(2) OUTPUT
AS
DECLARE @SUSPENDED CHAR(1)
BEGIN
IF (@MODE = 'PRE')
BEGIN
! /* We do some stuff here
END
ELSE IF (@MODE = 'CallCreate')
BEGIN
! /* We do some more stuff here
END
ELSE IF (@MODE = 'CallUpdate')
BEGIN
SELECT @SUSPENDED = SUSPENDED FROM CL_CALL_LOGGING WHERE CALL_NUMBER = @ITEM_NO
IF @SUSPENDED = 'Y'
UPDATE CL_CALL_LOGGING SET SUSPEND_TIME = GETDATE() WHERE CALL_NUMBER = @ITEM_NO
! /* We do more stuff here
END
END