# Define Sources

Let's take a look at what sources we may use and create the configuration, credentials, and refreshes we need to use.

* Do we want to put connection strings in the <mark style="color:green;">**appsettings.json**</mark> and read them?
  * Create the json sections and keys
  * Optionally, <mark style="color:red;">**encrypt them**</mark>
* Do we want to implement a property loader?
  * See [Property Loaders](https://docs.perigee.software/perigee-and-beyond/extending-loaders)
* Do we communicate with anything on the web?
  * See [Restsharp Authenticators](https://docs.perigee.software/core-modules/credential-management/restsharp-authenticator) and [Credential Management](https://docs.perigee.software/core-modules/credential-management).&#x20;
  * Read all about the [HTTP(S) communication and extensions](https://docs.perigee.software/core-modules/integration-utilities/http-s-restsharp) here.
* Do we need to define additional services to dependency inject?
  * See the [Core Module: Application](https://docs.perigee.software/core-modules/perigeeapplication).
* Do we have any important information we need to keep in synchronized state like pull dates, offsets or delta keys?
  * Define a [Watermark ](https://docs.perigee.software/core-modules/integration-utilities/watermarking)for all basic data types
  * Or define a custom [FileSync ](https://docs.perigee.software/core-modules/file-system-storage/filesync-+-cache)to track a rich data object
  * Look at the [Limiter ](https://docs.perigee.software/core-modules/integration-utilities/limiter)for resource restricted calls.
* Do you need to have things run on a timer?
  * Check out the [CRON thread](https://docs.perigee.software/core-modules/event-sources/scheduled-logic/cron-thread).
  * Have a [scheduler ](https://docs.perigee.software/core-modules/event-sources/scheduled-logic/scheduler)pick up items from a remote source, like a database.
  * Have a network of [Sync Agent's](https://docs.perigee.software/core-modules/event-sources/scheduled-logic/sync-agent) communicating and performing refresh tasks.&#x20;
* Do you need to coordinate a list of steps and NEVER have a failure cause the process to break?
  * Create a [Transaction Coordinator](https://docs.perigee.software/core-modules/integration-utilities/transaction-coordinator).
* Talk with third parties:
  * [Salesforce](https://docs.perigee.software/core-modules/event-sources/watchers/salesforce)
  * [Microsoft Graph](https://docs.perigee.software/core-modules/third-party/microsoft-graph)
  * [DataVerse](https://docs.perigee.software/examples-and-demos/graph-delegated-authorization-+-dataverse#for-dataverse)
  * [SmartSheets](https://docs.perigee.software/core-modules/third-party/smartsheets)
  * [Azure Service Bus](https://docs.perigee.software/examples-and-demos/azure-service-bus)
* Do you have any instances of:
  * Testing [Network Connectivity](https://docs.perigee.software/core-modules/utility-classes/network-utility)?
  * [Sorting dependencies](https://docs.perigee.software/core-modules/utility-classes/topological-sorting)?
  * [Working in Parallel](https://docs.perigee.software/core-modules/perigee-in-parallel)?&#x20;
  * Sending [notifications](https://docs.perigee.software/core-modules/alert-managers)?
  * Run logic through a [behavior tree](https://docs.perigee.software/core-modules/utility-classes/behavior-trees)?
  * Sort and [query hierarchical data](https://docs.perigee.software/core-modules/utility-classes/nested-sets)?
