I'm working in a big project, where we're creating a standard software A for several customers and in parallel extending that software for one customer (software B). There are several Scrum teams. The teams, which work on A, are geographically and contractually separated from B teams.
Often we need to have something fixed or changed in A to complete our user stories in B. That causes a lot of friction, because we often cannot complete our planned tasks. We try to analyse user stories to avoid in-sprint dependencies on A, but when we discover a bug in A, we have to wait for the next sprint to get a fix.
Another problem is that we had to chose between long implementation cycles (sprint of A + sprint of B) or integrating mid-sprint deliverables with incomplete or buggy features. So far we've chosen to use mid-sprint deliverables, because we can continue our tasks faster.
Now we're rethinking our approach: How should we setup Scrum in teams, which depend on some other team's work? How can we reduce canceled tasks in mid-sprint?