This error occurs when you mix two columns with different collation in the same expression. Exactly what is going on in your case, I can't tell, since I don't have access to your database.
But a common situation is that stored procedures use temp tables. It works on the original server, because database and server collation are the same. But then the database is restored to a different instance with a different server collation. Because temp tables take their collation from the server, you get this error.
Here is a short example:
CREATE TABLE MyTable(a varchar(23) NOT NULL)
go
CREATE PROCEDURE MyProc AS
CREATE TABLE #temp (a varchar(23) COLLATE Maori_100_CS_AI NOT NULL)
SELECT *
FROM MyTable M
JOIN #temp t ON M.a = t.a
go
EXEC MyProc
go
DROP TABLE MyTable
DROP PROCEDURE MyProc
In this example, I explicitly set the collation in the temp table in order to provoke the error. I would guess in your case there is no COLLATE clause at all.
There is a way to avoid these conflicts. When you use the COLLATE clause, you can say database_default:
CREATE TABLE #temp (a varchar(23) COLLATE database_default NOT NULL)