Poor cleaning and soap left in the dispenser will most likely be related to poor water circulation.
Water heating is also something to check.
A simple thing to try first is to place similar cups in the corners of the lower and upper racks. Let the dishwasher fill and wash a minute or two. Check the amount of water in each cup. There should be the same amount of water in each cup.
If you run a normal wash check the amount of water in the final rinse. Is it the same amount that was in the wash cycle?
At the end of a cycle the dishes should be almost too hot to pick up. If they are not then there may be a problem with the water heating.
Run a cycle and check water level in wash and rinse and check for water heating.
If all seems okay then next step would be to get inside the sump and check filters. The image below will show how to do this. Look for things that shouldn't be there like glass, bones or plastic.
I hate to put you to work but better you spending time checking these things than a technician who charges by the hour.
If you get stuck on something just reply with any additional details, problems or questions and I'll help.