- Is genesis-global/salesforce-bundle a Laravel package?
- Strictly speaking, it is a Symfony bundle, not a Laravel package. Its Bundle registration, DependencyInjection extension, Configuration tree, and tagged services are all Symfony-specific plumbing that Laravel's container does not read. For a Laravel app, only the underlying Salesforce REST client layer (HTTP, OAuth, SOQL, CRUD) is reusable. You would strip the Symfony wrapper and wire the client into a hand-written service provider.
- How do I install genesis-global/salesforce-bundle in a Laravel project?
- You can try composer require genesis-global/salesforce-bundle, but expect constraint conflicts against a modern Laravel baseline because the last release dates from November 2020. Laravel 10, 11, and 12 on PHP 8.2 or 8.3 will likely collide with the package's symfony/* and php version pins. The practical route is to fork the repository under your own organization, relax the platform requirements, and depend on the fork. Plan for a fork rather than a clean composer require.
- Which Salesforce API version does this package use, and can I override it?
- Given the 2020 release date, the hardcoded API version is likely somewhere in the v45 to v50 range, and it is probably a constant rather than a config value. Salesforce retires API versions on a roughly three-year rolling window, and retired versions return 400 INVALID_VERSION errors. That makes an upgrade non-optional, so bump the version to a currently supported one such as v62 or later. While forking, move it into configuration instead of a class constant.
- How do I run a SOQL query with genesis-global/salesforce-bundle?
- The client exposes a query method that accepts a SOQL string and returns the decoded Salesforce response, including the records array and pagination fields like nextRecordsUrl. You pass standard SOQL such as SELECT Id, Name FROM Account WHERE CreatedDate > LAST_N_DAYS:7. Because the Symfony service wiring is unusable in Laravel, call the client from your own injected service or facade. Handle pagination yourself if you expect result sets larger than a single Salesforce batch.
- Does it support OAuth 2.0 JWT bearer flow and refresh token rotation?
- Most likely not, or only partially. Packages from this era typically implement the username/password OAuth flow, which Salesforce is actively deprecating for integrations. JWT bearer flow and refresh-token rotation need to be verified by reading the authentication class directly rather than trusting the README. If they are missing, you will be writing and testing that auth layer yourself, which is one of the main reasons to consider a different client.
- Does genesis-global/salesforce-bundle support Bulk API 2.0, Composite, or Platform Events?
- Expect only basic CRUD and SOQL, since that is what the package description advertises. Bulk API 2.0, Composite requests, Change Data Capture, Platform Events, and Streaming API are probably absent. Those are the APIs that matter at volume, so if your job moves hundreds of thousands of records rather than hundreds, you are writing them yourself. Determine your volume and object mix before committing to this package.
- Is genesis-global/salesforce-bundle still maintained?
- No. The last release was 2020-11-25, it has roughly eleven stars, and it has zero dependents, so there is no downstream validation, issue triage, or security patching. The MIT license makes it fork-friendly, and the surface area is small enough to own. Treat it as source code you adopt rather than a dependency you track.
- Can I install it with --ignore-platform-reqs?
- You can, but it is not recommended. Forcing installation past Composer's platform checks only suppresses the conflict at install time; you will still hit runtime deprecations and possibly fatal errors on PHP 8.2 or 8.3. Forking and relaxing the constraints properly is safer and takes about the same effort. It also leaves you with a reproducible build instead of a fragile one.
- What are the best alternatives for Salesforce integration in Laravel?
- Common options include omniphx/forrest, which is Laravel-native and comparable in maturity, and phpforce/salesforce-rest-api for a framework-agnostic client. For many teams the honest answer is a small Saloon or Guzzle client with contract tests against a Salesforce sandbox. That approach gives you full control over the API version, auth flow, and Bulk API support. Weigh it against your volume before adopting an abandoned package.
- How do I wire the Salesforce client into a Laravel service provider after forking?
- Delete the DependencyInjection, Resources/config, and Bundle classes, keeping the client, auth, and query builder layers. Add a config/salesforce.php file with credentials and the API version, then bind the client as a singleton in a SalesforceServiceProvider using those config values. Inject it into the services that sync records. This takes roughly one to three days of engineering plus a sandbox proof of concept.