Updating Teams on an Account through API

I have been trying to update the Team an Account is assigned to through the API but it doesn't seem to update. Has anyone tried to do this?

Parents Reply Children
  • Ok Thanks. I will have to dig deeper since the Team is not updating.

  • Jerry Clark,

    Sorry it took me so long to respond. Anyway, I am using a custom endpoint but below is the code that actually does the work. I believe I am missing something. Yes a Teams update works when I use the standard Accounts API PUT. This custom endpoint was built to be able to just mass upload thousands of records at once and handle checking if the record exists and just updating with new or changed information.

    private function _processEntry($module, $fieldsArray)
        {
            $Logger = Factory::getLogger('default');
            if (array_key_exists('id', $fieldsArray)) {
                $sugarBean = BeanFactory::retrieveBean($module, $fieldsArray['id']);
                if (is_null($sugarBean)) {
                    $Logger->debug('Record ' . $fieldsArray['id'] . ' does not exist');
                    $sugarBean = BeanFactory::newBean($module);
                    /**
                     * When creating a bean, you can specify a value in the id column as
                     * long as that value is unique.  During save, if the system finds an
                     * id, it assumes it is an update.  Setting new_with_id to true will
                     * make sure the system performs an insert instead of an update.
                     *
                     * @var BOOL -- default false
                     */
                    $sugarBean->new_with_id = true;
                }else{
                    $Logger->debug('Record ' . $fieldsArray['id'] . ' does exist');
                }
            } else {
                $sugarBean = BeanFactory::newBean($module);
            }
            if (is_null($sugarBean)) {
                return null;
            }
            foreach ($fieldsArray as $field => $data) {
                $sugarBean->$field = $data;
            }
            $sugarBean->save();
            return $sugarBean;
        }

  • For anyone interested, I have found the solution. See Manipulating Teams Programmatically - SugarCRM Support Site under the Replacing Teams. I had to also update my endpoint code to do this but here is what I got.

    private function _processEntry($module, $fieldsArray)
        {
            $Logger = Factory::getLogger('default');
            if (array_key_exists('id', $fieldsArray)) {
                $sugarBean = BeanFactory::retrieveBean($module, $fieldsArray['id']);
                if (is_null($sugarBean)) {
                    $Logger->debug('Record ' . $fieldsArray['id'] . ' does not exist');
                    $sugarBean = BeanFactory::newBean($module);
                    /**
                     * When creating a bean, you can specify a value in the id column as
                     * long as that value is unique.  During save, if the system finds an
                     * id, it assumes it is an update.  Setting new_with_id to true will
                     * make sure the system performs an insert instead of an update.
                     *
                     * @var BOOL -- default false
                     */
                    $sugarBean->new_with_id = true;
                }else{
                    $Logger->debug('Record ' . $fieldsArray['id'] . ' does exist');
                }
            } else {
                $sugarBean = BeanFactory::newBean($module);
            }
            if (is_null($sugarBean)) {
                return null;
            }
            foreach ($fieldsArray as $field => $data) {
                if (is_array($data)){
                    foreach ($data as $element => $value) {
                        if (is_array($value)) {
                            foreach ($value as $obj1 => $obj2) {
                                $Logger->debug('Field: ' . $obj1 . ' Data: ' . $obj2);
                                if ($field == 'team_name' && $obj1 == 'id') {
                                    $sugarBean->load_relationship('teams');
                                    $sugarBean->team_id = $obj2;
                                    $sugarBean->teams->replace(
                                        array(
                                            $obj2
                                        )
                                    );
                                }
                            }
                        } else {
                            if ($field == 'team_name' && $obj1 == 'id') {
                                $sugarBean->load_relationship('teams');
                                $sugarBean->team_id = $obj2;
                                $sugarBean->teams->replace(
                                    array(
                                        $obj2
                                    )
                                );
                            }
                        }
                    }
                } else {
                    $Logger->debug('Field: ' . $field . ' Data: ' . $data);
                    $sugarBean->$field = $data;
                }
            }
            $sugarBean->save();
            return $sugarBean;
        }