En un formulario InfoPath tenemos 2 combos (dropdownlist), y queremos que dependiendo de lo que se seleccione en el primero aparezcan unas opciones u otras en el segundo.
Desarrollar en InfoPath generalmente no tiene mucha complejidad, pero en este caso se complica un poco, ya que hay que usar archivos de recursos, o referencias a listas de SharePoint como origen de datos de los combos, en este post de Mario Cortes comenta todas las opciones de orígenes de datos que ofrece InfoPath.
Básicamente cuando como origen de datos de un combo seleccionamos un fichero xml, previamente añadido como conexión, especificamos un XPath de los valores relativos que se mostrarán en el combo.
En este caso yo voy a usar archivos xml donde especificaré la relación de valores entre la selección del primer combo y la del segundo.
Para esto necesitamos un par de ficheros xml, en el primero que contendrá toda la información:

Y el segundo en el que únicamente necesitaríamos la estructura xml para vincularla como origen del datos del segundo combo, en el caso de la imagen a continuación si que tiene datos pero bastaría con que incluyese el nodo padre(departamento) y dos de los nodos hijos(subdepartamento), necesitamos que haya 2 nodos hijos para que sea seleccionable el XPath asociado:

Ambos xml los agrego como conexiones de datos, para recibir datos, de tipo xml y los incrusto en el formulario y que recuperen los datos cada vez que se carga el formulario.
Después configuro los combos para que su origen del datos sean estos archivos xml:

Y ahora solo falta agregar un poco de lógica para modificar el contenido del segundo xml dependiendo de lo que se ha seleccionado en el primero.
Básicamente añado un código para el evento "changed" del primer combo, capturo el valor seleccionado e inserto en el xml de origen del segundo combo los valores asociados:
Y ahora ya tengo los dos combos encadenados:

Ahora voy a incluir un poco de lógica mas, para que cuando en el segundo combo no haya elementos que cargar se deshabilite, para esto en primer lugar definimos una nueva propiedad de tipo texto, que inicialmente contendrá un 1.

En el formato condicional del segundo combo añadimos una regla por la cual se ocultará este campo cuando nuestra nueva propiedad contenga un 1.

Y mediante código establecemos el valor teniendo en cuenta el valor seleccionado para el primer combo:
Ahora cuando no tenga valores, el segundo combo se mostrará deshabilitado:

Y cuando tenga valores pues los mostrará:

Por supuesto este método es compatible con SharePoint Forms Service.