South Africa had been scheduled to play three Tests in Sri Lanka in July, but one of those Tests has been traded for a five-match ODI series and a T20I.

First Test: July 12-16, Galle

Second Test: July 20-24, SSC

First ODI: July 29, Dambulla

Second ODI: August 1, Dambulla

Third ODI: August 5, Pallekele

Fourth ODI: August 8, Pallekele

Fifth ODI: August 12, Khettarama

Only T20: August 14, Khettarama

Earlier, too, South Africa Tests in Sri Lanka have been either postponed, or commuted to limited-overs matches, most notably in 2013. The reasons, then as now, are commercial: Sri Lanka Cricket loses money on all Test tours not involving India, England, Australia and Pakistan. As such, the board insists that three-Test series against most teams are unsustainable, particularly if unaccompanied by the more profitable ODI and T20I games.

The revised tour will begin with Tests in Galle and at the SSC - which had also been the venues of South Africa's most-recent Tests on the island - before moving to Dambulla, Pallekele and finally Khettarama for the limited-overs leg. The first Test begins on July 12, just under two weeks after Sri Lanka return from their three-Test tour of West Indies, and the one-off T20I is scheduled for August 14, four days before Sri Lanka Cricket's new franchise T20 tournament is set to begin.

For South Africa, the Sri Lanka Tests will be the first since their just-concluded series against Australia. They are the only non-Asian side to have defeated Sri Lanka in a Test series on the island over the past six years, having won their 2014 series 1-0.