This blog is usefull for those working on CRM and have been struggling to find out reasons why the correct data is not getting posted to ECC. Here are a few simple steps on how to debug CRM middleware. Its difficult only till you read this document. I am taking an example of a Sales Document posting to ECC. You can use the same technique to debug the middleware for other documents getting posted to ECC. Here we go.... *Step1.* Ensure subscription set-up in SMOEAC. Need to ensure that subscription Business Transaction message is created and assigned to R/3 site!file:///C:/Documents%20and%20Settings/AGGARWL/My%20Documents/image%201.bmp|height=1|alt=Step 1|align=baseline|width=1|src=file:///C:/Documents%20and%20Settings/AGGARWL/My%20Documents/image%201.bmp|border=0! *Step2.* *Step 3* Trigger change or create new sales document in CRM. If queue in Unregistered this will place an entry in SMQ2 for that order e.g. R3AUORDER_1000000640 in this case, with the transaction number just created / changed." *Step 4* View sales document change in CRM outbound queue SMQ1 " *Step5* Click on entry with display entry in queue with STATUS ready " *Step6* To enable debug, double click on queue name field. " Select the queue entry and hit the icon Debug LUW this will take into debug mode *Step7* This will enable you to debug outbound sales documents ** Continue with F8. ** In this module, the filtering and mapping and the call to the R/3 system (BAPI_SALESDOCU_PROXY_UPLOAD) occurs. ** The call to the R/3 system is performed via module BAPI_SALESDOCU_PROXY_UPLOAD. You can call this module in two different modes: Asynchronous (that is, in the background, which is disadvantageous for debugging), or synchronous (that is, directly). The second method is appropriate for debugging directly to the R/3 system (without a queue). For this purpose, parameter GV_SYNCHRONOUS_CALL must be set to 'X' (preferably immediately before the call of BAPI_SALESDOCU_PROXY_UPLOAD). ** If you use the synchronous method, you can select setting 'In background task: Do not process' in the debugger. In this case, the document should stop in the queue. ** Then it is possible to set a breakpoint in certain function modules, for example: CRMC_OUTPUT_BASIS_MAP_SAVE or MAP_BAPIMTCS_CUSTOMIZING… Breakpoints can also be set at the particular statement like MESSAGE or RAISE or COMMIT. *Step8* After finishing debugging *Register Queue* again When finished debugging remember to register the CRM outbound queue again using SMQS in CRM. Highlight relevant destination and select registration