# 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


> 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