OPL is a modeling language for mathematical programming and combinatorial optimization problems. It is the first modeling language to combine high-level algebraic and set notations from modeling languages with a rich constraint language and the ability to specify search procedures and strategies that are the essence of constraint programming. In addition, OPL models can be controlled and composed using OPLScript, a script language that simplifies the development of applications that solve sequences of models, several instances of the same model, or a combination of both as in column-generation applications. Finally, OPL models can be embedded in larger application through C++ code generation. This paper presents an overview of these functionalities on a scheduling application.