What is the difference between using *-Data-* and *-Int-* classes ?
*-Int-* Classes have historically reflected data structures used by Connector Integrations, so that instances of data exchanged with Connectors can be staged on Pega's clipboard immediately at the point of the Connector call.
A SOAP Connector has a series of *-Int-* classes to model the XML schema of its Request and Response messages;
A REST Connector would similarly have a series of *-Int-* classes to model the JSON object model of its Request and Response messages.
They represent a record in the System of Record's Physical Data Model, at least to the extent that this is visible to Pega (via the System of Record's API).
*-Data-* Classes model the data structures used by your application's data model. These data structures may be application-specific, enterprise-reusable, or inherited from a component. Their design should prefer the needs of the application over how that data may physically be stored, and therefore represent the application's Logical Data Model.
Your case layer data model never references an *-Int-* class;
The data needs of your case/application determine the set of *-Data-* classes needed for it to function;
Where *-Data-* classes have instances stored in a System of Record (Pega or otherwise), Data Pages of the *-Data-* Object type take responsibility for sourcing those instances and presenting them to the case/application as instances of the *-Data-* classes (and now, with Savable Data Pages, writing them back).
Data Pages - in collaboration with the Request Data Transforms, Response Data Transforms and any necessary Activities they call - orchestrate the mapping between instances of *-Int-* classes retrieved from Systems of Record and corresponding instances of *-Data-* classes that are surfaced to the case/application.