code: private boolean prepareManagedSchema(String tableName,
        String entitySchemaString) {
      String entityName = getEntityNameFromSchemaString(entitySchemaString);
      AvroEntitySchema entitySchema = parser
          .parseEntitySchema(entitySchemaString);
      AvroKeySchema keySchema = parser.parseKeySchema(entitySchemaString);
      // Verify there are no ambiguities with the managed schemas
      if (schemaManager.hasManagedSchema(tableName, entityName)) {
        KeySchema currentKeySchema = schemaManager
            .getKeySchema(tableName, entityName);
        if (!keySchema.equals(currentKeySchema)) {
          String msg =
              "Migrating schema with different keys. Current: " + currentKeySchema
                  .getRawSchema() + " New: " + keySchema.getRawSchema();
          LOG.error(msg);
          throw new ValidationException(msg);
        }
        if (!schemaManager
            .hasSchemaVersion(tableName, entityName, entitySchema)) {
          LOG.info("Migrating Schema: (" + tableName + ", " + entityName + ")");
          schemaManager.migrateSchema(tableName, entityName, entitySchemaString);
        } else {
          LOG.info("Schema hasn't changed, not migrating: (" + tableName + ", "
              + entityName + ")");
          return false;
        }
      } else {
        LOG.info("Creating Schema: (" + tableName + ", " + entityName + ")");
        parser.parseEntitySchema(entitySchemaString).getColumnMappingDescriptor()
            .getRequiredColumnFamilies();
        schemaManager.createSchema(tableName, entityName, entitySchemaString,
            "org.kitesdk.data.hbase.avro.AvroKeyEntitySchemaParser",
            "org.kitesdk.data.hbase.avro.AvroKeySerDe",
            "org.kitesdk.data.hbase.avro.AvroEntitySerDe");
      }
      return true;
    }
docs: Prepare managed schema for this entitySchema