# Construct all-in-one step Call from Relaychain ###### tags: `External` we can use polkadot app to construct call with steps as following ## construct call in parachain first to prepare the encoded call data <img width="1418" alt="image" src="https://user-images.githubusercontent.com/4383920/159249725-1458b2f9-6b17-4400-b498-5a7b01e20dde.png"> > here we contribute to crowdloan with ParaId as 2000 and 1 KSM as contribution, copy call data `0x6908411f070010a5d4e8` here ## construct xcm call in relaychain with the prepared call data since for `salp.contribute` we need to transfer some ksm from relaychain first so we use `utility.batchAll` to wrap two seperate xcm calls - `xcmPallet.reserveTransferAssets` to transfer ksm from relaychain to bifrost ![](https://i.imgur.com/pKWMJIK.png) ![](https://i.imgur.com/6UiYWcV.png) > Tips: the transfer amount here is 1.02 KSM with 1 KSM as contribution and extra 0.02 as xcm fee - `xcmPallet.send` to invoke salp.contribute in bifrost with call data `0x6908411f070010a5d4e8` from previous step <img width="772" alt="image" src="https://user-images.githubusercontent.com/4383920/159249902-e77ecf63-6ffc-40c4-97c1-acfa4afebf92.png"> so the whole call data in relaychain to send is `0x5a0208630201000100451f01000101005c65c69528b7192b5bbbf15185fff5815d647e43b2ac93696ebfd4f3d7a05c260104000000000700d8bc7ced00000000630001000100451f02100004000100000700e40b540213000100000700e40b540200060102286bee286908411f070010a5d4e80d010004000101005c65c69528b7192b5bbbf15185fff5815d647e43b2ac93696ebfd4f3d7a05c26` we can decode it in Rococo network to see the detail