When agents need to interact in order to solve some (possibly common) problem, resolving potential conflicts beforehand is often preferred to coordination during execution. Agents may lose some flexibility, but their course of action will be more predictable and often also more efficient, obtaining a socially optimal outcome instead of a local optimum. One way to resolve conflicts beforehand is to give extra constraints to each of the agents such that when they all meet these constraints, the resulting execution is conflictfree. A set of constraints that meets this requirement is called a decoupling of the original problem; if it also maximizes the social welfare (i.e. the sum of the valuations of all the agents), it is called optimal. Representing interesting multiagent problems as a constraint problem, we show that finding an optimal decoupling is at least as hard as finding a solution for the constraint problem. We therefore focus on a constraint problem that is efficiently solvabl...